MCP Server for Asana
Provides comprehensive access to Asana's task management API, enabling users to list workspaces, search and manage projects, create/update tasks, work with task dependencies, manage subtasks, add comments, organize sections, handle custom fields, and retrieve project hierarchies.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server for Asanalist all tasks assigned to me in the Q4 Planning project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for Asana
This Model Context Protocol server implementation of Asana allows you to talk to Asana API from MCP Client such as Anthropic's Claude Desktop Application, and many more.
More details on MCP here:
Usage
In the AI tool of your choice (ex: Claude Desktop) ask something about asana tasks, projects, workspaces, and/or comments. Mentioning the word "asana" will increase the chance of having the LLM pick the right tool.
Example:
How many unfinished asana tasks do we have in our Sprint 30 project?
Another example:

Related MCP server: Asana MCP Server
Working with Custom Fields
When updating or creating tasks with custom fields, use the following format:
asana_update_task({
task_id: "TASK_ID",
custom_fields: {
"custom_field_gid": value // The value format depends on the field type
}
})The value format varies by field type:
Enum fields: Use the
enum_option.gidof the option (NOT the display name)Text fields: Use a string
Number fields: Use a number
Date fields: Use a string in YYYY-MM-DD format
Multi-enum fields: Use an array of enum option GIDs
Finding Custom Field GIDs
To find the GIDs of custom fields and their enum options:
Use
asana_get_taskwith theopt_fieldsparameter set to include custom fields:asana_get_task({ task_id: "TASK_ID", opt_fields: "custom_fields,custom_fields.enum_options" })In the response, look for the
custom_fieldsarray. Each custom field will have:gid: The unique identifier for the custom fieldname: The display name of the custom fieldresource_subtype: The type of custom field (text, number, enum, etc.)For enum fields, examine the
enum_optionsarray to find the GID of each option
Example: Updating an Enum Custom Field
// First, get the task with custom fields
const taskDetails = asana_get_task({
task_id: "1234567890",
opt_fields: "custom_fields,custom_fields.enum_options"
});
// Find the custom field GID and enum option GID
const priorityFieldGid = "11112222"; // From taskDetails.custom_fields
const highPriorityOptionGid = "33334444"; // From the enum_options of the priority field
// Update the task with the custom field
asana_update_task({
task_id: "1234567890",
custom_fields: {
[priorityFieldGid]: highPriorityOptionGid
}
});Tools
asana_list_workspacesList all available workspaces in Asana
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of workspaces
Note: If DEFAULT_WORKSPACE_ID is set, this will only return that workspace instead of fetching all workspaces
asana_search_projectsSearch for projects in Asana using name pattern matching
Required input:
name_pattern (string): Regular expression pattern to match project names
Optional input:
workspace (string): The workspace to search in (optional if DEFAULT_WORKSPACE_ID is set)
team (string): The team to filter projects on
archived (boolean): Only return archived projects (default: false)
limit (number): Results per page (1-100)
offset (string): Pagination offset token
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of matching projects
Note: Either workspace or team must be specified if DEFAULT_WORKSPACE_ID is not set
asana_search_tasksSearch tasks in a workspace with advanced filtering options
Required input:
workspace (string): The workspace to search in (optional if DEFAULT_WORKSPACE_ID is set)
Optional input:
text (string): Text to search for in task names and descriptions
resource_subtype (string): Filter by task subtype (e.g. milestone)
completed (boolean): Filter for completed tasks
is_subtask (boolean): Filter for subtasks
has_attachment (boolean): Filter for tasks with attachments
is_blocked (boolean): Filter for tasks with incomplete dependencies
is_blocking (boolean): Filter for incomplete tasks with dependents
assignee, projects, sections, tags, teams, and many other advanced filters
sort_by (string): Sort by due_date, created_at, completed_at, likes, modified_at (default: modified_at)
sort_ascending (boolean): Sort in ascending order (default: false)
opt_fields (string): Comma-separated list of optional fields to include
custom_fields (object): Object containing custom field filters
Returns: List of matching tasks
asana_get_taskGet detailed information about a specific task
Required input:
task_id (string): The task ID to retrieve
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Detailed task information
asana_create_taskCreate a new task in a project
Required input:
project_id (string): The project to create the task in
name (string): Name of the task
Optional input:
notes (string): Description of the task
html_notes (string): HTML-like formatted description of the task
due_on (string): Due date in YYYY-MM-DD format
assignee (string): Assignee (can be 'me' or a user ID)
followers (array of strings): Array of user IDs to add as followers
parent (string): The parent task ID to set this task under
projects (array of strings): Array of project IDs to add this task to
resource_subtype (string): The type of the task (default_task or milestone)
custom_fields (object): Object mapping custom field GID strings to their values
Returns: Created task information
asana_get_task_storiesGet comments and stories for a specific task
Required input:
task_id (string): The task ID to get stories for
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of task stories/comments
asana_update_taskUpdate an existing task's details
Required input:
task_id (string): The task ID to update
Optional input:
name (string): New name for the task
notes (string): New description for the task
due_on (string): New due date in YYYY-MM-DD format
assignee (string): New assignee (can be 'me' or a user ID)
completed (boolean): Mark task as completed or not
resource_subtype (string): The type of the task (default_task or milestone)
custom_fields (object): Object mapping custom field GID strings to their values
Returns: Updated task information
asana_get_projectGet detailed information about a specific project
Required input:
project_id (string): The project ID to retrieve
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Detailed project information
asana_get_project_task_countsGet the number of tasks in a project
Required input:
project_id (string): The project ID to get task counts for
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Task count information
asana_get_project_sectionsGet sections in a project
Required input:
project_id (string): The project ID to get sections for
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of project sections
asana_create_task_storyCreate a comment or story on a task
Required input:
task_id (string): The task ID to add the story to
text (string): The text content of the story/comment
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Created story information
asana_add_task_dependenciesSet dependencies for a task
Required input:
task_id (string): The task ID to add dependencies to
dependencies (array of strings): Array of task IDs that this task depends on
Returns: Updated task dependencies
asana_add_task_dependentsSet dependents for a task (tasks that depend on this task)
Required input:
task_id (string): The task ID to add dependents to
dependents (array of strings): Array of task IDs that depend on this task
Returns: Updated task dependents
asana_create_subtaskCreate a new subtask for an existing task
Required input:
parent_task_id (string): The parent task ID to create the subtask under
name (string): Name of the subtask
Optional input:
notes (string): Description of the subtask
due_on (string): Due date in YYYY-MM-DD format
assignee (string): Assignee (can be 'me' or a user ID)
opt_fields (string): Comma-separated list of optional fields to include
Returns: Created subtask information
asana_add_followers_to_taskAdd followers to a task
Required input:
task_id (string): The task ID to add followers to
followers (array of strings): Array of user IDs to add as followers to the task
Returns: Updated task information
asana_get_multiple_tasks_by_gidGet detailed information about multiple tasks by their GIDs (maximum 25 tasks)
Required input:
task_ids (array of strings or comma-separated string): Task GIDs to retrieve (max 25)
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of detailed task information
asana_get_project_statusGet a project status update
Required input:
project_status_gid (string): The project status GID to retrieve
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Project status information
asana_get_project_statusesGet all status updates for a project
Required input:
project_gid (string): The project GID to get statuses for
Optional input:
limit (number): Results per page (1-100)
offset (string): Pagination offset token
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of project status updates
asana_create_project_statusCreate a new status update for a project
Required input:
project_gid (string): The project GID to create the status for
text (string): The text content of the status update
Optional input:
color (string): The color of the status (green, yellow, red)
title (string): The title of the status update
html_text (string): HTML formatted text for the status update
opt_fields (string): Comma-separated list of optional fields to include
Returns: Created project status information
asana_delete_project_statusDelete a project status update
Required input:
project_status_gid (string): The project status GID to delete
Returns: Deletion confirmation
asana_set_parent_for_taskSet the parent of a task and position the subtask within the other subtasks of that parent
Required input:
task_id (string): The task ID to operate on
parent (string): The new parent of the task, or null for no parent
Optional input:
insert_after (string): A subtask of the parent to insert the task after, or null to insert at the beginning of the list
insert_before (string): A subtask of the parent to insert the task before, or null to insert at the end of the list
opt_fields (string): Comma-separated list of optional fields to include
Returns: Updated task information
asana_get_tasks_for_tagGet tasks for a specific tag
Required input:
tag_gid (string): The tag GID to retrieve tasks for
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
opt_pretty (boolean): Provides the response in a 'pretty' format
limit (integer): The number of objects to return per page. The value must be between 1 and 100.
offset (string): An offset to the next page returned by the API.
Returns: List of tasks for the specified tag
asana_get_tags_for_workspaceGet tags in a workspace
Required input:
workspace_gid (string): Globally unique identifier for the workspace or organization (optional if DEFAULT_WORKSPACE_ID is set)
Optional input:
limit (integer): Results per page. The number of objects to return per page. The value must be between 1 and 100.
offset (string): Offset token. An offset to the next page returned by the API.
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of tags in the workspace
asana_create_section_for_projectCreate a new section in a project
Required input:
project_id (string): The project ID to create the section in
name (string): Name of the section to create
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Created section information
asana_add_task_to_sectionAdd a task to a specific section in a project
Required input:
section_id (string): The section ID to add the task to
task_id (string): The task ID to add to the section
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: Operation result
asana_create_projectCreate a new project in a workspace
Required input:
workspace_id (string): The workspace ID to create the project in (optional if DEFAULT_WORKSPACE_ID is set)
name (string): Name of the project to create
team_id (string): REQUIRED for organization workspaces - The team GID to share the project with
Optional input:
public (boolean): Whether the project is public to the organization (default: false)
archived (boolean): Whether the project is archived (default: false)
color (string): Color of the project (light-green, light-orange, light-blue, etc.)
layout (string): The layout of the project (board, list, timeline, or calendar)
default_view (string): The default view of the project (list, board, calendar, timeline, or gantt)
due_on (string): The date on which this project is due (YYYY-MM-DD format)
start_on (string): The day on which work for this project begins (YYYY-MM-DD format)
notes (string): Free-form textual information associated with the project
opt_fields (string): Comma-separated list of optional fields to include
Returns: Created project information
asana_get_teams_for_userGet teams to which the user has access
Required input:
user_gid (string): The user GID to get teams for. Use 'me' to get teams for the current user.
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of teams the user has access to
asana_get_teams_for_workspaceGet teams in a workspace
Required input:
workspace_gid (string): The workspace GID to get teams for (optional if DEFAULT_WORKSPACE_ID is set)
Optional input:
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of teams in the workspace
asana_list_workspace_usersGet users in a workspace
Required input:
workspace_id (string): The workspace ID to get users for (optional if DEFAULT_WORKSPACE_ID is set)
Optional input:
limit (integer): Results per page (1-100)
offset (string): Pagination offset token
opt_fields (string): Comma-separated list of optional fields to include (defaults to "name,email")
auto_paginate (boolean): Whether to automatically fetch all pages
max_pages (integer): Maximum number of pages to fetch when auto_paginate is true
Returns: List of users in the workspace
asana_get_project_hierarchyGet the complete hierarchical structure of an Asana project, including sections, tasks, and subtasks
Required input:
project_id (string): The project ID to get hierarchy for
Optional input:
include_completed_tasks (boolean): Include completed tasks (default: false)
include_subtasks (boolean): Include subtasks for each task (default: true)
include_completed_subtasks (boolean): Include completed subtasks (default: follows include_completed_tasks)
max_subtask_depth (number): Maximum depth of subtasks to retrieve (default: 1)
opt_fields_tasks (string): Optional fields for tasks
opt_fields_subtasks (string): Optional fields for subtasks
opt_fields_sections (string): Optional fields for sections
opt_fields_project (string): Optional fields for project
limit (number): Max results per page (1-100)
offset (string): Pagination token from previous response
auto_paginate (boolean): Whether to automatically fetch all pages
max_pages (number): Maximum pages to fetch when auto_paginate is true
Returns: Hierarchical project structure with statistics
asana_get_attachments_for_objectList attachments for a specific object (task, project, etc.)
Required input:
object_gid (string): The object GID to retrieve attachments for
Optional input:
limit (number): Results per page (1-100)
offset (string): Pagination offset token
opt_fields (string): Comma-separated list of optional fields to include
Returns: List of attachments
asana_upload_attachment_for_objectUpload a local file as attachment to a task or other object
Required input:
object_gid (string): The object GID to attach the file to
file_path (string): Path to the local file to upload
Optional input:
file_name (string): Custom file name
file_type (string): MIME type of the uploaded file
Returns: Metadata of the uploaded attachment
asana_download_attachmentDownload an attachment to a local directory
Required input:
attachment_gid (string): The attachment GID to download
Optional input:
output_dir (string): Directory to save the file (default: ~/downloads)
Returns: Path and MIME type of the downloaded file
Prompts
task-summaryGet a summary and status update for a task based on its notes, custom fields and comments
Required input:
task_id (string): The task ID to get summary for
Returns: A detailed prompt with instructions for generating a task summary
Resources
None
Setup
Create an Asana account:
Visit the Asana.
Click "Sign up".
Retrieve the Asana Access Token:
You can generate a personal access token from the Asana developer console.
More details here: https://developers.asana.com/docs/personal-access-token
Optional: Get your default workspace ID:
If you primarily work with one workspace, you can set a default workspace ID.
Use the Asana API to list your workspaces, or go to your workspace in Asana and copy the ID from the URL.
When you set a default workspace ID, you won't need to specify the workspace for each API call.
Without a default workspace, the server will call
asana_list_workspacesto get the list of available workspaces.
Configure Claude Desktop: Add the following to your
claude_desktop_config.json:{ "mcpServers": { "asana": { "command": "npx", "args": ["-y", "@cristip73/mcp-server-asana"], "env": { "ASANA_ACCESS_TOKEN": "your-asana-access-token", "DEFAULT_WORKSPACE_ID": "your-default-workspace-id" } } } }
Troubleshooting
If you encounter permission errors:
Ensure the asana plan you have allows API access
Confirm the access token and configuration are correctly set in
claude_desktop_config.json.
Contributing
Clone this repo and start hacking.
Test it locally with the MCP Inspector
If you want to test your changes, you can use the MCP Inspector like this:
npm run inspectorThis will expose the client to port 5173 and server to port 3000.
If those ports are already used by something else, you can use:
CLIENT_PORT=5009 SERVER_PORT=3009 npm run inspectorLicense
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Available Tools
41 toolsasana_add_followers_for_projectC
Add followers to a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to add followers to | |
| followers | Yes | Array of user GIDs to add as followers to the project | |
| opt_fields | No | Comma-separated list of optional fields to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Add followers' implies a write/mutation operation, the description doesn't address permission requirements, whether this operation is idempotent, what happens if followers already exist, rate limits, or what the response contains. For a mutation tool with zero annotation coverage, this represents significant gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward operation and front-loads the essential information. Every word earns its place in this concise formulation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what constitutes a successful operation, what the response looks like, error conditions, or how this tool relates to similar operations in the sibling set. The 100% schema coverage helps with parameters, but the overall context for using this tool effectively is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any meaningful semantic context beyond what's in the schema - it doesn't explain what 'followers' represent in Asana's context, how user GIDs should be obtained, or provide examples of valid opt_fields values. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add followers') and target resource ('to a project'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from its sibling 'asana_add_followers_to_task' which performs a similar action on a different resource type, missing an opportunity for clear sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'asana_add_members_for_project' and 'asana_add_followers_to_task' available, there's no indication of when followers vs members should be added, or when to use this project-focused tool versus the task-focused follower tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_followers_to_taskC
Add followers to a task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to add followers to | |
| followers | Yes | Array of user IDs to add as followers to the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Add followers' implies a mutation operation, the description doesn't disclose important behavioral aspects: whether this requires specific permissions, whether followers are added cumulatively or replace existing ones, what happens if invalid user IDs are provided, or what the expected response looks like. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single four-word phrase that communicates the core purpose without any wasted words. It's front-loaded with the essential information and has zero unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like permission requirements, error conditions, or what constitutes a successful operation. Given the complexity of adding followers (which involves user validation and potentially permission checks), the description should provide more context about how the operation works.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with both parameters clearly documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema descriptions. The baseline score of 3 is appropriate when the schema does the heavy lifting of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add followers') and target resource ('to a task'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'asana_add_members_for_project' or 'asana_add_tags_to_task' which also add entities to Asana objects, leaving room for confusion about when to use this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools that add various entities to Asana objects (followers, members, tags, dependencies, etc.), there's no indication of when this specific 'add followers to task' operation is appropriate versus other similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_members_for_projectC
Add members to a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to add members to | |
| members | Yes | Array of user GIDs to add as members to the project | |
| opt_fields | No | Comma-separated list of optional fields to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Add members' implies a mutation operation, but the description doesn't specify required permissions, whether this operation is idempotent, what happens if members already exist, rate limits, or what the response contains. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward operation and gets directly to the point without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't address behavioral aspects like permissions, idempotency, or error conditions. The presence of a similar sibling tool ('asana_add_followers_for_project') creates ambiguity that the description doesn't resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any meaningful semantic context beyond what's already in the schema descriptions. It doesn't explain member vs follower distinctions, GID format expectations, or practical examples of opt_fields usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add members') and target resource ('to a project'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'asana_add_followers_for_project', which appears to serve a similar but distinct purpose in the Asana context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_add_followers_for_project' or other member-related operations. There's no mention of prerequisites, constraints, or typical use cases for adding members versus followers in Asana projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_tags_to_taskB
Add one or more tags to a task for categorization purposes
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The ID of the task to add tags to | |
| tag_ids | Yes | A list of tag GIDs to add to the task. Use asana_get_tags_for_workspace to find available tags. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool adds tags but doesn't disclose behavioral traits like whether it's idempotent (e.g., adding duplicate tags), what happens on invalid tag IDs, if it requires specific permissions, or the response format. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Add one or more tags to a task') and includes the purpose ('for categorization purposes'). There is no wasted text, and it's appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects (e.g., error handling, permissions), response format, and how it interacts with sibling tools. While the schema covers parameters well, the overall context for safe and effective use is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema provides (e.g., it doesn't explain tag ID formats or constraints on the array). This meets the minimum viable level given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and target ('tags to a task') with a purpose ('for categorization purposes'). It distinguishes from siblings like 'asana_update_task' by focusing specifically on tag addition rather than general task updates. However, it doesn't explicitly differentiate from other tag-related tools like 'asana_get_tags_for_workspace' beyond the verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when categorizing tasks with tags, and the input schema references 'asana_get_tags_for_workspace' to find available tags, providing some contextual guidance. However, it doesn't explicitly state when to use this tool versus alternatives like 'asana_update_task' (which might also handle tags) or mention prerequisites such as needing existing tags or task access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_task_dependenciesC
Set dependencies for a task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to add dependencies to | |
| dependencies | Yes | Array of task IDs that this task depends on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Set dependencies' implies a mutation operation, but the description doesn't specify whether this overwrites existing dependencies or appends to them, what permissions are required, whether it's idempotent, or what happens on failure. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns, how errors are handled, or important behavioral details like whether dependencies are replaced or appended. Given the complexity of modifying task relationships, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('task_id' and 'dependencies') clearly documented in the schema. The description adds no additional parameter information beyond what's already in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set dependencies for a task' clearly states the verb ('Set') and resource ('dependencies for a task'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling tool 'asana_add_task_dependents', which appears to be a related but distinct operation (dependencies vs. dependents).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., task must exist), when not to use it, or how it relates to similar tools like 'asana_add_task_dependents' or 'asana_update_task' which might also affect task relationships.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_task_dependentsC
Set dependents for a task (tasks that depend on this task)
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to add dependents to | |
| dependents | Yes | Array of task IDs that depend on this task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Set dependents' which implies a write/mutation operation, but doesn't disclose behavioral traits like whether this overwrites existing dependents, requires specific permissions, has rate limits, or what happens on success/failure. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with a clarifying parenthetical. It's front-loaded with the core action and resource, though it could be slightly more structured by separating the clarification into a second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or side effects. Given the complexity of modifying task relationships and the lack of structured behavioral data, more context is needed for an agent to use this effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (task_id and dependents). The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set dependents') and target resource ('for a task'), with parenthetical clarification about what dependents are. It distinguishes from the sibling 'asana_add_task_dependencies' by focusing on dependents rather than dependencies, though it doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'asana_add_task_dependencies' or 'asana_update_task'. The description implies usage for setting task dependents but provides no context about prerequisites, constraints, or when other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_add_task_to_sectionC
Add a task to a specific section in a project
| Name | Required | Description | Default |
|---|---|---|---|
| section_id | Yes | The section ID to add the task to | |
| task_id | Yes | The task ID to add to the section | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Add' implies a mutation operation, it doesn't specify whether this requires specific permissions, what happens if the task is already in the section, whether the operation is idempotent, or what the response looks like. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a straightforward tool and is front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or behavioral nuances. Given the complexity of modifying project structures in Asana, more context about the operation's effects and limitations would be necessary for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any additional meaning about the parameters beyond what's in the schema, such as format examples or constraints. This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and target resources ('task to a specific section in a project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'asana_reorder_sections' or 'asana_get_tasks_for_section', which would require a more specific distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., existing task and section), when not to use it, or how it differs from related tools like 'asana_update_task' or 'asana_create_section_for_project'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_projectC
Create a new project in a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | The workspace ID to create the project in (optional if DEFAULT_WORKSPACE_ID is set) | |
| name | Yes | Name of the project to create | |
| team_id | No | REQUIRED for organization workspaces: The team GID to share the project with | |
| public | No | Whether the project is public to the organization | |
| archived | No | Whether the project is archived | |
| color | No | Color of the project (light-green, light-orange, light-blue, etc.) | |
| members | No | Array of user GIDs that are members of this project | |
| followers | No | Array of user GIDs that are followers of this project | |
| project_brief | No | HTML-formatted string containing the description for the project brief | |
| layout | No | The layout of the project (board, list, timeline, or calendar) | list |
| default_view | No | The default view of the project (list, board, calendar, timeline, or gantt) | |
| due_on | No | The date on which this project is due (YYYY-MM-DD format) | |
| start_on | No | The day on which work for this project begins (YYYY-MM-DD format) | |
| notes | No | Free-form textual information associated with the project | |
| html_notes | No | HTML-formatted notes for the project | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't mention authentication requirements, rate limits, error conditions, what happens on success (e.g., returns project ID), or side effects like notifications to members. For a creation tool with 16 parameters, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 16 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns (critical for a creation operation), doesn't mention behavioral aspects like permissions or side effects, and provides no usage context. The schema handles parameter documentation, but the description fails to add necessary operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's in the schema, not explaining relationships between parameters (e.g., 'team_id' requirement for organization workspaces is only in schema). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new project in a workspace'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'asana_create_task' or 'asana_create_project_status' beyond the obvious resource difference, missing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_update_project' or 'asana_search_projects'. There's no mention of prerequisites, dependencies, or typical use cases, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_project_statusC
Create a new status update for a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_gid | Yes | The project GID to create the status for | |
| text | Yes | The text content of the status update | |
| color | No | The color of the status (green, yellow, red) | |
| title | No | The title of the status update | |
| html_text | No | HTML formatted text for the status update | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write operation, it doesn't specify required permissions, whether the status is publicly visible, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with a clear primary function and doesn't bury important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns the new status object), error conditions, authentication requirements, or how this fits into Asana's project workflow. The context signals indicate this is a non-trivial tool that needs more comprehensive documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema itself. The description doesn't add any additional parameter context beyond what's already in the schema (like explaining the relationship between 'text' and 'html_text', or when to use 'opt_fields'). This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new status update for a project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'asana_create_task_story' or 'asana_create_project', which also create content in Asana projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing an existing project), when not to use it, or how it differs from other creation tools in the sibling list like 'asana_create_project' or 'asana_create_task_story'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_section_for_projectC
Create a new section in a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to create the section in | |
| name | Yes | Name of the section to create | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a section, implying a write/mutation operation, but doesn't cover permissions, side effects, error handling, or what the response looks like. This leaves significant gaps for an agent to understand how to use it safely and effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a write operation with no annotations and no output schema), the description is incomplete. It doesn't address behavioral aspects like permissions, error cases, or response format, which are critical for an agent to use this tool correctly in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all three parameters (project_id, name, opt_fields). The description doesn't add any meaning beyond this, such as explaining what 'opt_fields' might include or providing examples. The baseline score of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new section') and the target resource ('in a project'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'asana_reorder_sections' or 'asana_get_project_sections', which also deal with sections but perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing project), exclusions, or comparisons to similar tools like 'asana_reorder_sections' or 'asana_get_project_sections'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_subtaskC
Create a new subtask for an existing task
| Name | Required | Description | Default |
|---|---|---|---|
| parent_task_id | Yes | The parent task ID to create the subtask under | |
| name | Yes | Name of the subtask | |
| notes | No | Description of the subtask | |
| due_on | No | Due date in YYYY-MM-DD format | |
| assignee | No | Assignee (can be 'me' or a user ID) | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' implying a write/mutation operation but doesn't mention permissions, side effects, error conditions, or response format. For a creation tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation, error handling, or how this differs from similar tools. Given the complexity of task management and sibling tools, more context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema, meeting the baseline for high schema coverage but not enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new subtask') and target resource ('for an existing task'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'asana_create_task' or explain the parent-child relationship beyond what's implied by 'subtask.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_create_task' or 'asana_set_parent_for_task.' It mentions 'for an existing task' but doesn't clarify prerequisites or contextual constraints, leaving the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_taskC
Create a new task in a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project to create the task in | |
| name | Yes | Name of the task | |
| notes | No | Description of the task | |
| html_notes | No | HTML-like formatted description of the task. Does not support ALL HTML tags. Only a subset. The only allowed TAG in the HTML are: <body> <h1> <h2> <ol> <ul> <li> <strong> <em> <u> <s> <code> <pre> <blockquote> <a data-asana-type="" data-asana-gid=""> <hr> <img> <table> <tr> <td>. No other tags are allowed. Use the \n to create a newline. Do not use \n after <body>. Example: <body><h1>Motivation</h1> A customer called in to complain <h1>Goal</h1> Fix the problem</body> | |
| due_on | No | Due date in YYYY-MM-DD format | |
| assignee | No | Assignee (can be 'me' or a user ID) | |
| followers | No | Array of user IDs to add as followers | |
| parent | No | The parent task ID to set this task under | |
| projects | No | Array of project IDs to add this task to | |
| resource_subtype | No | The type of the task. Can be one of 'default_task' or 'milestone' | |
| custom_fields | No | Object mapping custom field GID strings to their values. For enum fields use the enum option GID as the value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Create a new task' implies a write/mutation operation, but the description doesn't mention authentication requirements, permission levels needed, rate limits, whether the operation is idempotent, or what happens on success/failure. For a mutation tool with zero annotation coverage, this represents a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states exactly what the tool does without any unnecessary words. It's appropriately sized and front-loaded with the essential information, making it easy for an agent to quickly understand the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 11 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like authentication needs, error conditions, or what the tool returns. While the schema covers parameters well, the description fails to provide the broader context needed for an agent to use this tool effectively in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 11 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new task in a project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'asana_create_subtask' or 'asana_create_task_story', which would require more specific context about when to use each creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling creation tools (create_project, create_subtask, create_task_story), there's no indication of when this specific task creation tool is appropriate versus those other options, nor any prerequisites or constraints mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_create_task_storyC
Create a comment or story on a task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to add the story to | |
| text | Yes | The text content of the story/comment | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but lacks behavioral details. It mentions creation but doesn't disclose if this requires specific permissions, whether it's idempotent, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a mutation tool with 3 parameters, the description is incomplete. It doesn't cover behavioral aspects like permissions or side effects, nor does it explain return values. For this complexity, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying 'text' is for the story/comment content, which the schema already states. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and target ('a comment or story on a task'), which is specific and distinguishes it from siblings like 'asana_create_task' (creates tasks) or 'asana_get_task_stories' (reads stories). However, it doesn't explicitly differentiate between 'comment' and 'story' or clarify if they're synonymous in Asana's context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention prerequisites (e.g., needing an existing task), compare to 'asana_update_task' for task modifications, or reference sibling 'asana_get_task_stories' for reading stories. The description only states what it does, not when to apply it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_delete_project_statusC
Delete a project status update
| Name | Required | Description | Default |
|---|---|---|---|
| project_status_gid | Yes | The project status GID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Delete' implies a destructive mutation, but the description doesn't mention permissions required, whether deletion is permanent/reversible, rate limits, or what happens after deletion. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple deletion tool and front-loads the essential information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after deletion, whether there are side effects, what permissions are needed, or what the return value might be. The description should provide more context given the tool's complexity and lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single parameter 'project_status_gid' well-documented in the schema. The description doesn't add any additional parameter semantics beyond what the schema provides, which is acceptable given the high schema coverage, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and target resource ('a project status update'), providing specific verb+resource information. However, it doesn't differentiate from sibling tools like 'asana_create_project_status' or 'asana_get_project_status', which would require explicit comparison for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no prerequisites mentioned, no context about when deletion is appropriate, and no reference to related tools like 'asana_create_project_status' or 'asana_get_project_status' for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_download_attachmentC
Download an attachment locally
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_gid | Yes | The attachment GID to download | |
| output_dir | No | Directory to save the file (defaults to ~/downloads) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('download locally') but doesn't mention critical traits like file format handling, error conditions (e.g., invalid GID), network usage, or whether it overwrites existing files. For a tool that interacts with external resources and local storage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's action without unnecessary words. It's appropriately sized for a simple download operation and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple download with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like error handling or file management, and while the schema covers parameters well, the overall context for safe and effective use is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the input schema. The description adds no additional meaning beyond implying local file saving, which is already covered by the schema's 'output_dir' description. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('download') and resource ('attachment'), making the purpose immediately understandable. It distinguishes from sibling tools like 'asana_upload_attachment_for_object' by focusing on retrieval rather than creation. However, it doesn't specify the source (Asana) beyond the tool name prefix, which keeps it from being fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_get_attachments_for_object' (which lists attachments) or other download methods. It lacks context about prerequisites, such as needing an attachment GID from another operation, or exclusions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_attachments_for_objectC
List attachments for an object (task, project, etc)
| Name | Required | Description | Default |
|---|---|---|---|
| object_gid | Yes | The object GID to get attachments for | |
| limit | No | Results per page (1-100) | |
| offset | No | Pagination offset token | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a list operation, implying read-only behavior, but doesn't cover pagination details (beyond what the schema shows), rate limits, authentication needs, or what the output looks like. This is a significant gap for a tool with 4 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema, no annotations), the description is incomplete. It lacks behavioral context, usage guidelines, and output details, making it inadequate for an agent to fully understand how to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond implying the object can be a task or project, which is minimal value over the schema's 'object GID' description. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('attachments for an object'), specifying it works for tasks, projects, etc. However, it doesn't explicitly differentiate from the sibling 'asana_upload_attachment_for_object', which handles uploads rather than listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_multiple_tasks_by_gidC
Get detailed information about multiple tasks by their GIDs (maximum 25 tasks)
| Name | Required | Description | Default |
|---|---|---|---|
| task_ids | Yes | Array or comma-separated string of task GIDs to retrieve (max 25) | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the maximum task limit (25). It lacks critical behavioral details: whether this is a read-only operation, authentication requirements, rate limits, error responses for invalid GIDs, or pagination. The description is minimal and misses key operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes the key constraint (maximum 25 tasks). There's no wasted verbiage or redundancy, making it appropriately concise for this tool type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, how results are structured, error conditions, or authentication needs. For a tool with 2 parameters and no structured safety hints, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (task_ids with max 25 items and opt_fields). The description adds no additional parameter semantics beyond what's in the schema, such as examples or formatting nuances, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get detailed information') and resource ('multiple tasks by their GIDs'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'asana_get_task' (singular) or 'asana_search_tasks', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_get_task' (for single tasks) or 'asana_search_tasks' (for filtered searches). It mentions the maximum 25 tasks but offers no context about prerequisites, error handling, or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_projectB
Get detailed information about a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to retrieve | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it 'gets' information without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, requires authentication, has rate limits, or what format the detailed information includes. For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose with zero waste. Every word earns its place, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no nested objects) and 100% schema coverage, the description is minimally adequate but lacks completeness. With no output schema and no annotations, it should explain return values or behavioral context more thoroughly, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('project_id' and 'opt_fields'). The description doesn't add meaning beyond what the schema provides, such as explaining what 'detailed information' entails or how 'opt_fields' affects output. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get detailed information') and resource ('about a specific project'), making the purpose immediately understandable. It distinguishes from siblings like 'asana_search_projects' by focusing on a single project rather than multiple projects, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_search_projects' or 'asana_get_project_hierarchy'. It mentions retrieving a 'specific project' but doesn't clarify prerequisites (e.g., needing a project ID) or exclusions (e.g., not for listing all projects).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_project_hierarchyA
Get the complete hierarchical structure of an Asana project, including its sections, tasks, and subtasks. Supports both manual and automatic pagination.
PAGINATION GUIDE:
Get all data at once: Use auto_paginate=true
Manual pagination: First request with limit=N, then use the returned 'next_offset' tokens in subsequent requests
Tips for large projects: Specify only needed fields, set include_subtasks=false if subtasks aren't needed
EXAMPLES:
For all data: {project_id:"123", auto_paginate:true}
For first page: {project_id:"123", limit:10}
For next page: {project_id:"123", limit:10, offset:"eyJ0a..."}
For deep subtasks: {project_id:"123", include_subtasks:true, max_subtask_depth:3} Note: offset must be a token from previous response (section.pagination_info.next_offset)
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ID of the project to get hierarchy for | |
| include_completed_tasks | No | Include completed tasks (default: false) | |
| include_subtasks | No | Include subtasks for each task (default: true) | |
| include_completed_subtasks | No | Include completed subtasks (default: follows include_completed_tasks) | |
| max_subtask_depth | No | Maximum depth of subtasks to retrieve (default: 1, meaning only direct subtasks) | |
| opt_fields_tasks | No | Optional fields for tasks (e.g. 'name,notes,assignee,due_on,completed') | |
| opt_fields_subtasks | No | Optional fields for subtasks (if not specified, uses same as tasks) | |
| opt_fields_sections | No | Optional fields for sections (e.g. 'name,created_at') | |
| opt_fields_project | No | Optional fields for project (e.g. 'name,created_at,owner') | |
| limit | No | Max results per page (1-100). For pagination, set this and don't use auto_paginate | |
| offset | No | Pagination token from previous response. MUST be valid token from section.pagination_info.next_offset | |
| auto_paginate | No | If true, automatically gets all pages and combines results (limited by max_pages) | |
| max_pages | No | Maximum pages to fetch when auto_paginate is true (protects against infinite loops) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining pagination behavior (auto vs. manual, token usage), performance considerations for large projects, and response structure hints (e.g., 'next_offset' tokens). It doesn't cover error cases or rate limits, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (PAGINATION GUIDE, EXAMPLES), but slightly verbose. Every sentence earns its place by providing actionable guidance. Could be more front-loaded, but the information density is high and organized for usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 13 parameters, no annotations, and no output schema, the description does well by covering usage patterns, pagination, and examples. It doesn't describe the return structure in detail, but given the hierarchical nature implied and lack of output schema, it provides sufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining pagination strategies (linking auto_paginate, limit, offset), giving tips for parameter combinations (e.g., include_subtasks=false for performance), and providing concrete examples that illustrate parameter interactions beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'complete hierarchical structure of an Asana project', specifying it includes 'sections, tasks, and subtasks'. It distinguishes from siblings like 'asana_get_project' (basic project info) or 'asana_get_tasks_for_project' (flat task list) by emphasizing hierarchical retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use auto_paginate vs. manual pagination, with specific scenarios ('Tips for large projects'), and distinguishes from siblings by focusing on hierarchical data rather than flat lists or other operations. It includes practical examples for different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_project_sectionsC
Get sections in a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to get sections for | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Get sections' but does not clarify if this is a read-only operation, what permissions are required, whether it returns paginated results, or the format of the output. This leaves significant gaps in understanding the tool's behavior beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description 'Get sections in a project' is extremely concise and front-loaded, consisting of a single, direct sentence with no unnecessary words. It efficiently communicates the core purpose without any structural waste, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It lacks details on behavioral aspects (e.g., read-only nature, error handling), output format, and usage context. Given the complexity of interacting with a project management API and the absence of structured data, the description should provide more guidance to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters ('project_id' and 'opt_fields'). The description does not add any additional meaning beyond the schema, such as examples for 'opt_fields' or constraints on 'project_id'. Given the high schema coverage, a baseline score of 3 is appropriate as the schema adequately documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get sections in a project' clearly states the verb ('Get') and resource ('sections in a project'), making the purpose understandable. However, it lacks specificity about what 'sections' are (e.g., task sections, project phases) and does not differentiate from sibling tools like 'asana_get_tasks_for_section' or 'asana_reorder_sections', leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing a valid project ID), exclusions, or comparisons to siblings such as 'asana_get_project' or 'asana_get_tasks_for_section', leaving the agent to infer usage context independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_project_statusC
Get a project status update
| Name | Required | Description | Default |
|---|---|---|---|
| project_status_gid | Yes | The project status GID to retrieve | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get'), implying a read operation, but lacks details on permissions, rate limits, error handling, or response format. For a tool with zero annotation coverage, this is a significant gap—it doesn't describe what 'Get' entails beyond the basic verb, missing critical context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste—it directly states the tool's purpose without redundancy or fluff. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly. Every word earns its place, meeting the highest standard for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a read operation with no annotations and no output schema, the description is incomplete. It doesn't explain what a 'project status update' returns, how to handle the optional fields, or any behavioral traits. With siblings present, it also fails to differentiate contextually. For a tool with these gaps, the description should provide more guidance to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('project_status_gid' and 'opt_fields') documented in the schema. The description adds no additional meaning beyond the schema, such as examples or usage notes for parameters. According to the rules, when schema coverage is high (>80%), the baseline score is 3, which applies here as the description doesn't compensate but doesn't need to given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Get') and resource ('project status update'), providing a basic purpose. However, it's vague about what a 'project status update' entails compared to siblings like 'asana_get_project_statuses' (plural) or 'asana_get_project'—it doesn't specify if this retrieves a single status update, its details, or how it differs from related tools. This meets the minimum viable threshold but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. With siblings like 'asana_get_project_statuses' (likely for listing multiple statuses) and 'asana_get_project' (for project details), there's no indication of context, prerequisites, or exclusions. This leaves the agent to infer usage, which is inadequate for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_project_statusesC
Get all status updates for a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_gid | Yes | The project GID to get statuses for | |
| limit | No | Results per page (1-100) | |
| offset | No | Pagination offset token | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get all status updates' but doesn't describe what 'status updates' entail, whether this is a read-only operation, if it requires authentication, any rate limits, pagination behavior (implied by limit/offset parameters but not explained), or the format of returned data. This leaves significant gaps for a tool with 4 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose and appropriately sized for what it conveys, though it could benefit from additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'status updates' are, how results are structured, pagination behavior, or authentication needs. For a data retrieval tool with multiple parameters, this leaves too much undefined for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't mention any parameters beyond implying a 'project' context. However, the input schema has 100% description coverage, with clear documentation for all 4 parameters (project_gid, limit, offset, opt_fields). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description adds no additional parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all status updates for a project' clearly states the action (get) and resource (status updates for a project). It's specific enough to understand the tool's function, though it doesn't explicitly differentiate from sibling tools like 'asana_get_project_status' (singular) or 'asana_get_project' which might also provide status information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'asana_get_project_status' (singular) or 'asana_get_project' that might overlap in functionality, nor does it specify prerequisites or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_project_task_countsB
Get the number of tasks in a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to get task counts for | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' data, implying a read-only operation, but doesn't specify permissions, rate limits, or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Get the number of tasks in a project.' It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for a simple tool. Every part of the sentence earns its place by clearly conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (a read operation with 2 parameters) and 100% schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it doesn't fully compensate for missing behavioral details (e.g., what the return value looks like or any limitations). It meets basic needs but lacks depth for optimal agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear descriptions for both parameters ('project_id' and 'opt_fields'). The description doesn't add any meaning beyond the schema, such as explaining what 'opt_fields' might include or how counts are calculated. With high schema coverage, a baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the number of tasks in a project.' It specifies the verb ('Get') and resource ('tasks in a project'), making the function unambiguous. However, it doesn't differentiate from sibling tools like 'asana_get_tasks_for_project' (which retrieves task details rather than counts), so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'asana_get_tasks_for_project' for detailed task lists or 'asana_get_project' for project metadata, leaving the agent without context for selection. There's no indication of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_subtasks_for_taskC
Get the list of subtasks for a specific task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ID of the task to get subtasks for | |
| opt_fields | No | Optional fields for subtasks (e.g. 'name,notes,assignee,due_on,completed') | |
| limit | No | Maximum number of results per page (1-100) | |
| offset | No | Pagination token from previous response | |
| auto_paginate | No | If true, automatically gets all pages and combines results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't mention pagination behavior (handled by 'limit', 'offset', and 'auto_paginate' parameters), rate limits, authentication needs, or error conditions. This leaves significant gaps for an agent to understand how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose ('Get the list of subtasks'), making it easy to parse. Every part of the sentence contributes directly to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like pagination, error handling, or return format, which are critical for an agent to use the tool effectively. The high parameter count and lack of structured metadata mean the description should do more to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so parameters like 'task_id', 'opt_fields', 'limit', 'offset', and 'auto_paginate' are well-documented in the schema. The description adds no additional meaning beyond the schema, such as explaining the format of 'opt_fields' or how pagination works. This meets the baseline score when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('list of subtasks for a specific task'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'asana_get_task' or 'asana_get_tasks_for_project', which also retrieve task-related data but with different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention when to prefer this over 'asana_get_task' (which might include subtasks) or 'asana_create_subtask' for adding subtasks. There's no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_tags_for_workspaceC
Get tags in a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_gid | No | Globally unique identifier for the workspace or organization (optional if DEFAULT_WORKSPACE_ID is set) | |
| limit | No | Results per page. The number of objects to return per page. The value must be between 1 and 100. | |
| offset | No | Offset token. An offset to the next page returned by the API. | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states a basic action without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, pagination behavior (implied by parameters but not explained), rate limits, authentication needs, or error handling, leaving significant gaps for agent understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple retrieval tool and front-loaded with the core action, though it could benefit from more detail given the lack of annotations and output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 4 parameters, the description is incomplete. It doesn't explain return values, error cases, or behavioral context, making it inadequate for an agent to fully understand tool usage beyond basic purpose. More detail is needed to compensate for missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no meaning beyond the schema—it doesn't explain parameter interactions, defaults, or usage examples. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get tags in a workspace' clearly states the verb ('Get') and resource ('tags'), but it's vague about scope and doesn't differentiate from sibling tools like 'asana_get_tasks_for_tag' or 'asana_get_attachments_for_object'. It lacks specificity about what 'Get' entails (e.g., list, retrieve, fetch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context (e.g., workspace management vs. task operations), or exclusions, despite having siblings like 'asana_list_workspaces' that might relate to workspace data retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_taskB
Get detailed information about a specific task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to retrieve | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get'), implying it's non-destructive, but doesn't mention authentication requirements, rate limits, error conditions, or what 'detailed information' includes. This leaves significant gaps for a tool with potential API constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple retrieval tool and front-loads the core purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with 2 parameters and 100% schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it should ideally mention what 'detailed information' returns or typical response structure to help the agent understand the tool's behavior better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., format of task_id, examples of opt_fields). This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a specific task'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'asana_get_multiple_tasks_by_gid' or 'asana_get_task_stories', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose it over 'asana_get_multiple_tasks_by_gid' for batch retrieval or 'asana_get_task_stories' for activity history, leaving the agent without contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_tasks_for_projectB
Get all tasks from a specific project with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to get tasks for | |
| completed | No | Filter for completed or incomplete tasks | |
| limit | No | Maximum number of results to return (1-100) | |
| offset | No | Pagination token from previous response | |
| auto_paginate | No | Automatically fetch all pages of results (up to max_pages) | |
| max_pages | No | Maximum number of pages to fetch when auto_paginate is true | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'pagination support' which is helpful, but doesn't describe authentication requirements, rate limits, error conditions, or what the response format looks like (especially important since there's no output schema). For a read operation with 7 parameters, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place - 'Get all tasks' (action), 'from a specific project' (scope), 'with pagination support' (key capability). However, it could be slightly more structured by separating core functionality from behavioral notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description is insufficiently complete. It doesn't explain what the tool returns (task objects? just IDs?), doesn't mention authentication or permissions needed, and doesn't provide error handling context. For a data retrieval tool with multiple filtering and pagination options, users need more guidance about expected behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value beyond the schema - it mentions 'pagination support' which relates to 'offset' and 'auto_paginate' parameters, but doesn't provide additional context about parameter interactions or usage patterns. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'all tasks from a specific project', making the purpose unambiguous. It distinguishes from sibling tools like 'asana_get_task' (single task) and 'asana_search_tasks' (search across projects), though it doesn't explicitly name these alternatives. The mention of 'pagination support' adds useful scope information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'from a specific project', suggesting this tool is for project-scoped task retrieval rather than workspace-wide searches. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'asana_get_tasks_for_section', 'asana_get_tasks_for_tag', or 'asana_search_tasks', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_tasks_for_sectionC
Get all tasks from a specific section in a project
| Name | Required | Description | Default |
|---|---|---|---|
| section_id | Yes | The section ID to get tasks from | |
| opt_fields | No | Comma-separated list of optional fields to include (e.g., 'name,gid,completed,assignee,notes,subtasks') | |
| completed_since | No | Only return tasks that are either incomplete or that have been completed since this time (ISO 8601 format) | |
| limit | No | Number of results to return per page (1-100) | |
| offset | No | Pagination token from previous response. Required for paginated requests | |
| auto_paginate | No | If true, automatically gets all pages of results (limited by max_pages) | |
| max_pages | No | Maximum pages to fetch when auto_paginate is true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves tasks but omits critical details: whether it's paginated (implied by parameters but not explicitly stated), rate limits, authentication requirements, error handling, or the format of returned data. This leaves significant gaps for an agent to understand operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It avoids redundancy and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It lacks information on behavioral traits (e.g., pagination, auth), output format, error conditions, and usage context relative to siblings. The high parameter count and absence of structured metadata require more descriptive support than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, providing detailed documentation for all 7 parameters. The description adds no additional parameter semantics beyond implying retrieval from a section, which is already covered by the schema's 'section_id' description. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('all tasks from a specific section in a project'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'asana_get_tasks_for_project' or 'asana_get_tasks_for_tag', which have similar retrieval patterns but target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'asana_get_tasks_for_project' (for project-level tasks) or 'asana_search_tasks' (for broader searches), nor does it specify prerequisites such as needing a valid section ID or appropriate permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_tasks_for_tagC
Get tasks for a specific tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag_gid | Yes | The tag GID to retrieve tasks for | |
| opt_fields | No | Comma-separated list of optional fields to include | |
| opt_pretty | No | Provides the response in a 'pretty' format | |
| limit | No | Results per page. The number of objects to return per page. The value must be between 1 and 100. | |
| offset | No | Offset token. An offset to the next page returned by the API. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] tasks' but doesn't describe key behaviors: whether this is a read-only operation, if it requires authentication, how it handles pagination (implied by 'limit' and 'offset' parameters but not explained), rate limits, or error conditions. The description adds minimal value beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste: 'Get tasks for a specific tag'. It is front-loaded and appropriately sized for a simple retrieval tool, avoiding unnecessary elaboration while clearly stating the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no output schema, and no annotations), the description is incomplete. It lacks information on behavioral traits (e.g., pagination, authentication), output format, error handling, or usage context. While the schema covers parameters well, the description doesn't compensate for missing annotations or output details, making it inadequate for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., 'tag_gid' for filtering, 'limit' for pagination). The description adds no additional meaning beyond implying tag-based filtering, which is already clear from the parameter names and schema. This meets the baseline score of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get tasks for a specific tag' clearly states the verb ('Get') and resource ('tasks'), specifying the filtering criterion ('for a specific tag'). It distinguishes this tool from siblings like 'asana_get_tasks_for_project' or 'asana_get_tasks_for_section' by indicating tag-based filtering, though it doesn't explicitly contrast with 'asana_search_tasks' which might also filter by tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid tag GID), exclusions, or comparisons to sibling tools like 'asana_get_tasks_for_project' or 'asana_search_tasks', leaving the agent to infer usage context solely from the tool name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_task_storiesB
Get comments and stories for a specific task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to get stories for | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but does not mention potential limitations like authentication requirements, rate limits, pagination, or error handling. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, efficiently conveying the core purpose. It is appropriately sized and front-loaded, making it easy to grasp quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output format, which are important for a read operation in a system with many sibling tools. It meets the minimum viable standard but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('task_id' and 'opt_fields'). The description does not add any additional meaning or context beyond what the schema provides, such as examples of optional fields or formatting details. Thus, it meets the baseline for high schema coverage without enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('comments and stories for a specific task'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'asana_get_task' or 'asana_get_subtasks_for_task', which focus on different aspects of task data, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'asana_get_task' for basic task details or 'asana_create_task_story' for adding stories. It lacks explicit context, prerequisites, or exclusions, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_teams_for_userC
Get teams to which the user has access
| Name | Required | Description | Default |
|---|---|---|---|
| user_gid | Yes | The user GID to get teams for. Use 'me' to get teams for the current user. | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose whether this is a read-only operation, pagination behavior, rate limits, authentication needs, or error handling, which are critical for a tool accessing user data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose, making it easy for an agent to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficient. It lacks details on return format, error conditions, or behavioral traits needed for safe invocation, especially given the complexity of accessing user-specific team data in Asana.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying user context, meeting the baseline of 3 where the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('teams'), specifying the scope ('to which the user has access'). It distinguishes from siblings like 'asana_get_teams_for_workspace' by focusing on user-specific access, but doesn't explicitly contrast with other team-related tools, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, exclusions, or compare with sibling tools like 'asana_get_teams_for_workspace', leaving the agent to infer usage context independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_get_teams_for_workspaceC
Get teams in a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_gid | No | The workspace GID to get teams for (optional if DEFAULT_WORKSPACE_ID is set) | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It lacks details on permissions required, rate limits, pagination, error handling, or what the output looks like (e.g., list format, fields included). This is inadequate for a tool with potential complexity in API interactions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a read operation with potential behavioral nuances (e.g., authentication, data scope), the description is incomplete. It doesn't address return values, error cases, or usage constraints, leaving significant gaps for an AI agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are documented in the schema. The description adds no additional meaning beyond implying workspace filtering, which is already covered. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('teams in a workspace'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'asana_get_teams_for_user' or 'asana_list_workspaces', which also retrieve workspace-related data, leaving some ambiguity about when to choose this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., workspace access), exclusions, or compare to siblings like 'asana_get_teams_for_user' or 'asana_list_workspaces', leaving the agent to infer usage context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_list_workspacesA
List all available workspaces in Asana. If DEFAULT_WORKSPACE_ID is set, only returns that workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the filtering behavior with DEFAULT_WORKSPACE_ID, which is useful context. However, it doesn't mention rate limits, authentication needs, pagination, or return format, leaving gaps for a read operation with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste, front-loading the core purpose and efficiently adding the conditional behavior. Every word earns its place, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with 1 parameter and no output schema, the description is adequate but not complete. It covers the purpose and a key behavioral nuance (DEFAULT_WORKSPACE_ID), but lacks details on return values, error handling, or authentication, which would be helpful given no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'opt_fields'. The description doesn't add any parameter-specific information beyond what's in the schema, such as examples of optional fields. Baseline 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all available workspaces in Asana'), making the purpose specific. It distinguishes from siblings by focusing on workspaces rather than projects, tasks, or other entities, and includes the unique DEFAULT_WORKSPACE_ID filtering behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use it (to list workspaces) and includes the DEFAULT_WORKSPACE_ID condition, which implicitly guides usage. However, it doesn't explicitly mention when not to use it or name alternatives among siblings, though the tool's unique focus on workspaces makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_list_workspace_usersC
Get users in a workspace
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | The workspace ID to get users for (optional if DEFAULT_WORKSPACE_ID is set) | |
| opt_fields | No | Comma-separated list of optional fields to include (e.g., 'photo,resource_type'). Fields 'name' and 'email' are included by default. | |
| limit | No | Maximum number of results to return per page (1-100). Helps prevent timeouts and ensures more reliable responses. | |
| offset | No | Pagination token from previous response. Must be the exact token returned in a previous response's next_page.offset field. | |
| auto_paginate | No | If true, automatically fetches all pages and combines results (limited by max_pages) | |
| max_pages | No | Maximum number of pages to fetch when auto_paginate is true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get users' implies a read operation, but the description doesn't cover critical behaviors like pagination handling (though the schema hints at it), rate limits, authentication requirements, or error conditions. It mentions nothing about the return format or what 'users' entails (e.g., basic vs. detailed info).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple tool, though it could be more front-loaded with key details (e.g., 'List all users in a workspace with pagination support'). No fluff or redundancy is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations, no output schema), the description is incomplete. It lacks information on return values (e.g., user object structure), error handling, authentication needs, and usage context. While the schema covers parameters well, the description fails to compensate for missing behavioral and output details, making it inadequate for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters (workspace_id, opt_fields, limit, offset, auto_paginate, max_pages). The description adds no additional meaning beyond what's in the schema—it doesn't explain parameter interactions (e.g., how auto_paginate affects limit) or provide examples. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get users in a workspace' clearly states the verb ('Get') and resource ('users in a workspace'), but it's vague about scope and doesn't distinguish from potential siblings. It doesn't specify if this retrieves all users, active users, or a filtered subset, nor does it differentiate from other user-related tools that might exist (though none are listed in siblings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., workspace access), compare it to other user-fetching methods, or indicate scenarios where it's preferred. With no annotations and no output schema, this lack of context leaves the agent guessing about appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_reorder_sectionsC
Reorder a section within a project by specifying its position relative to another section
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID containing the sections to reorder | |
| section_id | Yes | The section GID to reorder | |
| before_section_id | No | Insert the section before this section GID. Use null for first position. | |
| after_section_id | No | Insert the section after this section GID. Use null for last position. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose permissions required, rate limits, whether the operation is idempotent, what happens on error, or the response format. For a mutation tool with zero annotation coverage, this is inadequate, scoring a 2 for limited transparency beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action ('reorder a section within a project') and adds necessary detail ('by specifying its position relative to another section'). There's zero waste or redundancy, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with 4 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error handling, permissions, or return values, leaving gaps for an AI agent to invoke it correctly. For a tool with this context, it should do more, scoring a 2 for insufficient completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters with clear descriptions (e.g., 'Use null for first position'). The description adds no additional parameter semantics beyond what's in the schema, such as explaining interactions between 'before_section_id' and 'after_section_id'. Baseline is 3 when schema does the heavy lifting, and the description doesn't compensate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('reorder') and resource ('a section within a project'), specifying it involves positioning relative to another section. It distinguishes from siblings like 'asana_create_section_for_project' or 'asana_get_project_sections' by focusing on reordering rather than creation or retrieval. However, it doesn't explicitly differentiate from all siblings (e.g., 'asana_set_parent_for_task' also involves ordering), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing existing sections), exclusions (e.g., not for reordering tasks), or compare to siblings like 'asana_update_task' for task ordering. Usage is implied from the action but lacks explicit context, scoring a 2 for minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_search_projectsC
Search for projects in Asana using name pattern matching
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The workspace to search in (optional if DEFAULT_WORKSPACE_ID is set) | |
| team | No | The team to filter projects on | |
| name_pattern | Yes | Regular expression pattern to match project names | |
| archived | No | Only return archived projects | |
| limit | No | Results per page (1-100) | |
| offset | No | Pagination offset token | |
| opt_fields | No | Comma-separated list of optional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic operation. It doesn't disclose whether this is a read-only operation, what permissions are required, whether it's paginated (though schema hints at offset), rate limits, or what the return format looks like. The description adds minimal behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and uses precise terminology. Every word earns its place in conveying the essential function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what results look like, how pagination works (despite offset parameter), authentication requirements, or error conditions. The description leaves too many behavioral questions unanswered given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds the 'name pattern matching' concept which is already covered in the schema's 'name_pattern' description. No additional parameter semantics are provided beyond what's in the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('projects in Asana') with the specific mechanism ('using name pattern matching'). It distinguishes from siblings like 'asana_get_project' (single project) and 'asana_get_tasks_for_project' (different resource), but doesn't explicitly contrast with 'asana_search_tasks' (similar operation on different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'asana_get_project' for single projects, 'asana_get_tasks_for_project' for project contents, or 'asana_search_tasks' for task-level searches. No context about prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_search_tasksC
Search tasks in a workspace with advanced filtering options
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The workspace to search in (optional if DEFAULT_WORKSPACE_ID is set) | |
| text | No | Text to search for in task names and descriptions | |
| resource_subtype | No | Filter by task subtype (e.g. milestone) | |
| portfolios_any | No | Comma-separated list of portfolio IDs | |
| assignee_any | No | Comma-separated list of user IDs | |
| assignee_not | No | Comma-separated list of user IDs to exclude | |
| projects_any | No | Comma-separated list of project IDs | |
| projects_not | No | Comma-separated list of project IDs to exclude | |
| projects_all | No | Comma-separated list of project IDs that must all match | |
| sections_any | No | Comma-separated list of section IDs | |
| sections_not | No | Comma-separated list of section IDs to exclude | |
| sections_all | No | Comma-separated list of section IDs that must all match | |
| tags_any | No | Comma-separated list of tag IDs | |
| tags_not | No | Comma-separated list of tag IDs to exclude | |
| tags_all | No | Comma-separated list of tag IDs that must all match | |
| teams_any | No | Comma-separated list of team IDs | |
| followers_not | No | Comma-separated list of user IDs to exclude | |
| created_by_any | No | Comma-separated list of user IDs | |
| created_by_not | No | Comma-separated list of user IDs to exclude | |
| assigned_by_any | No | Comma-separated list of user IDs | |
| assigned_by_not | No | Comma-separated list of user IDs to exclude | |
| liked_by_not | No | Comma-separated list of user IDs to exclude | |
| commented_on_by_not | No | Comma-separated list of user IDs to exclude | |
| due_on | No | ISO 8601 date string or null | |
| due_on_before | No | ISO 8601 date string | |
| due_on_after | No | ISO 8601 date string | |
| due_at_before | No | ISO 8601 datetime string | |
| due_at_after | No | ISO 8601 datetime string | |
| start_on | No | ISO 8601 date string or null | |
| start_on_before | No | ISO 8601 date string | |
| start_on_after | No | ISO 8601 date string | |
| created_on | No | ISO 8601 date string or null | |
| created_on_before | No | ISO 8601 date string | |
| created_on_after | No | ISO 8601 date string | |
| created_at_before | No | ISO 8601 datetime string | |
| created_at_after | No | ISO 8601 datetime string | |
| completed_on | No | ISO 8601 date string or null | |
| completed_on_before | No | ISO 8601 date string | |
| completed_on_after | No | ISO 8601 date string | |
| completed_at_before | No | ISO 8601 datetime string | |
| completed_at_after | No | ISO 8601 datetime string | |
| modified_on | No | ISO 8601 date string or null | |
| modified_on_before | No | ISO 8601 date string | |
| modified_on_after | No | ISO 8601 date string | |
| modified_at_before | No | ISO 8601 datetime string | |
| modified_at_after | No | ISO 8601 datetime string | |
| completed | No | Filter for completed tasks | |
| is_subtask | No | Filter for subtasks | |
| has_attachment | No | Filter for tasks with attachments | |
| is_blocked | No | Filter for tasks with incomplete dependencies | |
| is_blocking | No | Filter for incomplete tasks with dependents | |
| sort_by | No | Sort by: due_date, created_at, completed_at, likes, modified_at | modified_at |
| sort_ascending | No | Sort in ascending order | |
| opt_fields | No | Comma-separated list of optional fields to include | |
| custom_fields | No | Object containing custom field filters. Keys should be in the format "{gid}.{operation}" where operation can be: - {gid}.is_set: Boolean - For all custom field types, check if value is set - {gid}.value: String|Number|String(enum_option_gid) - Direct value match for Text, Number or Enum fields - {gid}.starts_with: String - For Text fields only, check if value starts with string - {gid}.ends_with: String - For Text fields only, check if value ends with string - {gid}.contains: String - For Text fields only, check if value contains string - {gid}.less_than: Number - For Number fields only, check if value is less than number - {gid}.greater_than: Number - For Number fields only, check if value is greater than number Example: { "12345.value": "high", "67890.contains": "urgent" } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'advanced filtering options' but doesn't describe key behaviors like pagination, rate limits, authentication requirements, error handling, or what the output looks like. For a search tool with 55 parameters and no annotations, this leaves significant gaps in understanding how the tool operates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance while leaving detailed parameter info to the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (55 parameters, no annotations, no output schema), the description is inadequate. It doesn't address behavioral aspects like result format, pagination, or error conditions, nor does it provide usage context relative to sibling tools. For a search tool with extensive filtering options, more guidance on how to effectively use the parameters would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for all 55 parameters in the input schema. The description adds minimal value beyond this, only implying filtering capabilities without explaining parameter interactions or usage patterns. With high schema coverage, the baseline is 3, as the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('tasks in a workspace'), specifying the action and target. It also mentions 'advanced filtering options' which adds context about functionality. However, it doesn't explicitly differentiate from sibling tools like 'asana_get_tasks_for_project' or 'asana_search_projects' beyond the general search nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools for retrieving tasks (e.g., 'asana_get_tasks_for_project', 'asana_get_task', 'asana_search_projects'), there's no indication of when this search tool is preferred over those, nor any prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_set_parent_for_taskC
Set the parent of a task and position the subtask within the other subtasks of that parent
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| task_id | Yes | The task ID to operate on | |
| opts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions setting a parent and positioning subtasks, but fails to address critical behavioral aspects such as required permissions, whether the operation is reversible, potential side effects on task dependencies, or error conditions. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action. It avoids unnecessary words while conveying the primary functionality, though it could benefit from additional context in subsequent sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 parameters, 33% schema coverage, no annotations, and no output schema, the description is incomplete. It lacks essential context about behavioral traits, parameter details, error handling, and expected outcomes, leaving significant gaps for an AI agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with only the 'parent' parameter documented in the schema. The description adds no information about parameters beyond what's implied by the action, failing to compensate for the low coverage. It doesn't explain the 'data' object structure, 'opts' usage, or clarify parameter interactions like 'insert_after' vs 'insert_before'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set the parent of a task') and includes additional functionality ('position the subtask within the other subtasks of that parent'), which distinguishes it from sibling tools like 'asana_update_task' or 'asana_create_subtask' that handle different task modifications. It uses precise verbs and specifies the resource being modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_update_task' for general task updates or 'asana_create_subtask' for creating new subtasks. It lacks any mention of prerequisites, exclusions, or contextual cues for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_update_projectC
Update details of an existing project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID to update | |
| name | No | Updated name of the project | |
| public | No | Whether the project is public to the organization | |
| archived | No | Whether the project is archived | |
| color | No | Color of the project (light-green, light-orange, light-blue, etc.) | |
| members | No | Array of user GIDs that are members of this project | |
| followers | No | Array of user GIDs that are followers of this project | |
| project_brief | No | HTML-formatted string containing the description for the project brief | |
| layout | No | The layout of the project (board, list, timeline, or calendar) | |
| default_view | No | The default view of the project (list, board, calendar, timeline, or gantt) | |
| due_on | No | The date on which this project is due (YYYY-MM-DD format) | |
| start_on | No | The day on which work for this project begins (YYYY-MM-DD format) | |
| notes | No | Free-form textual information associated with the project | |
| html_notes | No | HTML-formatted notes for the project | |
| opt_fields | No | Comma-separated list of optional fields to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update' implies a mutation operation, but the description doesn't specify permission requirements, whether changes are reversible, rate limits, or what happens to unspecified fields (partial vs. full updates). For a 15-parameter mutation tool, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with comprehensive schema documentation and follows the principle of front-loading the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 15 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like error conditions, response format, or side effects. The agent must rely entirely on the input schema and trial-and-error, which is inadequate for a complex update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 15 parameters thoroughly with descriptions and formats. The description adds no additional parameter semantics beyond implying 'details' covers the schema's fields. This meets the baseline of 3 when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('update') and resource ('details of an existing project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'asana_update_task' or other update operations, missing an opportunity to specify it's for project metadata rather than task updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'asana_create_project' for new projects or 'asana_get_project' for reading. It doesn't mention prerequisites (e.g., needing an existing project ID) or contextual constraints, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_update_taskC
Update an existing task's details
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to update | |
| name | No | New name for the task | |
| notes | No | New description for the task | |
| due_on | No | New due date in YYYY-MM-DD format | |
| assignee | No | New assignee (can be 'me' or a user ID) | |
| completed | No | Mark task as completed or not | |
| resource_subtype | No | The type of the task. Can be one of 'default_task' or 'milestone' | |
| custom_fields | No | Object mapping custom field GID strings to their values. For enum fields use the enum option GID as the value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update' implies mutation, but the description doesn't mention required permissions, whether changes are reversible, error handling, or what happens to unspecified fields. It lacks critical context for a mutation tool with 8 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized and front-loaded with the core action, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address behavioral aspects like permissions, side effects, or response format. The combination of missing annotations and minimal description creates significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing complete parameter documentation. The description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 reflects adequate coverage through the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('an existing task's details'), making the purpose unambiguous. It distinguishes from creation tools like 'asana_create_task' by specifying 'existing', but doesn't explicitly differentiate from other update tools like 'asana_update_project'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. While 'existing task' implies it's for modification rather than creation, there's no mention of prerequisites, constraints, or comparison to sibling tools like 'asana_set_parent_for_task' or 'asana_update_project'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asana_upload_attachment_for_objectC
Upload a local file as attachment to an object
| Name | Required | Description | Default |
|---|---|---|---|
| object_gid | Yes | The object GID to attach the file to | |
| file_path | Yes | Path to the local file | |
| file_name | No | Optional custom file name | |
| file_type | No | Optional MIME type for the uploaded file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions uploading a file but lacks details on permissions required, rate limits, error handling, or what happens on success (e.g., returns an attachment ID). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to grasp quickly with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a file upload operation with no annotations and no output schema, the description is incomplete. It fails to address key aspects like authentication needs, response format, or error conditions, making it inadequate for a tool that modifies data without structured support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters clearly. The description adds no additional meaning beyond what's in the schema, such as examples or constraints, resulting in a baseline score of 3 as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Upload') and target ('a local file as attachment to an object'), making the purpose understandable. It distinguishes from sibling tools like 'asana_download_attachment' and 'asana_get_attachments_for_object' by focusing on upload rather than retrieval, though it doesn't explicitly contrast with other attachment-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While the description implies it's for uploading attachments, it doesn't specify scenarios, prerequisites, or exclusions, such as file size limits or supported object types, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific Asana resources and actions, such as 'asana_create_task' vs. 'asana_update_task' or 'asana_get_project' vs. 'asana_search_projects'. However, there is some potential overlap between 'asana_get_tasks_for_project' and 'asana_get_project_hierarchy' (which includes tasks), and between 'asana_get_project_status' and 'asana_get_project_statuses', which could cause minor confusion in selection.
All tools follow a consistent 'asana_verb_noun' pattern with snake_case throughout, such as 'asana_create_project', 'asana_get_task', and 'asana_update_task'. The naming is predictable and uniform, making it easy for agents to understand and use the toolset without ambiguity in formatting.
With 41 tools, the count is excessive for a typical MCP server, making it heavy and potentially overwhelming for agents to navigate. While Asana's API is feature-rich, this many tools suggests over-fragmentation of operations that could have been consolidated, such as separate tools for adding followers to projects vs. tasks, which might be better handled with parameters.
The toolset provides comprehensive coverage of Asana's core functionalities, including CRUD operations for tasks, projects, sections, and attachments, as well as advanced features like dependencies, stories, statuses, and searches. There are no obvious gaps; agents can perform full lifecycle management and complex workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMulti-Agent Conversation Protocol server that enables interaction with Asana's task management API, allowing users to manage projects, tasks, and team collaboration through natural language.
- FlicenseNot gradedqualityDmaintenanceAn MCP (Multi-Agent Conversation Protocol) server that enables interacting with the Asana API through natural language commands for task management, project organization, and team collaboration.
- FlicenseNot gradedqualityDmaintenanceAn MCP (Multi-Agent Conversation Protocol) Server that enables interaction with the Asana API, auto-generated using AG2's MCP builder.
- FlicenseNot gradedqualityBmaintenanceA Type 4 OAuth MCP server for the Asana API, enabling AI assistants to manage workspaces, projects, tasks, comments, users, and teams.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cristip73/mcp-server-asana'
If you have feedback or need assistance with the MCP directory API, please join our Discord server