How to integrate Asana MCP with Autogen

Connect Autogen to Asana MCP. Create a new project for q3 goals, add followers to the product launch task, and more using natural language, with authentication handled for you.

Asana logoAsana
Oauth2

Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.

247 Tools6 Triggers

Introduction

This guide walks you through connecting Asana to AutoGen using the Composio tool router. By the end, you'll have a working Asana agent that can create and assign tasks, organize projects and sections, track goals and portfolios, post status updates, and comment on tasks through natural language commands.

This guide will help you understand how to give your AutoGen agent real control over a Asana account through Composio's Asana MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

For exact tool slugs and parameter tables, see the tool catalog in the Composio docs.

Also integrate Asana with

TL;DR

Here's what you'll learn:
  • Get and set up your OpenAI and Composio API keys
  • Install the required dependencies for Autogen and Composio
  • Initialize Composio and create a Tool Router session for Asana
  • Wire that MCP URL into Autogen using McpWorkbench and StreamableHttpServerParams
  • Configure an Autogen AssistantAgent that can call Asana tools
  • Run a live chat loop where you ask the agent to perform Asana operations

What is AutoGen?

Autogen is a framework for building multi-agent conversational AI systems from Microsoft. It enables you to create agents that can collaborate, use tools, and maintain complex workflows.

Key features include:

  • Multi-Agent Systems: Build collaborative agent workflows
  • MCP Workbench: Native support for Model Context Protocol tools
  • Streaming HTTP: Connect to external services through streamable HTTP
  • AssistantAgent: Pre-built agent class for tool-using assistants

What is the Asana MCP server, and what's possible with it?

The Asana MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Asana account. It provides structured and secure access to your projects, tasks, teams, portfolios, and goals, so your agent can organize work, create projects, update statuses, manage collaborators, and handle task details on your behalf.

  • Project planning and organization: Have your agent create or duplicate projects, add sections, prepare project briefs, and remove projects that are no longer needed.
  • Task coordination: Let the agent create subtasks, duplicate tasks, assign tasks to projects or sections, add dependencies, apply tags, and delete outdated tasks.
  • Updates and collaboration: Direct your agent to post task comments, publish project status updates, and add followers so the right people stay informed.
  • Team and workspace management: Instruct your agent to add users to teams or workspaces and manage project membership for users and teams.
  • Portfolio, goal, and resource planning: Have your agent add projects to portfolios, connect supporting goals, create resource allocations, and review existing allocations.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Step by step08 STEPS
1

Prerequisites

You will need:

  • A Composio API key
  • An OpenAI API key (used by Autogen's OpenAIChatCompletionClient)
  • A Asana account you can connect to Composio
  • Some basic familiarity with Autogen and Python async
2

Getting API Keys for OpenAI and Composio

OpenAI API Key
  • Go to the OpenAI dashboard and create an API key. You'll need credits to use the models, or you can connect to another model provider.
  • Keep the API key safe.
Composio API Key
  • Log in to the Composio dashboard.
  • Navigate to your API settings and generate a new API key.
  • Store this key securely as you'll need it for authentication.
3

Install dependencies

bash
pip install composio python-dotenv
pip install autogen-agentchat autogen-ext-openai autogen-ext-tools

Install Composio, Autogen extensions, and dotenv.

What's happening:

  • composio connects your agent to Asana via MCP
  • autogen-agentchat provides the AssistantAgent class
  • autogen-ext-openai provides the OpenAI model client
  • autogen-ext-tools provides MCP workbench support

4

Set up environment variables

bash
COMPOSIO_API_KEY=your-composio-api-key
OPENAI_API_KEY=your-openai-api-key
USER_ID=your-user-identifier@example.com

Create a .env file in your project folder.

What's happening:

  • COMPOSIO_API_KEY is required to talk to Composio
  • OPENAI_API_KEY is used by Autogen's OpenAI client
  • USER_ID is how Composio identifies which user's Asana connections to use
5

Import dependencies and create Tool Router session

python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Asana session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["asana"]
    )
    url = session.mcp.url
What's happening:
  • load_dotenv() reads your .env file
  • Composio(api_key=...) initializes the SDK
  • create(...) creates a Tool Router session that exposes Asana tools
  • session.mcp.url is the MCP endpoint that Autogen will connect to
6

Configure MCP parameters for Autogen

python
# Configure MCP server parameters for Streamable HTTP
server_params = StreamableHttpServerParams(
    url=url,
    timeout=30.0,
    sse_read_timeout=300.0,
    terminate_on_close=True,
    headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
)

Autogen expects parameters describing how to talk to the MCP server. That is what StreamableHttpServerParams is for.

What's happening:

  • url points to the Tool Router MCP endpoint from Composio
  • timeout is the HTTP timeout for requests
  • sse_read_timeout controls how long to wait when streaming responses
  • terminate_on_close=True cleans up the MCP server process when the workbench is closed
7

Create the model client and agent

python
# Create model client
model_client = OpenAIChatCompletionClient(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY")
)

# Use McpWorkbench as context manager
async with McpWorkbench(server_params) as workbench:
    # Create Asana assistant agent with MCP tools
    agent = AssistantAgent(
        name="asana_assistant",
        description="An AI assistant that helps with Asana operations.",
        model_client=model_client,
        workbench=workbench,
        model_client_stream=True,
        max_tool_iterations=10
    )

What's happening:

  • OpenAIChatCompletionClient wraps the OpenAI model for Autogen
  • McpWorkbench connects the agent to the MCP tools
  • AssistantAgent is configured with the Asana tools from the workbench
8

Run the interactive chat loop

python
print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
print("Ask any Asana related question or task to the agent.\n")

# Conversation loop
while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    print("\nAgent is thinking...\n")

    # Run the agent with streaming
    try:
        response_text = ""
        async for message in agent.run_stream(task=user_input):
            if hasattr(message, "content") and message.content:
                response_text = message.content

        # Print the final response
        if response_text:
            print(f"Agent: {response_text}\n")
        else:
            print("Agent: I encountered an issue processing your request.\n")

    except Exception as e:
        print(f"Agent: Sorry, I encountered an error: {str(e)}\n")
What's happening:
  • The script prompts you in a loop with You:
  • Autogen passes your input to the model, which decides which Asana tools to call via MCP
  • agent.run_stream(...) yields streaming messages as the agent thinks and calls tools
  • Typing exit, quit, or bye ends the loop

Complete Code

Here's the complete code to get you started with Asana and AutoGen:

python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Asana session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["asana"]
    )
    url = session.mcp.url

    # Configure MCP server parameters for Streamable HTTP
    server_params = StreamableHttpServerParams(
        url=url,
        timeout=30.0,
        sse_read_timeout=300.0,
        terminate_on_close=True,
        headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
    )

    # Create model client
    model_client = OpenAIChatCompletionClient(
        model="gpt-5",
        api_key=os.getenv("OPENAI_API_KEY")
    )

    # Use McpWorkbench as context manager
    async with McpWorkbench(server_params) as workbench:
        # Create Asana assistant agent with MCP tools
        agent = AssistantAgent(
            name="asana_assistant",
            description="An AI assistant that helps with Asana operations.",
            model_client=model_client,
            workbench=workbench,
            model_client_stream=True,
            max_tool_iterations=10
        )

        print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
        print("Ask any Asana related question or task to the agent.\n")

        # Conversation loop
        while True:
            user_input = input("You: ").strip()

            if user_input.lower() in ['exit', 'quit', 'bye']:
                print("\nGoodbye!")
                break

            if not user_input:
                continue

            print("\nAgent is thinking...\n")

            # Run the agent with streaming
            try:
                response_text = ""
                async for message in agent.run_stream(task=user_input):
                    if hasattr(message, 'content') and message.content:
                        response_text = message.content

                # Print the final response
                if response_text:
                    print(f"Agent: {response_text}\n")
                else:
                    print("Agent: I encountered an issue processing your request.\n")

            except Exception as e:
                print(f"Agent: Sorry, I encountered an error: {str(e)}\n")

if __name__ == "__main__":
    asyncio.run(main())

Conclusion

You now have an Autogen assistant wired into Asana through Composio's Tool Router and MCP. From here you can:
  • Add more toolkits to the toolkits list, for example notion or hubspot
  • Refine the agent description to point it at specific workflows
  • Wrap this script behind a UI, Slack bot, or internal tool
Once the pattern is clear for Asana, you can reuse the same structure for other MCP-enabled apps with minimal code changes.
TOOLS & TRIGGERS

Supported Tools and Triggers

Every Asana action and event your agent gets out of the box.

Add a custom field to a goal

Add a custom field to a goal.

Add a custom field to a portfolio

Add a custom field to a portfolio.

Add a custom field to a project

Add a custom field to a project.

Add a collaborator to a goal

Add a collaborator to a goal.

Add Followers to Project

Tool to add followers to a project in Asana.

Add Followers to Task

Tool to add followers to a task in Asana.

Add item to portfolio

Add a project (or other supported item) to an Asana portfolio using the native addItem endpoint.

Add users to a portfolio

Add users to a portfolio.

Add Members to Project

Tool to add users to a project in Asana.

Add Project to Task

Tool to add a project to a task in Asana.

Add Supporting Relationship to Goal

Tool to add a supporting goal relationship to a goal.

Add Tag to Task

Tool to add an existing tag to a task in Asana.

Add Task Dependencies

Tool to add dependency relationships to an Asana task.

Add Task Dependents

Mark tasks as dependents of an Asana prerequisite task, if not already linked.

Add task to section

Adds an existing task to a section, optionally positioning it before or after another task in that section; if no position is specified, the task is added to the end.

Add User for Team

Tool to add a user to a team in Asana.

Add User for Workspace

Tool to add a user to a workspace or organization in Asana.

Approve Access Request

Tool to approve an access request in Asana.

Create Access Request

Tool to create an access request in Asana.

Create Allocation

Creates an allocation for a user in a workspace over a defined period, with an effort value in hours or percent and an optional project association.

Create a project

Creates a new Asana project in the specified workspace.

Create a tag in a workspace

Creates a new tag, with properties like name and color defined in the request body, within a specific Asana workspace (using `workspace_gid`); this tag helps categorize tasks, is confined to the workspace, and is not automatically applied to tasks.

Create task in asana with specific details

Creates a new Asana task; requires 'workspace', 'parent', or 'projects' for association, and 'followers', 'projects', 'tags' are set only at creation.

Create Attachment for Object

Tool to upload an attachment or link an external resource to a task, project, or project_brief in Asana.

Create Attachment for Task

Tool to upload an attachment to a task.

Create a budget

Create a budget.

Create Custom Field

Tool to create a new custom field in a workspace.

Create Enum Option for Custom Field

Tool to create a new enum option for a custom field in Asana.

Create a goal

Create a goal.

Create a goal metric

Create a goal metric.

Create Membership

Tool to create a membership by adding a user or team to a project, goal, or portfolio.

Create an OOO entry

Create an OOO entry.

Create a portfolio

Create a portfolio.

Create Project Brief

Tool to create a project brief for a project.

Create project for team

Tool to create a project in a team.

Create project for workspace

Tool to create a project in a workspace.

Create Project Status Update

Tool to create a new status update on a project.

Create a rate

Create a rate.

Create a role

Create a role.

Create a section in a project

Creates a new SECTION (not a task) in a project.

Create Status Update for Object

Tool to create a status update on a project, portfolio, or goal.

Create a story on a goal

Create a story on a goal.

Create subtask

Creates a new Asana subtask under an existing parent task (`task_gid`); `due_on` and `due_at` are mutually exclusive and cannot be set simultaneously.

Create a tag

Tool to create a new tag in an Asana workspace.

Create task comment

Adds a new text comment (story) to an existing Asana task, appearing in its activity feed.

Create Team

Creates a new team in a specified Asana organization for collaboration.

Create a timesheet approval status

Create a timesheet approval status.

Create a time tracking category

Create a time tracking category.

Create a time tracking entry

Create a time tracking entry.

Delete Allocation

Tool to delete an allocation by its ID.

Delete Attachment

Tool to delete an attachment by its globally unique identifier.

Delete a budget

Delete a budget.

Delete Custom Field

Tool to delete a custom field by its globally unique identifier.

Delete a goal

Delete a goal.

Delete Membership

Tool to delete a membership by its GID.

Delete an OOO entry

Delete an OOO entry.

Delete a portfolio

Delete a portfolio.

Delete a project

Delete a project.

Delete Project Brief

Tool to delete a project brief by its GID.

Delete Project Status

Tool to delete a project status by its GID.

Delete a project template

Delete a project template.

Delete a rate

Delete a rate.

Delete a role

Delete a role.

Delete a section

Tool to delete a section by its GID.

Delete Status Update

Tool to delete a status update by its GID.

Delete Story

Tool to delete a story by its GID.

Delete a Tag

Tool to delete a specific tag by its GID.

Delete a task

Delete a task.

Delete a task template

Delete a task template.

Delete a time tracking category

Delete a time tracking category.

Delete a time tracking entry

Delete a time tracking entry.

Delete a webhook

Delete a webhook.

Duplicate a portfolio

Duplicate a portfolio.

Duplicate Project

Duplicate a project with a new name.

Duplicate Task

Duplicate a task, returning an asynchronous job record.

Get Access Requests

Tool to retrieve access requests for a target object.

Get AI Studio credit utilization

Get AI Studio credit utilization.

Get AI Studio seats

Get AI Studio seats.

Get Allocation

Get an allocation by ID.

Get Allocations

Tool to get multiple allocations.

Get a project

Retrieves a specific Asana project by its `project_gid`, with an option to include additional fields for comprehensive details using `opt_fields`; this action does not return tasks within the project.

Get a task

Retrieves full details for a specified task GID accessible by the user; use `opt_fields` to customize returned data.

Get Attachment

Tool to get a single attachment by its globally unique identifier.

Get Audit Log Events

Retrieve audit log events for a workspace or organization, with optional filters.

Get a user task list

Retrieves a user's Asana task list for a specified workspace, using the user GID or `me` in `user_task_list_gid`.

Get a budget

Get a budget.

Get all budgets

Get all budgets.

Get current user

Retrieve the authenticated user, including accessible workspaces, for establishing user context.

Get Custom Field

Retrieve a custom field by its globally unique identifier, with optional selection of returned properties.

Get a goal's custom fields

Get a goal's custom fields.

Get a portfolio's custom fields

Get a portfolio's custom fields.

Get a team's custom fields

Get a team's custom fields.

Get Custom Fields for Workspace

List custom fields in a workspace, returning a page of results and pagination information when available.

Get a custom type

Get a custom type.

Get Custom Types

List custom types associated with a project, returning a page of results and pagination information when available.

Get Events on a Resource

Retrieve events on an Asana resource to monitor changes using a sync token.

Get Favorites for User

Get a user's favorites of a selected resource type within a workspace, ordered as they appear in the Asana sidebar.

Get Goal

Retrieve a single goal by its GID, with optional field selection.

Get a goal relationship

Get a goal relationship.

Get Goal Relationships

Tool to retrieve goal relationships.

Get Goals

Tool to retrieve multiple goals.

Get Job

Tool to retrieve a job by its globally unique identifier.

Get Membership

Tool to retrieve a single membership by its ID.

Get Memberships

Tool to retrieve memberships for goals, projects, portfolios, or custom fields.

Get multiple projects

Returns a list of projects filtered by workspace or team (one required), with optional archived status filter, supporting pagination for large datasets.

Get multiple tasks

Retrieve tasks using exactly one scope: a project, section, tag, user task list, or assignee and workspace together.

Get multiple users

Returns a list of users in an Asana workspace or organization, optionally filtered by workspace or team GID, with support for pagination and specifying optional fields.

Get multiple workspaces

Retrieve workspaces accessible to the authenticated user, with pagination support.

Get OOO Entries

Get one page of out-of-office entries for a user in a workspace.

Get an OOO entry

Get an OOO entry.

Get parent goals from a goal

Get parent goals from a goal.

Get Portfolio

Retrieve a single portfolio by its GID, with optional fields for portfolio details.

Get Portfolio Items

Retrieve items in a portfolio.

Get a portfolio membership

Get a portfolio membership.

Get Portfolio Memberships

Tool to retrieve multiple portfolio memberships.

Get memberships from a portfolio

Get memberships from a portfolio.

Get Portfolios

Retrieve portfolios in a specific workspace for a specified owner.

Get Project Brief

Tool to retrieve a project brief by its GID.

Get Project Custom Field Settings

List the custom-field settings attached to an Asana project.

Get Project Membership

Tool to get a project membership by ID.

Get Project Memberships For Project

Tool to get memberships from a specific project.

Get a project portfolio setting

Get a project portfolio setting.

Get project portfolio settings for a portfolio

Get project portfolio settings for a portfolio.

Get project portfolio settings for a project

Get project portfolio settings for a project.

Get Projects for Task

List projects associated with a specific task.

Get Projects for Team

Tool to get a list of projects for a specific team in Asana.

Get Project Status

Retrieve a project status update by its GID.

Get Project Status Updates

Tool to get status updates for a specific project.

Get Project Template

Get a single Asana project template, including configuration needed to instantiate it.

Get Multiple Project Templates

Tool to retrieve multiple project templates.

Get Project Templates for Team

Tool to get a team's project templates in Asana.

Get a rate

Get a rate.

Get multiple rates

Get multiple rates.

Get Reactions on Object

Tool to get reactions with a specific emoji base character on an object.

Get a role

Get a role.

Get multiple roles

Get multiple roles.

Get Section

Retrieve the full record for a single section by its GID.

Get sections in a project

List compact section records for a specified project.

Get Status Update

Tool to retrieve the full record for a single status update by its GID.

Get Status Updates

Retrieve status updates from an object.

Get stories from a goal

Get stories from a goal.

Get Stories for Task

Tool to get stories (comments, status updates, etc.

Get Story

Retrieve a single story by its GID, with optional selection of response fields.

Get Tag

Tool to get a single tag by its globally unique identifier.

Get Tags

Get multiple tags in a workspace.

Get Tags for Task

Get a page of tags associated with a specific task, with pagination support.

Get Tags For Workspace

Get a page of tags in a specific workspace, with pagination support.

Get Task Attachments

Tool to get the list of attachments for a given task, project, or project_brief.

Get Task Counts For Project

Tool to get task count statistics for a project.

Get a task for a given custom ID

Get a task for a given custom ID.

Get tasks for tag

Tool to retrieve tasks associated with a specific Asana tag by tag GID.

Get tasks for user task list

Tool to retrieve tasks from a user task list by user task list GID.

Retrieve tasks for project

Retrieves tasks from a specified Asana project, with a completion-since filter and optional field selection.

Get tasks from a section

Tool to retrieve tasks that belong to a specific Asana section (column/header) by section GID.

Get Task Subtasks

Lists subtasks of a specified Asana task, with pagination and optional field selection.

Get a task template

Retrieve a task template's configuration by its GID, without instantiating it.

Get Task Templates

Lists Asana task templates for a workspace or project, with pagination.

Get Team

Tool to retrieve details of a specific team by its GID.

Get Team Membership

Tool to retrieve a complete team membership record by its GID.

Get Team Memberships

Tool to retrieve compact team membership records.

Get Team Memberships for Team

Tool to get memberships from a specific team.

Get Team Memberships For User

Retrieve a page of team memberships for a specific user within a workspace.

Get Teams for User

Get a page of team records for a specific user in an organization or workspace.

Get teams in workspace

Retrieve a page of compact team records in a workspace visible to the authorized user.

Get Time Period

Tool to retrieve the full record for a single time period by its GID.

Get Time Periods

Tool to retrieve compact or full representations of time periods.

Get a timesheet approval status

Get a timesheet approval status.

Get multiple timesheet approval statuses

Get multiple timesheet approval statuses.

Get time tracking categories for a workspace

Get time tracking categories for a workspace.

Get a time tracking category

Get a time tracking category.

Get Time Tracking Entries

Tool to get multiple time tracking entries across workspace, tasks, or projects.

Get Time Tracking Entries for Task

Tool to get time tracking entries for a task.

Get time tracking entries for a time tracking category

Get time tracking entries for a time tracking category.

Get a time tracking entry

Get a time tracking entry.

Get Objects via Typeahead

Tool to retrieve objects in a workspace via a typeahead search algorithm.

Get User

Get a user by their ID.

Get User in Workspace

Tool to get a user in a workspace or organization by their GID.

Get Users for Team

Get users in a team.

Get Users in Workspace

Get users in a workspace or organization.

Get User Task List

Tool to get a single user task list by its globally unique identifier.

Get a webhook

Get a webhook.

Get Webhooks

Retrieve a page of webhooks in a workspace, optionally filtered by resource.

Get Workspace

Tool to retrieve details of a specific workspace by its GID.

Get workspace events

Get one page of workspace events since a sync token was created.

Get Workspace Membership

Tool to retrieve a specific workspace membership by its GID.

Get Workspace Memberships

Tool to retrieve the workspace memberships for a specific workspace.

Get Workspace Memberships For User

Retrieve a page of workspace memberships for a specific user.

Get Workspace Projects

Retrieve a page of projects associated with a specific Asana workspace.

Reorder Enum Option for Custom Field

Tool to reorder an existing enum option within a custom field by moving it before or after another specified enum option.

Move or Insert Section in Project

Tool to move or reorder an existing section within a project by repositioning it before or after another section.

Instantiate Project Template

Instantiate (create) a real Asana project from a project template, returning the async job record.

Instantiate a task from a task template

Instantiate a task from a task template.

Get goal relationships

Get goal relationships.

List Task Dependencies

List the prerequisite tasks that must be completed before an Asana task.

List Task Dependents

List tasks that are blocked by a specified Asana task.

Reject access request

Tool to reject an access request.

Remove a custom field from a goal

Remove a custom field from a goal.

Remove a custom field from a portfolio

Remove a custom field from a portfolio.

Remove a custom field from a project

Remove a custom field from a project.

Remove Follower From Task

Tool to remove one or more followers from a task.

Remove Followers For Project

Tool to remove followers from a project in Asana.

Remove a collaborator from a goal

Remove a collaborator from a goal.

Remove Item from Portfolio

Tool to remove an item (e.

Remove users from a portfolio

Remove users from a portfolio.

Remove Members from Project

Tool to remove users from a project in Asana.

Remove Project from Task

Tool to remove a project from a task in Asana.

Removes a supporting goal relationship

Removes a supporting goal relationship.

Remove Tag from Task

Tool to remove an existing tag from a task in Asana.

Remove Task Dependencies

Tool to unlink selected prerequisite relationships from an Asana task without deleting any task.

Remove Task Dependents

Unlink selected dependent tasks from an Asana prerequisite task without deleting any task.

Remove User For Team

Tool to remove a user from a team.

Remove User from Workspace

Tool to remove a user from a workspace or organization.

Roll up subtask dates for a project

Start a background job to reconcile subtask dates in a project.

Roll up subtask dates for a task

Start a background job to reconcile a task's subtask dates.

Create a project template from a project

Create a project template from a project.

Search projects in a workspace

Search projects in a workspace.

Search Tasks in Workspace

Search tasks in an Asana workspace by project, assignee, task subtype or text, with optional result fields and a limit of 1–100.

Set parent for task

Tool to set the parent of a task in Asana.

Submit Parallel Requests (Batch API)

Submit up to 10 Asana API requests in parallel using the Batch API, such as fetching multiple tasks or creating multiple subtasks.

Trigger a rule

Trigger a rule.

Update Allocation

Tool to update an existing allocation by its ID.

Update a task

Updates attributes of an existing Asana task identified by its task_gid.

Update a budget

Update a budget.

Update Custom Field

Update the name or description of a custom field by its globally unique identifier.

Update Enum Option

Tool to update an enum option for a custom field.

Update a goal

Update a goal.

Update a goal metric

Update a goal metric.

Update a goal relationship

Update a goal relationship.

Update a membership

Update a membership.

Update an OOO entry

Update an OOO entry.

Update a portfolio

Update a portfolio.

Update a project

Update a project.

Update Project Brief

Tool to update a project brief by its GID.

Update a project portfolio setting

Update a project portfolio setting.

Update a rate

Update a rate.

Update a role

Update a role.

Update Section

Update a section's name or position within a project.

Update Story

Tool to update a story on a task.

Update Tag

Tool to update an existing tag by its globally unique identifier.

Update a team

Tool to update details of an existing team.

Update a timesheet approval status

Update a timesheet approval status.

Update a time tracking category

Update a time tracking category.

Update a time tracking entry

Update a time tracking entry.

Update User

Update a user's custom fields.

Update User for Workspace

Tool to update a user in a workspace or organization.

Update a webhook

Update an existing Asana webhook's event filter configuration.

Update a workspace

Update a workspace.

FAQ

Frequently asked questions

Start with Asana.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Asana tool your agent needs.Free to start.

Start building