@mcp-s/connectors 0.0.20261022190708 → 0.0.20261024071613

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"id":"asana","status":"active","internal_status":"tool-works","applications":["asana"],"definition":{"display":{"name":"Asana","description":"Asana is a web and mobile application designed to help teams organize, track, and manage their work.","icon":"asana.svg","website":"https://asana.com","category":"project-management-issue-tracking","docs_url":"https://docs.withwillow.ai/docs/mcp-servers/built-in/asana"},"api":{"base_url":"https://app.asana.com/api/1.0"},"auth":{"methods":{"oauth":{"authUrl":"https://app.asana.com/-/oauth_authorize","tokenUrl":"https://app.asana.com/-/oauth_token","scopes":["default","attachments:read","attachments:write","attachments:delete","custom_fields:read","custom_fields:write","goals:read","openid","email","profile","portfolios:read","portfolios:write","project_templates:read","projects:read","projects:write","projects:delete","stories:read","stories:write","tags:read","tags:write","task_custom_types:read","task_templates:read","tasks:read","tasks:write","tasks:delete","team_memberships:read","teams:read","time_tracking_entries:read","users:read","webhooks:read","webhooks:write","webhooks:delete","workspaces:read","workspaces.typeahead:read"],"defaultScopes":["workspaces:read","projects:read","projects:write","tasks:read","tasks:write","users:read","tags:read","custom_fields:read"],"codeExchangeConfig":{"isForm":true,"modelCredentialsMapping":"{\n \"access_token\": access_token, \n \"expires_at\": $fromMillis($millis() + expires_in * 1000),\n \"refresh_token\": refresh_token,\n \"refresh_token_expires_at\": null,\n \"scope\": scope,\n \"token_type\": token_type\n }","externalIdMapping":"exchangeCodeData.data.gid"}},"apiKey":{"headerName":"Authorization","authorizationMapping":"\"Bearer \" & token"}}},"tools":[{"name":"List Workspaces","description":"Lists all workspaces accessible to the authenticated user","slug":"list-workspaces","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists all workspaces accessible to the authenticated user and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{}},"requiredScopes":["workspaces:read"],"enabled":true,"action":{"path":"/workspaces","method":"GET","mapping":{}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"List Projects","description":"Lists projects in a workspace or team","slug":"list-projects","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists projects in a workspace or team and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace to find projects in"},"team":{"type":"string","description":"The team to find projects in"},"archived":{"type":"boolean","description":"Only return projects whose archived status matches this parameter","default":false}}},"requiredScopes":["projects:read"],"enabled":true,"action":{"path":"/projects","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"team\": arguments.team,\n \"archived\": arguments.archived\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Project","description":"Returns the complete project record for a single project","slug":"get-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the complete project record for a single project and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["projectId"],"properties":{"projectId":{"type":"string","description":"The project ID"}}},"requiredScopes":["projects:read"],"enabled":true,"action":{"path":"/projects/{projectId}","method":"GET","mapping":{"params":"{ \"projectId\": arguments.projectId }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks","description":"Get multiple tasks - Returns the compact task records for some filtered set of tasks. Use one or more of the parameters provided to filter the tasks returned. You must specify a `project` or `tag` if you do not specify `assignee` and `workspace`. For more complex task retrieval, use workspaces/{workspace_gid}/tasks/search.","slug":"get-tasks","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves multiple task records and is read-only, which keeps the risk low.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"assignee":{"type":"string","description":"The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified. Note: If you specify `assignee`, you must also specify the `workspace` to filter on."},"project":{"type":"string","description":"The project to filter tasks on."},"section":{"type":"string","description":"The section to filter tasks on."},"workspace":{"type":"string","description":"The workspace to filter tasks on. Note: If you specify `workspace`, you must also specify the `assignee` to filter on."},"completed_since":{"type":"string","format":"date-time","description":"Only return tasks that are either incomplete or that have been completed since this time."},"modified_since":{"type":"string","format":"date-time","description":"Only return tasks that have been modified since the given time.\n\n*Note: A task is considered \"modified\" if any of its properties\nchange, or associations between it and other objects are modified\n(e.g. a task being added to a project). A task is not considered\nmodified just because another object it is associated with (e.g. a\nsubtask) is modified. Actions that count as modifying the task\ninclude assigning, renaming, completing, and adding stories.*"}}},"enabled":true,"action":{"path":"/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"assignee\": arguments.assignee,\n \"project\": arguments.project,\n \"section\": arguments.section,\n \"workspace\": arguments.workspace,\n \"completed_since\": arguments.completed_since,\n \"modified_since\": arguments.modified_since,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Create Project","description":"Creates a new project in the specified workspace or team","slug":"create-project","ai_risk":{"level":"medium","score":5,"reasoning":"This tool creates a new project in a workspace, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project"},"workspaceId":{"type":"string","description":"The workspace to create the project in"},"teamId":{"type":"string","description":"The team to create the project in"}}},"requiredScopes":["projects:write"],"enabled":true,"action":{"path":"/projects","method":"POST","mapping":{"body":"{\n \"data\": {\n \"name\": arguments.name,\n \"workspace\": arguments.workspaceId,\n \"team\": arguments.teamId\n }\n }"}},"annotations":{"destructiveHint":true}},{"name":"Create Task","description":"Creates a new task in the specified project or workspace","slug":"create-task","ai_risk":{"level":"medium","score":5,"reasoning":"This tool creates a new task in a project or workspace, representing a standard write operation with medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the task"},"projects":{"type":"array","description":"Projects to add the task to","items":{"type":"string","description":"Project ID"}},"workspace":{"type":"string","description":"The workspace to create the task in"},"assignee":{"type":"string","description":"User ID to assign the task to"},"notes":{"type":"string","description":"Task notes"},"due_on":{"type":"string","description":"Due date in YYYY-MM-DD format"}}},"requiredScopes":["tasks:write"],"enabled":true,"action":{"path":"/tasks","method":"POST","mapping":{"body":"{\n \"data\": {\n \"name\": arguments.name,\n \"projects\": arguments.projects,\n \"workspace\": arguments.workspace,\n \"assignee\": arguments.assignee,\n \"notes\": arguments.notes,\n \"due_on\": arguments.due_on\n }\n }"}},"annotations":{"destructiveHint":true}},{"name":"Get Task","description":"Returns the complete task record for a single task","slug":"get-task","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the complete task record for a single task and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string","description":"The task ID"}}},"requiredScopes":["tasks:read"],"enabled":true,"action":{"path":"/tasks/{taskId}","method":"GET","mapping":{"params":"{ \"taskId\": arguments.taskId }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Update Task","description":"Updates an existing task","slug":"update-task","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates an existing task, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string","description":"The task ID"},"name":{"type":"string","description":"Name of the task"},"assignee":{"type":"string","description":"User ID to assign the task to"},"notes":{"type":"string","description":"Task notes"},"due_on":{"type":"string","description":"Due date in YYYY-MM-DD format"},"completed":{"type":"boolean","description":"Whether the task is completed"}}},"requiredScopes":["tasks:write"],"enabled":true,"action":{"path":"/tasks/{taskId}","method":"PUT","mapping":{"params":"{ \"taskId\": arguments.taskId }","body":"{\n \"data\": {\n \"name\": arguments.name,\n \"assignee\": arguments.assignee,\n \"notes\": arguments.notes,\n \"due_on\": arguments.due_on,\n \"completed\": arguments.completed\n }\n }"}},"annotations":{"destructiveHint":true,"idempotentHint":true}},{"name":"Get Sections For Project","description":"Get sections in a project - Returns the compact records for all sections in the specified project.","slug":"get-sections-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves sections in a project and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/sections","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"created_at,name,offset,path,project,project.name,projects,projects.name,uri\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"My User","description":"Get a user - Returns the full user record for the single user with the provided ID.","slug":"my-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the full user record for the authenticated user and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{}},"enabled":true,"action":{"path":"/users/me","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"email,name,photo.image_36x36\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User Task List","description":"Get a user task list","slug":"get-user-task-list","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user task list and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"user_task_list_gid":{"type":"string","description":"Globally unique identifier for the user task list."}},"required":["user_task_list_gid"]},"enabled":true,"action":{"path":"/user_task_lists/{user_task_list_gid}","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"name,owner,workspace\"\n }","params":"{\n \"user_task_list_gid\": arguments.user_task_list_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User Task List For User","description":"Get a user's task list.","slug":"get-user-task-list-for-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user's task list and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace in which to get the user task list."},"user_gid":{"type":"string","description":"A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."}},"required":["workspace","user_gid"]},"enabled":true,"action":{"path":"/users/{user_gid}/user_task_list","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"opt_fields\": \"name,owner,workspace\"\n }","params":"{\n \"user_gid\": arguments.user_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Users","description":"Get multiple users - Returns the user records for all users in all workspaces and organizations accessible to the authenticated user. Accepts an optional workspace ID parameter. Results are sorted by user ID.","slug":"get-users","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves user records for all users in accessible workspaces and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace or organization ID to filter users on."},"team":{"type":"string","description":"The team ID to filter users on."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."}}},"enabled":true,"action":{"path":"/users","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"team\": arguments.team,\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"email,name,offset,path,photo.image_36x36,uri,workspaces,workspaces.name\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User","description":"Get a user","slug":"get-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user record and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"user_gid":{"type":"string","description":"A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."}},"required":["user_gid"]},"enabled":true,"action":{"path":"/users/{user_gid}","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"email,name,photo.image_36x36,workspaces,workspaces.name\"\n }","params":"{\n \"user_gid\": arguments.user_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Users For Workspace","description":"Get users in a workspace or organization","slug":"get-users-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves users in a workspace and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/users","method":"GET","mapping":{"query":"{\n \"offset\": arguments.offset,\n \"opt_fields\": \"email,name,photo.image_36x36,workspaces,workspaces.name\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Project","description":"Get tasks from a project","slug":"get-tasks-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a project and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"completed_since":{"type":"string","description":"Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/tasks","method":"GET","mapping":{"query":"{\n \"completed_since\": arguments.completed_since,\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tags","description":"Get multiple tags - Returns the compact tag records for some filtered set of tags. Use one or more of the parameters provided to filter the tags returned.","slug":"get-tags","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves multiple tags and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"workspace":{"type":"string","description":"The workspace to filter tags on."}}},"enabled":true,"action":{"path":"/tags","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"workspace\": arguments.workspace,\n \"opt_fields\": \"created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Search Tasks For Workspace","description":"Search tasks in a workspace - To mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.","slug":"search-tasks-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool searches tasks in a workspace and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"Performs full-text search on both task name and description"},"resource_subtype":{"type":"string","enum":["default_task","milestone"],"default":"milestone","description":"Filters results by the task's resource_subtype"},"assignee.any":{"type":"string","description":"Comma-separated list of user identifiers"},"projects.any":{"type":"string","description":"Comma-separated list of project IDs"},"sections.any":{"type":"string","description":"Comma-separated list of section or column IDs"},"tags.any":{"type":"string","description":"Comma-separated list of tag IDs"},"teams.any":{"type":"string","description":"Comma-separated list of team IDs"},"followers.any":{"type":"string","description":"Comma-separated list of user identifiers"},"created_by.any":{"type":"string","description":"Comma-separated list of user identifiers"},"assigned_by.any":{"type":"string","description":"Comma-separated list of user identifiers"},"due_on.before":{"type":"string","format":"date","description":"ISO 8601 date string"},"due_on.after":{"type":"string","format":"date","description":"ISO 8601 date string"},"due_at.before":{"type":"string","format":"date-time","description":"ISO 8601 datetime string"},"due_at.after":{"type":"string","format":"date-time","description":"ISO 8601 datetime string"},"is_blocking":{"type":"boolean","description":"Filter to incomplete tasks with dependents"},"is_blocked":{"type":"boolean","description":"Filter to tasks with incomplete dependencies"},"completed":{"type":"boolean","description":"Filter to completed tasks"},"is_subtask":{"type":"boolean","description":"Filter to subtasks"},"sort_by":{"type":"string","enum":["due_date","created_at","completed_at","likes","modified_at"],"default":"modified_at","description":"One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at`"},"sort_ascending":{"type":"boolean","default":false,"description":"Default `false`"},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":false,"action":{"path":"/workspaces/{workspace_gid}/tasks/search","method":"GET","mapping":{"query":"{\n \"text\": arguments.text,\n \"resource_subtype\": arguments.resource_subtype,\n \"assignee.any\": arguments.`assignee.any`,\n \"projects.any\": arguments.`projects.any`,\n \"sections.any\": arguments.`sections.any`,\n \"tags.any\": arguments.`tags.any`,\n \"teams.any\": arguments.`teams.any`,\n \"followers.any\": arguments.`followers.any`,\n \"created_by.any\": arguments.`created_by.any`,\n \"assigned_by.any\": arguments.`assigned_by.any`,\n \"due_on.before\": arguments.`due_on.before`,\n \"due_on.after\": arguments.`due_on.after`,\n \"due_at.before\": arguments.`due_at.before`,\n \"due_at.after\": arguments.`due_at.after`,\n \"is_blocking\": arguments.is_blocking,\n \"is_blocked\": arguments.is_blocked,\n \"completed\": arguments.completed,\n \"is_subtask\": arguments.is_subtask,\n \"sort_by\": arguments.sort_by,\n \"sort_ascending\": arguments.sort_ascending,\n \"opt_fields\": \"name,permalink_url,assignee.name,completed,completed_at,created_at,modified_at,due_on,start_on,memberships.project.name,memberships.section.name,workspace.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.number_value,custom_fields.date_value.date,custom_fields.people_value.name,parent.name\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Task For Custom ID","description":"Get a task for a given custom ID - Returns a task given a custom ID shortcode.","slug":"get-task-for-custom-id","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a task for a given custom ID and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."},"custom_id":{"type":"string","description":"Generated custom ID for a task."}},"required":["workspace_gid","custom_id"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/tasks/custom_id/{custom_id}","method":"GET","mapping":{"params":"{\n \"workspace_gid\": arguments.workspace_gid,\n \"custom_id\": arguments.custom_id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Section","description":"Get tasks from a section - Returns the compact section records for all tasks within the given section.","slug":"get-tasks-for-section","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a section and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"completed_since":{"type":"string","description":"Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"},"section_gid":{"type":"string","description":"The globally unique identifier for the section."}},"required":["section_gid"]},"enabled":true,"action":{"path":"/sections/{section_gid}/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"completed_since\": arguments.completed_since,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"section_gid\": arguments.section_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Tag","description":"Get tasks from a tag - Returns the compact task records for all tasks with the given tag. Tasks can have more than one tag at a time.","slug":"get-tasks-for-tag","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a tag and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"tag_gid":{"type":"string","description":"Globally unique identifier for the tag."}},"required":["tag_gid"]},"enabled":true,"action":{"path":"/tags/{tag_gid}/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"tag_gid\": arguments.tag_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Custom Fields For Workspace","description":"Get a workspace's custom fields - Returns a list of the compact representation of all of the custom fields in a workspace.","slug":"get-custom-fields-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a workspace's custom fields and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"opt_fields":{"type":"array","items":{"type":"string","enum":["asana_created_field","created_by","created_by.name","currency_code","custom_label","custom_label_position","date_value","date_value.date","date_value.date_time","default_access_level","description","display_value","enabled","enum_options","enum_options.color","enum_options.enabled","enum_options.name","enum_value","enum_value.color","enum_value.enabled","enum_value.name","format","has_notifications_enabled","id_prefix","is_formula_field","is_global_to_workspace","is_value_read_only","multi_enum_values","multi_enum_values.color","multi_enum_values.enabled","multi_enum_values.name","name","number_value","offset","path","people_value","people_value.name","precision","privacy_setting","representation_type","resource_subtype","text_value","type","uri"]},"description":"This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/custom_fields","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,description,type,format,is_formula_field,custom_label,custom_label_position,display_value,is_value_read_only,default_access_level,is_global_to_workspace,enum_options.name,enum_options.enabled,enum_options.color,multi_enum_values.name,multi_enum_values.enabled,multi_enum_values.color\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Custom Field Settings For Project","description":"Get a project's custom fields - Returns a list of all of the custom fields settings on a project, in compact form. Note that, as in all queries to collections which return compact representation, `opt_fields` can be used to include more data than is returned in the compact representation. See the [documentation for input/output options](https://developers.asana.com/docs/inputoutput-options) for more information.","slug":"get-custom-field-settings-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a project's custom fields settings and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/custom_field_settings","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"custom_field.name,custom_field.type,custom_field.description,custom_field.format,custom_field.custom_label,custom_field.custom_label_position,custom_field.display_value,custom_field.is_value_read_only,custom_field.default_access_level,custom_field.enum_options.name,custom_field.enum_options.enabled,custom_field.enum_options.color,custom_field.multi_enum_values.name,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.color,is_important\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}}]}}
1
+ {"id":"asana","status":"active","internal_status":"tool-works","applications":["asana"],"definition":{"display":{"name":"Asana","description":"Asana is a web and mobile application designed to help teams organize, track, and manage their work.","icon":"asana.svg","website":"https://asana.com","category":"project-management-issue-tracking","docs_url":"https://docs.withwillow.ai/docs/mcp-servers/built-in/asana"},"api":{"base_url":"https://app.asana.com/api/1.0"},"auth":{"methods":{"oauth":{"authUrl":"https://app.asana.com/-/oauth_authorize","tokenUrl":"https://app.asana.com/-/oauth_token","scopes":["default","attachments:read","attachments:write","attachments:delete","custom_fields:read","custom_fields:write","goals:read","openid","email","profile","portfolios:read","portfolios:write","project_templates:read","projects:read","projects:write","projects:delete","stories:read","stories:write","tags:read","tags:write","task_custom_types:read","task_templates:read","tasks:read","tasks:write","tasks:delete","team_memberships:read","teams:read","time_tracking_entries:read","users:read","webhooks:read","webhooks:write","webhooks:delete","workspaces:read","workspaces.typeahead:read"],"defaultScopes":["workspaces:read","projects:read","projects:write","tasks:read","tasks:write","users:read","tags:read","custom_fields:read"],"scopeTemplates":[{"id":"read-only","name":"Read-only","description":"Read workspaces, teams, projects, sections, tasks, comments, tags, custom fields and users. Can't create or change anything.","scopes":["workspaces:read","teams:read","projects:read","tasks:read","stories:read","tags:read","custom_fields:read","users:read"]},{"id":"full-access","name":"Full access","description":"Asana's full permissions (the `default` scope): everything the user can do in Asana, including deletes.","scopes":["default"]}],"codeExchangeConfig":{"isForm":true,"modelCredentialsMapping":"{\n \"access_token\": access_token, \n \"expires_at\": $fromMillis($millis() + expires_in * 1000),\n \"refresh_token\": refresh_token,\n \"refresh_token_expires_at\": null,\n \"scope\": scope,\n \"token_type\": token_type\n }","externalIdMapping":"exchangeCodeData.data.gid"}},"apiKey":{"headerName":"Authorization","authorizationMapping":"\"Bearer \" & token"}}},"tools":[{"name":"List Workspaces","description":"Lists all workspaces accessible to the authenticated user","slug":"list-workspaces","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists all workspaces accessible to the authenticated user and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{}},"requiredScopes":["workspaces:read"],"enabled":true,"action":{"path":"/workspaces","method":"GET","mapping":{}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"List Projects","description":"Lists projects in a workspace or team","slug":"list-projects","ai_risk":{"level":"low","score":1,"reasoning":"This tool lists projects in a workspace or team and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace to find projects in"},"team":{"type":"string","description":"The team to find projects in"},"archived":{"type":"boolean","description":"Only return projects whose archived status matches this parameter","default":false}}},"requiredScopes":["projects:read"],"enabled":true,"action":{"path":"/projects","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"team\": arguments.team,\n \"archived\": arguments.archived\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Project","description":"Returns the complete project record for a single project","slug":"get-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the complete project record for a single project and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["projectId"],"properties":{"projectId":{"type":"string","description":"The project ID"}}},"requiredScopes":["projects:read"],"enabled":true,"action":{"path":"/projects/{projectId}","method":"GET","mapping":{"params":"{ \"projectId\": arguments.projectId }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks","description":"Get multiple tasks - Returns the compact task records for some filtered set of tasks. Use one or more of the parameters provided to filter the tasks returned. You must specify a `project` or `tag` if you do not specify `assignee` and `workspace`. For more complex task retrieval, use workspaces/{workspace_gid}/tasks/search.","slug":"get-tasks","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves multiple task records and is read-only, which keeps the risk low.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"assignee":{"type":"string","description":"The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified. Note: If you specify `assignee`, you must also specify the `workspace` to filter on."},"project":{"type":"string","description":"The project to filter tasks on."},"section":{"type":"string","description":"The section to filter tasks on."},"workspace":{"type":"string","description":"The workspace to filter tasks on. Note: If you specify `workspace`, you must also specify the `assignee` to filter on."},"completed_since":{"type":"string","format":"date-time","description":"Only return tasks that are either incomplete or that have been completed since this time."},"modified_since":{"type":"string","format":"date-time","description":"Only return tasks that have been modified since the given time.\n\n*Note: A task is considered \"modified\" if any of its properties\nchange, or associations between it and other objects are modified\n(e.g. a task being added to a project). A task is not considered\nmodified just because another object it is associated with (e.g. a\nsubtask) is modified. Actions that count as modifying the task\ninclude assigning, renaming, completing, and adding stories.*"}}},"enabled":true,"action":{"path":"/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"assignee\": arguments.assignee,\n \"project\": arguments.project,\n \"section\": arguments.section,\n \"workspace\": arguments.workspace,\n \"completed_since\": arguments.completed_since,\n \"modified_since\": arguments.modified_since,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Create Project","description":"Creates a new project in the specified workspace or team","slug":"create-project","ai_risk":{"level":"medium","score":5,"reasoning":"This tool creates a new project in a workspace, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project"},"workspaceId":{"type":"string","description":"The workspace to create the project in"},"teamId":{"type":"string","description":"The team to create the project in"}}},"requiredScopes":["projects:write"],"enabled":true,"action":{"path":"/projects","method":"POST","mapping":{"body":"{\n \"data\": {\n \"name\": arguments.name,\n \"workspace\": arguments.workspaceId,\n \"team\": arguments.teamId\n }\n }"}},"annotations":{"destructiveHint":true}},{"name":"Create Task","description":"Creates a new task in the specified project or workspace","slug":"create-task","ai_risk":{"level":"medium","score":5,"reasoning":"This tool creates a new task in a project or workspace, representing a standard write operation with medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the task"},"projects":{"type":"array","description":"Projects to add the task to","items":{"type":"string","description":"Project ID"}},"workspace":{"type":"string","description":"The workspace to create the task in"},"assignee":{"type":"string","description":"User ID to assign the task to"},"notes":{"type":"string","description":"Task notes"},"due_on":{"type":"string","description":"Due date in YYYY-MM-DD format"}}},"requiredScopes":["tasks:write"],"enabled":true,"action":{"path":"/tasks","method":"POST","mapping":{"body":"{\n \"data\": {\n \"name\": arguments.name,\n \"projects\": arguments.projects,\n \"workspace\": arguments.workspace,\n \"assignee\": arguments.assignee,\n \"notes\": arguments.notes,\n \"due_on\": arguments.due_on\n }\n }"}},"annotations":{"destructiveHint":true}},{"name":"Get Task","description":"Returns the complete task record for a single task","slug":"get-task","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the complete task record for a single task and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string","description":"The task ID"}}},"requiredScopes":["tasks:read"],"enabled":true,"action":{"path":"/tasks/{taskId}","method":"GET","mapping":{"params":"{ \"taskId\": arguments.taskId }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Update Task","description":"Updates an existing task","slug":"update-task","ai_risk":{"level":"medium","score":5,"reasoning":"This tool updates an existing task, which is a standard write operation and carries medium risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string","description":"The task ID"},"name":{"type":"string","description":"Name of the task"},"assignee":{"type":"string","description":"User ID to assign the task to"},"notes":{"type":"string","description":"Task notes"},"due_on":{"type":"string","description":"Due date in YYYY-MM-DD format"},"completed":{"type":"boolean","description":"Whether the task is completed"}}},"requiredScopes":["tasks:write"],"enabled":true,"action":{"path":"/tasks/{taskId}","method":"PUT","mapping":{"params":"{ \"taskId\": arguments.taskId }","body":"{\n \"data\": {\n \"name\": arguments.name,\n \"assignee\": arguments.assignee,\n \"notes\": arguments.notes,\n \"due_on\": arguments.due_on,\n \"completed\": arguments.completed\n }\n }"}},"annotations":{"destructiveHint":true,"idempotentHint":true}},{"name":"Get Sections For Project","description":"Get sections in a project - Returns the compact records for all sections in the specified project.","slug":"get-sections-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves sections in a project and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/sections","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"created_at,name,offset,path,project,project.name,projects,projects.name,uri\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"My User","description":"Get a user - Returns the full user record for the single user with the provided ID.","slug":"my-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool returns the full user record for the authenticated user and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{}},"enabled":true,"action":{"path":"/users/me","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"email,name,photo.image_36x36\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User Task List","description":"Get a user task list","slug":"get-user-task-list","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user task list and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"user_task_list_gid":{"type":"string","description":"Globally unique identifier for the user task list."}},"required":["user_task_list_gid"]},"enabled":true,"action":{"path":"/user_task_lists/{user_task_list_gid}","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"name,owner,workspace\"\n }","params":"{\n \"user_task_list_gid\": arguments.user_task_list_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User Task List For User","description":"Get a user's task list.","slug":"get-user-task-list-for-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user's task list and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace in which to get the user task list."},"user_gid":{"type":"string","description":"A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."}},"required":["workspace","user_gid"]},"enabled":true,"action":{"path":"/users/{user_gid}/user_task_list","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"opt_fields\": \"name,owner,workspace\"\n }","params":"{\n \"user_gid\": arguments.user_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Users","description":"Get multiple users - Returns the user records for all users in all workspaces and organizations accessible to the authenticated user. Accepts an optional workspace ID parameter. Results are sorted by user ID.","slug":"get-users","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves user records for all users in accessible workspaces and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"workspace":{"type":"string","description":"The workspace or organization ID to filter users on."},"team":{"type":"string","description":"The team ID to filter users on."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."}}},"enabled":true,"action":{"path":"/users","method":"GET","mapping":{"query":"{\n \"workspace\": arguments.workspace,\n \"team\": arguments.team,\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"email,name,offset,path,photo.image_36x36,uri,workspaces,workspaces.name\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get User","description":"Get a user","slug":"get-user","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a user record and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"user_gid":{"type":"string","description":"A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."}},"required":["user_gid"]},"enabled":true,"action":{"path":"/users/{user_gid}","method":"GET","mapping":{"query":"{\n \"opt_fields\": \"email,name,photo.image_36x36,workspaces,workspaces.name\"\n }","params":"{\n \"user_gid\": arguments.user_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Users For Workspace","description":"Get users in a workspace or organization","slug":"get-users-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves users in a workspace and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["users:read"],"inputSchema":{"type":"object","properties":{"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/users","method":"GET","mapping":{"query":"{\n \"offset\": arguments.offset,\n \"opt_fields\": \"email,name,photo.image_36x36,workspaces,workspaces.name\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Project","description":"Get tasks from a project","slug":"get-tasks-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a project and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"completed_since":{"type":"string","description":"Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/tasks","method":"GET","mapping":{"query":"{\n \"completed_since\": arguments.completed_since,\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tags","description":"Get multiple tags - Returns the compact tag records for some filtered set of tags. Use one or more of the parameters provided to filter the tags returned.","slug":"get-tags","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves multiple tags and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"workspace":{"type":"string","description":"The workspace to filter tags on."}}},"enabled":true,"action":{"path":"/tags","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"workspace\": arguments.workspace,\n \"opt_fields\": \"created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name\"\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Search Tasks For Workspace","description":"Search tasks in a workspace - To mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.","slug":"search-tasks-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool searches tasks in a workspace and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"Performs full-text search on both task name and description"},"resource_subtype":{"type":"string","enum":["default_task","milestone"],"default":"milestone","description":"Filters results by the task's resource_subtype"},"assignee.any":{"type":"string","description":"Comma-separated list of user identifiers"},"projects.any":{"type":"string","description":"Comma-separated list of project IDs"},"sections.any":{"type":"string","description":"Comma-separated list of section or column IDs"},"tags.any":{"type":"string","description":"Comma-separated list of tag IDs"},"teams.any":{"type":"string","description":"Comma-separated list of team IDs"},"followers.any":{"type":"string","description":"Comma-separated list of user identifiers"},"created_by.any":{"type":"string","description":"Comma-separated list of user identifiers"},"assigned_by.any":{"type":"string","description":"Comma-separated list of user identifiers"},"due_on.before":{"type":"string","format":"date","description":"ISO 8601 date string"},"due_on.after":{"type":"string","format":"date","description":"ISO 8601 date string"},"due_at.before":{"type":"string","format":"date-time","description":"ISO 8601 datetime string"},"due_at.after":{"type":"string","format":"date-time","description":"ISO 8601 datetime string"},"is_blocking":{"type":"boolean","description":"Filter to incomplete tasks with dependents"},"is_blocked":{"type":"boolean","description":"Filter to tasks with incomplete dependencies"},"completed":{"type":"boolean","description":"Filter to completed tasks"},"is_subtask":{"type":"boolean","description":"Filter to subtasks"},"sort_by":{"type":"string","enum":["due_date","created_at","completed_at","likes","modified_at"],"default":"modified_at","description":"One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at`"},"sort_ascending":{"type":"boolean","default":false,"description":"Default `false`"},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":false,"action":{"path":"/workspaces/{workspace_gid}/tasks/search","method":"GET","mapping":{"query":"{\n \"text\": arguments.text,\n \"resource_subtype\": arguments.resource_subtype,\n \"assignee.any\": arguments.`assignee.any`,\n \"projects.any\": arguments.`projects.any`,\n \"sections.any\": arguments.`sections.any`,\n \"tags.any\": arguments.`tags.any`,\n \"teams.any\": arguments.`teams.any`,\n \"followers.any\": arguments.`followers.any`,\n \"created_by.any\": arguments.`created_by.any`,\n \"assigned_by.any\": arguments.`assigned_by.any`,\n \"due_on.before\": arguments.`due_on.before`,\n \"due_on.after\": arguments.`due_on.after`,\n \"due_at.before\": arguments.`due_at.before`,\n \"due_at.after\": arguments.`due_at.after`,\n \"is_blocking\": arguments.is_blocking,\n \"is_blocked\": arguments.is_blocked,\n \"completed\": arguments.completed,\n \"is_subtask\": arguments.is_subtask,\n \"sort_by\": arguments.sort_by,\n \"sort_ascending\": arguments.sort_ascending,\n \"opt_fields\": \"name,permalink_url,assignee.name,completed,completed_at,created_at,modified_at,due_on,start_on,memberships.project.name,memberships.section.name,workspace.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.number_value,custom_fields.date_value.date,custom_fields.people_value.name,parent.name\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Task For Custom ID","description":"Get a task for a given custom ID - Returns a task given a custom ID shortcode.","slug":"get-task-for-custom-id","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a task for a given custom ID and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."},"custom_id":{"type":"string","description":"Generated custom ID for a task."}},"required":["workspace_gid","custom_id"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/tasks/custom_id/{custom_id}","method":"GET","mapping":{"params":"{\n \"workspace_gid\": arguments.workspace_gid,\n \"custom_id\": arguments.custom_id\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Section","description":"Get tasks from a section - Returns the compact section records for all tasks within the given section.","slug":"get-tasks-for-section","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a section and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"completed_since":{"type":"string","description":"Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"},"section_gid":{"type":"string","description":"The globally unique identifier for the section."}},"required":["section_gid"]},"enabled":true,"action":{"path":"/sections/{section_gid}/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"completed_since\": arguments.completed_since,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"section_gid\": arguments.section_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Tasks For Tag","description":"Get tasks from a tag - Returns the compact task records for all tasks with the given tag. Tasks can have more than one tag at a time.","slug":"get-tasks-for-tag","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves tasks from a tag and is read-only, making it low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"requiredScopes":["tasks:read"],"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"tag_gid":{"type":"string","description":"Globally unique identifier for the tag."}},"required":["tag_gid"]},"enabled":true,"action":{"path":"/tags/{tag_gid}/tasks","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,assignee.name,completed,completed_at,due_on,start_on,created_at,modified_at,permalink_url,html_notes,notes,created_by.name,memberships.project.name,memberships.section.name,workspace.name,parent.name,dependencies,dependents,num_subtasks,num_likes,likes.user.name,followers.name,custom_fields.name,custom_fields.type,custom_fields.display_value,custom_fields.enum_value.name,custom_fields.people_value.name,custom_fields.date_value.date,custom_fields.number_value,custom_fields.text_value\"\n }","params":"{\n \"tag_gid\": arguments.tag_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Custom Fields For Workspace","description":"Get a workspace's custom fields - Returns a list of the compact representation of all of the custom fields in a workspace.","slug":"get-custom-fields-for-workspace","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a workspace's custom fields and is read-only, posing minimal risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"opt_fields":{"type":"array","items":{"type":"string","enum":["asana_created_field","created_by","created_by.name","currency_code","custom_label","custom_label_position","date_value","date_value.date","date_value.date_time","default_access_level","description","display_value","enabled","enum_options","enum_options.color","enum_options.enabled","enum_options.name","enum_value","enum_value.color","enum_value.enabled","enum_value.name","format","has_notifications_enabled","id_prefix","is_formula_field","is_global_to_workspace","is_value_read_only","multi_enum_values","multi_enum_values.color","multi_enum_values.enabled","multi_enum_values.name","name","number_value","offset","path","people_value","people_value.name","precision","privacy_setting","representation_type","resource_subtype","text_value","type","uri"]},"description":"This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."},"workspace_gid":{"type":"string","description":"Globally unique identifier for the workspace or organization."}},"required":["workspace_gid"]},"enabled":true,"action":{"path":"/workspaces/{workspace_gid}/custom_fields","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"name,description,type,format,is_formula_field,custom_label,custom_label_position,display_value,is_value_read_only,default_access_level,is_global_to_workspace,enum_options.name,enum_options.enabled,enum_options.color,multi_enum_values.name,multi_enum_values.enabled,multi_enum_values.color\"\n }","params":"{\n \"workspace_gid\": arguments.workspace_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}},{"name":"Get Custom Field Settings For Project","description":"Get a project's custom fields - Returns a list of all of the custom fields settings on a project, in compact form. Note that, as in all queries to collections which return compact representation, `opt_fields` can be used to include more data than is returned in the compact representation. See the [documentation for input/output options](https://developers.asana.com/docs/inputoutput-options) for more information.","slug":"get-custom-field-settings-for-project","ai_risk":{"level":"low","score":1,"reasoning":"This tool retrieves a project's custom fields settings and is read-only, thus low risk.","calculated_at":"2026-05-22T09:56:02.478Z"},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."},"offset":{"type":"string","description":"Offset token. An offset to the next page returned by the API. You can only pass in an offset that was returned to you via a previously paginated request."},"project_gid":{"type":"string","description":"Globally unique identifier for the project."}},"required":["project_gid"]},"enabled":true,"action":{"path":"/projects/{project_gid}/custom_field_settings","method":"GET","mapping":{"query":"{\n \"limit\": arguments.limit,\n \"offset\": arguments.offset,\n \"opt_fields\": \"custom_field.name,custom_field.type,custom_field.description,custom_field.format,custom_field.custom_label,custom_field.custom_label_position,custom_field.display_value,custom_field.is_value_read_only,custom_field.default_access_level,custom_field.enum_options.name,custom_field.enum_options.enabled,custom_field.enum_options.color,custom_field.multi_enum_values.name,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.color,is_important\"\n }","params":"{\n \"project_gid\": arguments.project_gid\n }"}},"annotations":{"readOnlyHint":true,"idempotentHint":true}}]}}