How to connect Asana to OpenClaw
Connect Asana to OpenClaw with ClawLink in one click — 153 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.


Track tasks, projects, and workflows. Once connected, OpenClaw can read and act on Asana from chat — pairing, token refresh, and tool wiring handled for you.
The usual route to Asana access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical Asana setup: install one ClawHub skill, connect Asana in the browser, and OpenClaw can call real Asana actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.
Copy this prompt into OpenClaw, or open the Asana skill on ClawHub.
Before installing anything, inspect the ClawHub skill metadata and setup requirements.
If the skill asks you to install a third-party package or CLI, verify its source, maintainer, and package contents before running the install command.
Install the skill "Asana" (hith3sh/asana-workspace) from ClawHub only after those checks pass.
Skill page: https://clawhub.ai/hith3sh/asana-workspace
Keep the work scoped to this skill only.
After install, help me finish setup from verified skill metadata.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.Setup
It takes three steps to connect OpenClaw to Asana.
1Install the plugin
Paste the setup prompt into OpenClaw, or install from the terminal and ask OpenClaw to pair:
openclaw plugins install clawhub:clawlink-plugin- 2
Connect Asana
One-click OAuth in the dashboard.
- 3
Use it from chat
Ask OpenClaw: "What can you do with Asana?"
Install by command
The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:
openclaw plugins install clawhub:clawlink-pluginThen ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say done. Finally, connect Asana in the ClawLink dashboard — a one-click OAuth approval, no API keys.
Verify the connection by asking OpenClaw:
Run asana_get_current_user to find my workspaces, then use asana_get_multiple_tasks with me as assignee in <workspace>. Show me everything incomplete, grouped by project, with due dates.
Using a different agent?
The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:
npx -y @useclawlink/cli loginlogin opens the same browser approval and stores a credential locally. Once Asana is connected in the dashboard, that agent calls the same 153 Asana tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Asana MCP for OpenClaw
Looking for a Asana MCP server for OpenClaw? ClawLink connects Asana to OpenClaw and exposes 153 Asana tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using Hermes instead? The Hermes Asana integration works the same way.
Search results currently give this question two answers, and both hand you a token. One installs a community skill that wants an Asana personal access token pasted into your config; the other has you mint the same token and call the API yourself. ClawLink takes the third path: you approve Asana in the browser through its OAuth flow, the credential stays on the ClawLink server, and OpenClaw can call the 153 Asana tools below. There is no developer console trip, nothing in openclaw.json, and revoking access is a click rather than a token you have to remember exists.
What the OpenClaw Asana integration can do
153 Asana tools are ready for OpenClaw once the account is connected. The 30 below are the ones people reach for most; your agent can call all 153.
30 of 153 Asana tools for OpenClaw
| Tool | What it does |
|---|---|
Add followers to project asana_add_followers_to_project | Add followers to an Asana project |
Add followers to task asana_add_followers_to_task | Add followers to an Asana task |
Add members to project asana_add_members_to_project | Add users to an Asana project |
Add tag to task asana_add_tag_to_task | Add an existing tag to an Asana task |
Add task dependencies asana_add_task_dependencies | Add dependency relationships to an Asana task |
Add user to team asana_add_user_to_team | Add a user to a team in Asana |
Add user to workspace asana_add_user_to_workspace | Add a user to an Asana workspace |
Approve access request asana_approve_access_request | Approve an access request in Asana |
Get a project asana_get_a_project | Retrieves a specific Asana project by its project_gid, with an option to include additional |
Get a task asana_get_a_task | Retrieves full details for a specified task GID accessible by the user; use opt_fields to |
Get a user task list asana_get_a_user_task_list | Retrieves a specific user's task list from Asana by its user_task_list_gid, optionally |
Get access requests asana_get_access_requests | Retrieve access requests for a target object |
Get allocation asana_get_allocation | Get an allocation by ID |
Get allocations asana_get_allocations | Get multiple allocations |
Get attachment asana_get_attachment | Get a single attachment by its globally unique identifier |
Get audit log events asana_get_audit_log_events | Get audit log events for a workspace |
Get current user asana_get_current_user | Retrieves the authenticated user's full record, including accessible workspaces, often used as |
Get custom field asana_get_custom_field | Get a single custom field by its globally unique identifier |
Get custom fields for workspace asana_get_custom_fields_for_workspace | Get all custom fields in a workspace |
Get custom types asana_get_custom_types | Get all custom types associated with a project |
Get events asana_get_events | Retrieve events on a resource to monitor changes |
Get favorites for user asana_get_favorites_for_user | Get a user's favorites within a specified workspace |
Get goal asana_get_goal | Retrieve the full record for a single goal by its GID |
Get goal relationships asana_get_goal_relationships | Retrieve goal relationships |
Get goals asana_get_goals | Retrieve multiple goals |
Get job asana_get_job | Retrieve a job by its globally unique identifier |
Get membership asana_get_membership | Retrieve a single membership by its ID |
Get memberships asana_get_memberships | Retrieve memberships for goals, projects, portfolios, or custom fields |
Get multiple projects asana_get_multiple_projects | Returns a list of projects filtered by workspace or team (one required), with optional archived |
Get multiple tasks asana_get_multiple_tasks | Retrieves a list of tasks, allowing filtering by assignee (requires workspace), project |
Try it: find the Asana tool you need
Browse the 30 Asana tools
Click any tool to see exactly what OpenClaw can do and copy a ready-to-use prompt.
Example prompts
Run asana_get_current_user to find my workspaces, then use asana_get_multiple_tasks with me as assignee in <workspace>. Show me everything incomplete, grouped by project, with due dates.
Call asana_get_multiple_projects to get the real gid for "<project>", then create a task with asana_create_a_task titled "<title>", notes from the discussion above, and due <date>. Give me the new task gid.
Find the task "<title>" with asana_get_multiple_tasks, then update it with asana_update_a_task to set the assignee to <person> and the due date to <date>. Use the gid from the search, not a guessed one, and quote what changed.
Use asana_get_memberships for the project "<project>" and tell me who is already on it. Only if <person> is missing, add them with asana_add_members_to_project.
How the Asana tools take their arguments
Details from the manifest that decide whether an Asana prompt works first time.
- Asana ids are global unique ids (gids), not numbers. Every tool addressing a task, project, workspace, or user takes a gid, and an example gid from documentation fails exactly like a typo would.
- The task-list filters are coupled.
asana_get_multiple_tasksaccepts an assignee filter only together with a workspace, and vice versa. Passing one alone is a documented schema requirement, not a quirk. - Task creation needs an anchor.
asana_create_a_taskrequires a workspace, a parent, or projects to attach to, and followers, projects, and tags are set at creation rather than added later. opt_fieldsis how you ask for more. Reads return core fields by default; if something you expected is missing from a result, the call needs opt_fields rather than a different tool.asana_get_current_useris the first diagnostic. It reports the connected account and its workspaces, which resolves most "nothing found" and "403" confusion before you change anything.
ClawLink vs. building it yourself
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want Asana working from chat.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register a Asana app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Asana through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| Ongoing maintenance | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Asana. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| Agent usability | You still need to expose the right Asana actions to the runtime in a format your agent can reliably use. | 153 tools for Asana are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Asana to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect Asana in the browser, and the 153 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.
Troubleshooting
OpenClaw installed the Asana skill but can't call the tools
The ClawHub skill teaches OpenClaw about Asana, but the calls run through the ClawLink plugin and your connected account. Make sure Asana is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.
Connection succeeds but no tools appear
Reconnect Asana from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.
"Tool schema not loaded yet" error when calling Asana tools
Asana tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Asana call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.
Asana returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.
Asana returns 403 "Forbidden" or "You do not have access to this resource"
Asana's permission model is per-project and per-role, so work through the causes in this order. First, membership: the connected account may simply not be a member of that project or team, which is the most common cause and is fixed in Asana rather than in ClawLink. Second, role: Asana distinguishes Admin, Editor, and Commenter, and actions like adding members or changing project fields need at least Editor on that project. Third, organization: an account in several organizations sees a different resource set in each, so a gid from one org is invisible from another. Fourth, archived resources, which respond to reads but reject writes. Last, and invisible to every search engine but real here: the agent may have passed a placeholder gid from documentation. Asana gids are global unique ids and cannot be guessed, so have the agent list first and retry with a real one.
Ask the agent to diagnose it:
Call asana_get_current_user, then asana_get_multiple_projects, and tell me which workspaces and projects this connection can actually see. Do not retry the failed call yet.Asana task search returns nothing but the task exists
Nearly always the workspace, not the search. asana_get_multiple_tasks filters by workspace, and its assignee and workspace filters are coupled — Asana requires them together, so passing one without the other is a schema error rather than an empty result. The second cause is scope of the query itself: a task in a project the connected account cannot see does not appear, exactly as it would not in the Asana web app for that user. Ask the agent to name the workspace explicitly and to confirm which projects it can enumerate before concluding that anything is missing.
Ask the agent to diagnose it:
List the workspaces from asana_get_current_user, then run asana_get_multiple_tasks against each one with the assignee set to me, and show me what comes back per workspace.An Asana tool returns "tool not found" or the agent invents an asana_asana_ name
Tool schemas load on demand, so the first Asana call in a fresh session can arrive before the catalog is ready — retry once and it normally clears. If the same name fails twice the name is wrong rather than missing, and the error lists the closest real tools. The names already include the integration prefix, so they are asana_get_a_task and asana_get_multiple_projects, and an agent adding another produces something that never existed. Note that if you are running Asana's own MCP server rather than this integration, a genuine tool-not-found there usually means the client is still pointed at the retired V1 endpoint and needs to be moved to the v2 one and re-authenticated.
Ask the agent to diagnose it:
List the Asana tools you actually have access to, then tell me which one fetches a single task by gid and use that exact name.OAuth finished in the browser but the account is still missing
Try reconnecting Asana and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.
FAQ
Is there a OpenClaw Asana integration?
Yes. ClawLink is the fastest way to connect OpenClaw to Asana: link your Asana account once in the browser and OpenClaw can call the Asana API through 153 ready-made tools — no custom code or token handling.
How do I add Asana to OpenClaw with ClawLink?
Paste the setup prompt from this page into OpenClaw. It installs the ClawLink Asana skill from ClawHub, then you click Connect in the dashboard to authorize Asana. OpenClaw calls the tools from the next message — no config files or API keys to manage.
How long does it take to connect Asana to OpenClaw?
About two minutes. Sign in, click Connect next to Asana in the dashboard, authenticate, and OpenClaw can use it from the next chat message.
Why use ClawLink instead of wiring Asana up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want Asana working from chat.
Do I need an Asana personal access token?
No, and this is the main difference from what most guides recommend. The connection uses Asana's OAuth consent flow: you sign in once, approve access, and the token lives on the ClawLink server rather than in a file on your machine. The community route you will see suggested — install a PAT-based skill, generate a token in Asana's developer console, paste it in — works, but it puts a long-lived credential carrying your full account access into a config file that tends to get copied between machines and committed by accident. An OAuth grant can be revoked from the dashboard and stops working immediately.
What can the agent actually do in Asana?
The toolset is broad rather than a task-and-comment subset: tasks and subtasks, projects and sections, portfolios, goals and goal relationships, teams and workspaces, custom fields, tags, attachments, time tracking, allocations, memberships, and audit log events. That breadth is the practical argument for this route — several of the official and community options cover the common half of Asana and stop, so a workflow that touches goals, portfolios, or custom fields runs out of tools. Whatever you use, the agent still acts with your account's permissions.
Is it safe to connect Asana to an AI agent?
The connection uses Asana's own OAuth consent screen, so you approve access there, the agent never sees your password, and you can disconnect from the ClawLink dashboard at any time, after which Asana rejects further calls. The comparison worth making is against the alternative these search results recommend: a personal access token carries your account's access, sits in a file, and keeps working until somebody remembers to revoke it. The boundary in both cases is the same one — the agent can do what your Asana account can do — so connect with the account whose access you actually intend it to have.
Can it work across several Asana workspaces or organizations?
Yes, if your account belongs to them. Asana scopes almost everything by workspace, and that is the usual source of confusing empty results: a task search that returns nothing is often looking in the wrong workspace rather than finding nothing. Ask the agent to run asana_get_current_user first, which reports the workspaces the connection can see, and to name the workspace explicitly in the calls that follow.
OpenClaw installed the Asana skill but can't call the tools
The ClawHub skill teaches OpenClaw about Asana, but the calls run through the ClawLink plugin and your connected account. Make sure Asana is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.