VX Agents

OpenAPI Marketplace · Productivity & Project Management

Asana Tasks & Projects

v1.0.0 · 14 endpoints · 0 connections · shared by vx.ai

Lets an agent work in Asana: find workspaces, projects, sections and people, search and read tasks with their comments, create and update tasks, move them between sections, and post comments. Curated from Asana's official OpenAPI specification.

Connect this API to an AI agent Browse all specs

What you can do with Asana Tasks & Projects via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /users/{user_gid} getUser Get a user (use `me` for the token's own user and workspaces)
GET /workspaces getWorkspaces List the workspaces you belong to
GET /workspaces/{workspace_gid}/users getUsersForWorkspace List the people in a workspace (for assigning)
GET /projects getProjects List projects in a workspace or team
GET /projects/{project_gid}/sections getSectionsForProject List the sections (columns) of a project
GET /tasks getTasks List tasks by project, section, or assignee in a workspace
POST /tasks createTask Create a task in a project or workspace
GET /projects/{project_gid}/tasks getTasksForProject List the tasks in a project
GET /workspaces/{workspace_gid}/tasks/search searchTasksInWorkspace Search tasks in a workspace by text, assignee, due date or status
GET /tasks/{task_gid} getTask Get one task with its details
PUT /tasks/{task_gid} updateTask Update a task (name, notes, assignee, due date, completed)
GET /tasks/{task_gid}/stories getTaskComments List a task's comments and activity
POST /tasks/{task_gid}/stories addTaskComment Post a comment on a task
POST /sections/{section_gid}/addTask addTaskToSection Move a task into a section of a project

Authentication

personalAccessToken

Bearer token — sent as Authorization: Bearer <token>

Send an Asana personal access token (or an OAuth access token) as Authorization: Bearer <token>.

How to get a credential

  1. Sign in to Asana and open the developer console: https://app.asana.com/0/my-apps.
  2. Under Personal access tokens, click Create new token.
  3. Name it (for example VX Agents), agree to the terms and click Create token.
  4. Copy the token (it is shown once). It acts as your user: the agent sees and changes everything you can. Use a dedicated member account to limit access.

Permissions used

Personal access tokens carry the user's full access. OAuth apps need these scopes:

Scope Operations
users:read, workspaces:read getUser, getWorkspaces, getUsersForWorkspace
projects:read getProjects, getSectionsForProject
tasks:read getTasks, getTasksForProject, searchTasksInWorkspace, getTask
stories:read getTaskComments
tasks:write createTask, updateTask, addTaskToSection
stories:write addTaskComment

Common errors

  • 401 Unauthorized: token missing, revoked or mistyped. Create a new token and include the Bearer prefix.
  • 403 Forbidden: the user cannot access that workspace, project or task, or task search needs a paid (Premium+) workspace.
  • 400 Bad Request: missing workspace or project when creating a task, or an invalid gid / date. Dates are YYYY-MM-DD.
  • 402 Payment Required: the feature (e.g. searchTasksInWorkspace) needs a paid plan.
  • 429 Too Many Requests: Asana rate limit (150 requests/minute on free plans); wait for Retry-After.

Store the token as a VX Agents credential (Bearer token) for this spec; never paste it into chat.

Usage guide

Setup

  • Credential: an Asana personal access token (app.asana.com/0/my-apps > Create new token) as a Bearer token. The agent acts as that user.
  • Worth pinning: workspace / workspace_gid (from getWorkspaces or getUser with user_gid=me) and the project you work in most.

Find work

  1. getUser (user_gid=me) for your gid and workspaces; getUsersForWorkspace to find someone's gid to assign to.
  2. getProjects (workspace, archived=false) then getSectionsForProject to see a board's columns.
  3. Tasks: getTasksForProject for one project, getTasks with assignee=me + workspace for "my tasks", or searchTasksInWorkspace (text, assignee.any, projects.any, due_on.before, completed=false; paid workspaces only).
  4. Add opt_fields=name,assignee.name,due_on,completed,memberships.section.name,permalink_url to get useful fields; by default only gid and name come back.
  5. getTask and getTaskComments (comments are stories with resource_subtype=comment_added) before acting.

Change tasks

  1. createTask with {"data": {"name": "...", "projects": ["<project_gid>"], "assignee": "<user_gid>", "due_on": "2026-10-20", "notes": "..."}} (give workspace instead of projects for a private task).
  2. updateTask with {"data": {...}}, e.g. completed: true, a new assignee or due_on.
  3. addTaskToSection with {"data": {"task": "<task_gid>"}} to move a task to another column.
  4. addTaskComment with {"data": {"text": "..."}} (or html_text wrapped in <body>).

Confirm before writing: show the user the new task, the changed fields, the target section, or the comment text, and wait for approval before createTask, updateTask, addTaskToSection or addTaskComment. Assignments and comments notify people.

Good to know

  • Every write body is wrapped in {"data": {...}}; ids are string gids.
  • due_on is YYYY-MM-DD; due_at is an ISO 8601 timestamp. Use one, not both.
  • Lists page with limit (max 100) and offset from next_page.offset.
  • completed_since=now on getTasksForProject returns only incomplete tasks.
  • 429 means rate limited: wait Retry-After seconds.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Asana Tasks & Projects” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs