# Asana

> Asana through One

- Skill: `withoneai/asana` (Agent Skill)
- Install (CLI): `npx skillmds@latest add withoneai/asana`
- Raw SKILL.md: https://api.skillmd.com/api/skills/withoneai/asana/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: withoneai (https://skillmd.com/u/withoneai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/withoneai/asana

---


# Asana through One

Asana is a scalable work management platform that helps teams organize projects, set company-wide goals, automate workflows, and track progress in real time—all within a single, integrated workspace.

One exposes Asana through four MCP tools. The table below carries real action ids from One's knowledge base, so for a common operation you can skip search and go straight to reading the action's parameters.

## How to run an action

1. Find the action in the table below, or call `search_one_platform_actions` with platform `asana` if it is not listed.
2. Call `get_one_action_knowledge` with the action id. Do this every time, including for actions in this table. The table gives you the id, not the parameters.
3. Call `execute_one_action` with parameters copied from that knowledge.

Never guess a parameter name, a body field, or an enum value. The knowledge has the real schema, and a guessed field is either a 400 or a silent write of the wrong thing.

## Before you start

Call `list_one_integrations` once and confirm Asana is connected. If it is missing, the user has not connected it: say so and point them at https://app.withone.ai rather than reaching for raw HTTP.

Each connection carries an `access` field. If it reports `{"policy": "methods", "methods": ["GET"]}` the agent is read-only here, so plan a read-only answer instead of attempting a write that will be refused.

## Before a write

Creates, updates, deletes and sends land on a real Asana account and cannot be recalled. State the action and the specific target in one line before the first write in a task, and let the user stop you. Reads need no confirmation.

## Actions

### Tasks

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Task | GET | `/tasks/{{taskGid}}` | `conn_mod_def::GJ0Bj8Jm9nY::lSCoFwHZQRqoecS5VnEKqg` |
| Get a Task’s Dependencies | GET | `/tasks/{{taskGid}}/dependencies` | `conn_mod_def::GJ0BkMvbOrs::ED60gVbcQVC0AWrNyDaJnw` |
| Get a Task’s Subtasks | GET | `/tasks/{{taskGid}}/subtasks` | `conn_mod_def::GJ0BksZRxl0::xYJYqDjwQG6Xqct-V3_5ZQ` |
| Get a Workspace Task by Custom ID | GET | `/workspaces/{{workspaceGid}}/tasks/custom_id/{{customId}}` | `conn_mod_def::GJ0BkDzQ42U::jHUkZ1gOQb23LQpec6Sywg` |
| Get Multiple Tasks | GET | `/tasks` | `conn_mod_def::GJ0BkiBD6NE::VvBsHRfETZKCr5On77ZGuw` |
| Get Tasks for a Tag | GET | `/tags/{{tagGid}}/tasks` | `conn_mod_def::GJ0BlOdq6Xk::ZimKB8opRwi3METk6lilxQ` |
| List a Project’s Tasks | GET | `/projects/{{projectGid}}/tasks` | `conn_mod_def::GJ0Bk2jM_T0::FjnidkW2RUaBsB5eoIK9Sw` |
| List a Task’s Dependents | GET | `/tasks/{{taskGid}}/dependents` | `conn_mod_def::GJ0BkYVKn_8::2ka0h_RkRnq0lgaTIbtyGg` |
| List Tasks from a User Task List | GET | `/user_task_lists/{{userTaskListGid}}/tasks` | `conn_mod_def::GJ0BlYd3qEw::ZUbuJFurShGpO8S1YpZWiQ` |
| List Tasks in a Section | GET | `/sections/{{sectionGid}}/tasks` | `conn_mod_def::GJ0BlEGAHhQ::DW8K4KmnTNqhHA_yDZGVsw` |
| Search Tasks in a Workspace | GET | `/workspaces/{{workspaceGid}}/tasks/search` | `conn_mod_def::GJ0BmJsc69Q::2k2XfYayTCahfyAcdAYtYA` |
| Add a Project to a Task | POST | `/tasks/{{taskGid}}/addProject` | `conn_mod_def::GJ0Bi1o6GZk::R8fHKPrpTnOl6Z7whAxLfA` |

15 more Tasks actions are available through search.

### Projects

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Project | GET | `/projects/{{projectGid}}` | `conn_mod_def::GJ0Bbp6LXZs::TytZnH0xR4y1CCJSrPMlTg` |
| Get Multiple Projects | GET | `/projects` | `conn_mod_def::GJ0BcJU4GoM::cE4wzSMhQV6iBw5PIkKBKQ` |
| List a Team's Projects (Deprecated) | GET | `/teams/{{teamGid}}/projects` | `conn_mod_def::GJ0Bbz1Ch6U::uJoBD2pwRD2PPtlr1fvGUg` |
| List a Workspace’s Projects | GET | `/workspaces/{{workspaceGid}}/projects` | `conn_mod_def::GJ0Bb_MiVAY::r2482efsRkiTR1AlOExsdw` |
| Add Followers to a Project | POST | `/projects/{{projectGid}}/addFollowers` | `conn_mod_def::GJ0BacWEsF8::BdPFJnuJQ0mZ0CGuV6fi_Q` |
| Add Members to a Project | POST | `/projects/{{projectGid}}/addMembers` | `conn_mod_def::GJ0BalV0-Qs::rb45cO0zRQK-thcoud_uYA` |
| Create a Project | POST | `/projects` | `conn_mod_def::GJ0Bawb3mf4::pqp2OSmlQGeWkjw2bInUnw` |
| Create a Project in a Team | POST | `/teams/{{teamGid}}/projects` | `conn_mod_def::GJ0Ba47kxjg::Q-Uf8KOgTwaPrSsZBdT1tQ` |
| Create a Project in a Workspace | POST | `/workspaces/{{workspaceGid}}/projects` | `conn_mod_def::GJ0BbH6A9iI::_15BH-fgTa2YnAuLMPUtww` |
| Create a Project Template from a Project | POST | `/projects/{{projectGid}}/saveAsTemplate` | `conn_mod_def::GJ0BbQhWQ9k::SvlkpDqOS7KrVWct-Ajtew` |
| Delete a Project | DELETE | `/projects/{{projectGid}}` | `conn_mod_def::GJ0BbYg3A_8::3wYv9ycTTEq32IE6h8tANg` |
| Duplicate a Project | POST | `/projects/{{projectGid}}/duplicate` | `conn_mod_def::GJ0BbhCINN4::pl8RXfJpQWGliIhFLW97zQ` |

4 more Projects actions are available through search.

### Goals

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Goal | GET | `/goals/{{goalGid}}` | `conn_mod_def::GJ0BTTH4jVY::Cap-BL5wQlKR6M6plpnBkg` |
| Get a Goal’s Parent Goals | GET | `/goals/{{goalGid}}/parentGoals` | `conn_mod_def::GJ0BTpfRsj0::0qErheKzT1G1S7CdmvzdqA` |
| List Goals | GET | `/goals` | `conn_mod_def::GJ0BTeMI5Ec::jHt9d1T_S_SJ1WZH5pXBNg` |
| Add a Custom Field to a Goal | POST | `/goals/{{goalGid}}/addCustomFieldSetting` | `conn_mod_def::GJ0BSti122w::ELH5uSf-QTeR1PVcPHsBhA` |
| Add a Supporting Relationship to a Goal | POST | `/goals/{{goalGid}}/addSupportingRelationship` | `conn_mod_def::GJ0BRvPHxRE::oiWW2jIyTM-VfRLGdy9Dbw` |
| Add Followers to a Goal (Add Collaborators) | POST | `/goals/{{goalGid}}/addFollowers` | `conn_mod_def::GJ0BSkjdSRs::w5-jg5M1RjipPwSWRWCJ0A` |
| Create a Goal | POST | `/goals` | `conn_mod_def::GJ0BS3Fa6rs::DOZyF8ZdQNWWE_pEzAQn8A` |
| Create a Goal’s Metric | POST | `/goals/{{goalGid}}/setMetric` | `conn_mod_def::GJ0BTCU0pIE::W9UCte7iQ_23C4qqRWuCug` |
| Delete a Goal | DELETE | `/goals/{{goalGid}}` | `conn_mod_def::GJ0BTJqcuFE::lotPtg7SThG56Zee24Ullw` |
| Remove a Custom Field Setting from a Goal | POST | `/goals/{{goalGid}}/removeCustomFieldSetting` | `conn_mod_def::GJ0BT9Cb2Ig::sb7pQXK1Qb2e--rmeR6NfQ` |
| Remove a Goal’s Supporting Relationship | POST | `/goals/{{goalGid}}/removeSupportingRelationship` | `conn_mod_def::GJ0BSR9rOyE::Z2-74I0yR8yWqsutqHZ7dQ` |
| Remove Followers from a Goal | POST | `/goals/{{goalGid}}/removeFollowers` | `conn_mod_def::GJ0BTywEDw0::9XWLKKTsReiYI6UA1S8HYQ` |

2 more Goals actions are available through search.

### Portfolios

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Portfolio | GET | `/portfolios/{{portfolioGid}}` | `conn_mod_def::GJ0BXByyxxg::PfBSHeYFRCqs1ipKoxErNw` |
| Get Multiple Portfolios | GET | `/portfolios` | `conn_mod_def::GJ0BXLAuCgI::A97JdrjOT9mOjeuxeqp9zQ` |
| Add a Custom Field to a Portfolio | POST | `/portfolios/{{portfolioGid}}/addCustomFieldSetting` | `conn_mod_def::GJ0BWGWk_-0::L0dmHxl1St-FVIE1aGFbpw` |
| Add an Item to a Portfolio | POST | `/portfolios/{{portfolioGid}}/addItem` | `conn_mod_def::GJ0BWOwnEfI::RZrm3Q5hR_W3pYEio-cFeQ` |
| Add Members to a Portfolio | POST | `/portfolios/{{portfolioGid}}/addMembers` | `conn_mod_def::GJ0BWa9uQbg::FNaKbMlJR4q8hbheQWBtdw` |
| Create a Portfolio | POST | `/portfolios` | `conn_mod_def::GJ0BWlW9rcE::tQMd38PhTZekHs7XS5DCyw` |
| Delete a Portfolio | DELETE | `/portfolios/{{portfolioGid}}` | `conn_mod_def::GJ0BWwFW7go::ExSgr3cdSxCXJ38HPaELhw` |
| Duplicate a Portfolio | POST | `/portfolios/{{portfolioGid}}/duplicate` | `conn_mod_def::GJ0BW4qMYtI::mRLgTOv6R8KatgvGtx_QWw` |
| Remove a Custom Field Setting from a Portfolio | POST | `/portfolios/{{portfolioGid}}/removeCustomFieldSetting` | `conn_mod_def::GJ0BXgamYJY::O-R0kwOjT-WWXkLDDI0ayA` |
| Remove an Item from a Portfolio | POST | `/portfolios/{{portfolioGid}}/removeItem` | `conn_mod_def::GJ0BXourizY::Rd8OB0cmSDyk3nBnAiYQ9w` |
| Remove Members from a Portfolio | POST | `/portfolios/{{portfolioGid}}/removeMembers` | `conn_mod_def::GJ0BXx8Bpm0::6newUqa6S36jean-GgiKLw` |
| Update a Portfolio | PUT | `/portfolios/{{portfolioGid}}` | `conn_mod_def::GJ0BX6wLkoI::6ulYi3_ERceq_VGMx4YvXQ` |

### Tags

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Tag | GET | `/tags/{{tagGid}}` | `conn_mod_def::GJ0BhhSzjOs::q53K3UqWQuWwzASk4S1qGg` |
| List a Workspace’s Tags | GET | `/workspaces/{{workspaceGid}}/tags` | `conn_mod_def::GJ0Bh-6CrLI::kpvUbohVRKeXEI_RGbDowQ` |
| List Tags | GET | `/tags` | `conn_mod_def::GJ0Bh1wZbAc::09YUt8KxR-GzXbyWJUF1ig` |
| Create a Tag | POST | `/tags` | `conn_mod_def::GJ0BhI7m4ks::tnb8Q0iDTuyCSLB7yFTIXA` |
| Create a Tag in a Workspace | POST | `/workspaces/{{workspaceGid}}/tags` | `conn_mod_def::GJ0BhRPm2Mw::pUTHPrufTcuFHjFtJNemBg` |
| Delete a Tag | DELETE | `/tags/{{tagGid}}` | `conn_mod_def::GJ0BhY75VdI::-SNH9L0hSxmCAcuwpVpQkg` |
| Update a Tag | PUT | `/tags/{{tagGid}}` | `conn_mod_def::GJ0BiHQlIKY::VyjF3v0vR9Klio5Qd0mnWg` |

### Sections

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Section | GET | `/sections/{{sectionGid}}` | `conn_mod_def::GJ0BfU7RVNo::6Otp7SMWR6u9CX-Cb910Wg` |
| List a Project’s Sections | GET | `/projects/{{projectGid}}/sections` | `conn_mod_def::GJ0BfdNv3oE::feeoEKgURuKMZZmxue2DKg` |
| Add a Task to a Section | POST | `/sections/{{sectionGid}}/addTask` | `conn_mod_def::GJ0Be7uRrrE::WDFMGLjJT1ae4k1iHhqsZg` |
| Create a Section in a Project | POST | `/projects/{{projectGid}}/sections` | `conn_mod_def::GJ0BfEFfym8::raAyuUYGRHSpshZqnwy5vw` |
| Delete a Section | DELETE | `/sections/{{sectionGid}}` | `conn_mod_def::GJ0BfL2qYLA::n2lidaG7TXqyVAXaksNVNw` |
| Update a Section | PUT | `/sections/{{sectionGid}}` | `conn_mod_def::GJ0Bfvfu7rc::izsPynwASzahUlbdKlyzUg` |

### Teams

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Team | GET | `/teams/{{teamGid}}` | `conn_mod_def::GJ0BoIIAt3Q::X4bMYlqzQA-3aQYARx_kBg` |
| List a User’s Teams (in an Organization) | GET | `/users/{{userGid}}/teams` | `conn_mod_def::GJ0BoUWFuqY::UI9uYq5oSsSxpurPK3-KrA` |
| List a Workspace’s Teams | GET | `/workspaces/{{workspaceGid}}/teams` | `conn_mod_def::GJ0BofA9pv0::kHA2ry4FTbSluZ9DVoCFZw` |
| Create a Team (in the Current Workspace) | POST | `/teams` | `conn_mod_def::GJ0BoAvrTZQ::9ej_owr1R4Os4R-Wse27Wg` |
| Remove a User from a Team | POST | `/teams/{{teamGid}}/removeUser` | `conn_mod_def::GJ0BopG5WJc::w_XwbZkGRya5w9g9LJ3hiA` |
| Update a Team | PUT | `/teams/{{teamGid}}` | `conn_mod_def::GJ0BowcHYvM::GQoeILhfTmeGbtpGcEEaaQ` |

### TimeTrackingEntries

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Time Tracking Entry | GET | `/time_tracking_entries/{{timeTrackingEntryGid}}` | `conn_mod_def::GJ0BpfqWnI8::6_sef_mjSFCP2rK8TOhdeg` |
| List a Task’s Time Tracking Entries | GET | `/tasks/{{taskGid}}/time_tracking_entries` | `conn_mod_def::GJ0Bpy9bVog::FvB7WTcxTkGwy47keSvkSQ` |
| List Time Tracking Entries | GET | `/time_tracking_entries` | `conn_mod_def::GJ0BppQfMz8::AjTFbXeYS_KQcCtTnpdyzw` |
| Create a Task Time Tracking Entry | POST | `/tasks/{{taskGid}}/time_tracking_entries` | `conn_mod_def::GJ0BpPW7tVc::S11Ly1QNSemkGqyicmXXmw` |
| Delete a Time Tracking Entry | DELETE | `/time_tracking_entries/{{timeTrackingEntryGid}}` | `conn_mod_def::GJ0BpXVt0Ds::UzKbEZIiR5OyWnYcwOfO6A` |
| Update a Time Tracking Entry | PUT | `/time_tracking_entries/{{timeTrackingEntryGid}}` | `conn_mod_def::GJ0Bp7v6G18::EGaomUXHTOi4wEFU30g8Gg` |

### Workspaces

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Workspace | GET | `/workspaces/{{workspaceGid}}` | `conn_mod_def::GJ0BtNgnouc::VeYGWfETTW-7NPFbs0ERTg` |
| Get Multiple Workspaces | GET | `/workspaces` | `conn_mod_def::GJ0BtYv5vEg::Sv3n2N6ZTdyklkCptl6J9w` |
| Get Workspace Objects via Typeahead | GET | `/workspaces/{{workspaceGid}}/typeahead` | `conn_mod_def::GJ0BqGdnFVE::vpKczgEtSein4manwlzE9g` |
| Add a User to a Workspace or Organization | POST | `/workspaces/{{workspaceGid}}/addUser` | `conn_mod_def::GJ0BtFiBNqA::sK5OeJ8XSmK4iWZVH8piRA` |
| Remove a User from a Workspace or Organization | POST | `/workspaces/{{workspaceGid}}/removeUser` | `conn_mod_def::GJ0Btro6xSk::74TSkZiiQamqtfukS_jbsw` |
| Update a Workspace | PUT | `/workspaces/{{workspaceGid}}` | `conn_mod_def::GJ0Bt17XJmQ::NGI_KgM-SDagTDOLol52zQ` |

### Users

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User | GET | `/users/{{userGid}}` | `conn_mod_def::GJ0BqmMOIZI::iAXWLzlHSQabyQC_AsY0ig` |
| Get a User in a Workspace or Organization | GET | `/workspaces/{{workspaceGid}}/users/{{userGid}}` | `conn_mod_def::GJ0Bqv9bmow::41O63JzWQdS6lzSBoePVkw` |
| List Users (Across Accessible Workspaces/Organizations) | GET | `/users` | `conn_mod_def::GJ0BrGENMrU::yRZStg70SLu48Hs4hmWI1Q` |
| List Users in a Workspace or Organization | GET | `/workspaces/{{workspaceGid}}/users` | `conn_mod_def::GJ0Brcj0ZZ8::x5RX-m5lQnCFrWkX8VAh4g` |
| Update a User | PUT | `/users/{{userGid}}` | `conn_mod_def::GJ0BrlK3J6Q::l5sEFIZsTa-j_QdnGoc_3w` |
| Update a User in a Workspace or Organization | PUT | `/workspaces/{{workspaceGid}}/users/{{userGid}}` | `conn_mod_def::GJ0BruDsC6s::iJkWhqahQBil3HORvwXrWA` |

### CustomFields

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Custom Field | GET | `/custom_fields/{{customFieldGid}}` | `conn_mod_def::GJ0BQNUxZvo::mrr__O0uSCe-Dj16_JTmOg` |
| Get a Workspace’s Custom Fields | GET | `/workspaces/{{workspaceGid}}/custom_fields` | `conn_mod_def::GJ0BQY_pJOY::at8cHuSOQxKQrNWTODJ8gA` |
| Create a Custom Field (in a Workspace) | POST | `/custom_fields` | `conn_mod_def::GJ0BPx7ZLHk::eFLVc0WuTKqnkAK7O0MP4g` |
| Delete a Custom Field | DELETE | `/custom_fields/{{customFieldGid}}` | `conn_mod_def::GJ0BQDneuUY::vThd-8aeQu-jPv_-EK4-aw` |
| Reorder a Custom Field’s Enum Options | POST | `/custom_fields/{{customFieldGid}}/enum_options/insert` | `conn_mod_def::GJ0BQkHR6vA::DKZ84rA_Qe64GnwmvD9nRg` |

1 more CustomFields actions are available through search.

This lists 90 of 223 actions. For anything not here, call `search_one_platform_actions` with platform `asana`. The full catalog is at https://www.withone.ai/knowledge/asana.

## When a call fails

The error comes from Asana, not from One. A 400 or 422 means your parameters do not match the schema, so re-read the knowledge and fix the field. A 401 or 403 means the connection needs re-authorizing, which no retry will fix. A 404 means the id is not on this account. A 429 means slow down. Never retry a write more than once: the first attempt may have landed.

Full catalog: https://www.withone.ai/knowledge/asana

Integration knowledge by One (withone.ai), licensed under [One-Knowledge-1.0](https://www.withone.ai/licenses/knowledge). Attribution must be preserved in derivative works.

