Skip to main content
Glama
cristip73

MCP Server for Asana

by cristip73

MCP Server for Asana

npm version

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:

Claude Desktop 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.gid of 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:

  1. Use asana_get_task with the opt_fields parameter set to include custom fields:

    asana_get_task({
      task_id: "TASK_ID",
      opt_fields: "custom_fields,custom_fields.enum_options"
    })
  2. In the response, look for the custom_fields array. Each custom field will have:

    • gid: The unique identifier for the custom field

    • name: The display name of the custom field

    • resource_subtype: The type of custom field (text, number, enum, etc.)

    • For enum fields, examine the enum_options array 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

  1. asana_list_workspaces

    • List 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

  2. asana_search_projects

    • Search 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

  3. asana_search_tasks

    • Search 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

  4. asana_get_task

    • Get 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

  5. asana_create_task

    • Create 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

  6. asana_get_task_stories

    • Get 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

  7. asana_update_task

    • Update 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

  8. asana_get_project

    • Get 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

  9. asana_get_project_task_counts

    • Get 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

  10. asana_get_project_sections

    • Get 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

  11. asana_create_task_story

    • Create 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

  12. asana_add_task_dependencies

    • Set 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

  13. asana_add_task_dependents

    • Set 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

  14. asana_create_subtask

    • Create 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

  15. asana_add_followers_to_task

    • Add 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

  16. asana_get_multiple_tasks_by_gid

    • Get 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

  17. asana_get_project_status

    • Get 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

  18. asana_get_project_statuses

    • Get 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

  19. asana_create_project_status

    • Create 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

  20. asana_delete_project_status

    • Delete a project status update

    • Required input:

      • project_status_gid (string): The project status GID to delete

    • Returns: Deletion confirmation

  21. asana_set_parent_for_task

    • Set 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

  22. asana_get_tasks_for_tag

    • Get 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

  23. asana_get_tags_for_workspace

    • Get 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

  24. asana_create_section_for_project

    • Create 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

  25. asana_add_task_to_section

    • Add 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

  26. asana_create_project

    • Create 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

  27. asana_get_teams_for_user

    • Get 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

  28. asana_get_teams_for_workspace

    • Get 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

  29. asana_list_workspace_users

    • Get 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

  30. asana_get_project_hierarchy

    • Get 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

  31. asana_get_attachments_for_object

    • List 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

  32. asana_upload_attachment_for_object

    • Upload 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

  33. asana_download_attachment

    • Download 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

  1. task-summary

    • Get 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

  1. Create an Asana account:

    • Visit the Asana.

    • Click "Sign up".

  2. Retrieve the Asana Access Token:

  3. 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_workspaces to get the list of available workspaces.

  4. 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:

  1. Ensure the asana plan you have allows API access

  2. 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 inspector

This 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 inspector

License

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 tools
asana_add_followers_for_projectC

Add followers to a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to add followers to
followersYesArray of user GIDs to add as followers to the project
opt_fieldsNoComma-separated list of optional fields to include in the response

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to add followers to
followersYesArray of user IDs to add as followers to the task

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to add members to
membersYesArray of user GIDs to add as members to the project
opt_fieldsNoComma-separated list of optional fields to include in the response

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to add tags to
tag_idsYesA list of tag GIDs to add to the task. Use asana_get_tags_for_workspace to find available tags.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to add dependencies to
dependenciesYesArray of task IDs that this task depends on

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to add dependents to
dependentsYesArray of task IDs that depend on this task

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
section_idYesThe section ID to add the task to
task_idYesThe task ID to add to the section
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoThe workspace ID to create the project in (optional if DEFAULT_WORKSPACE_ID is set)
nameYesName of the project to create
team_idNoREQUIRED for organization workspaces: The team GID to share the project with
publicNoWhether the project is public to the organization
archivedNoWhether the project is archived
colorNoColor of the project (light-green, light-orange, light-blue, etc.)
membersNoArray of user GIDs that are members of this project
followersNoArray of user GIDs that are followers of this project
project_briefNoHTML-formatted string containing the description for the project brief
layoutNoThe layout of the project (board, list, timeline, or calendar)list
default_viewNoThe default view of the project (list, board, calendar, timeline, or gantt)
due_onNoThe date on which this project is due (YYYY-MM-DD format)
start_onNoThe day on which work for this project begins (YYYY-MM-DD format)
notesNoFree-form textual information associated with the project
html_notesNoHTML-formatted notes for the project
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_gidYesThe project GID to create the status for
textYesThe text content of the status update
colorNoThe color of the status (green, yellow, red)
titleNoThe title of the status update
html_textNoHTML formatted text for the status update
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to create the section in
nameYesName of the section to create
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_task_idYesThe parent task ID to create the subtask under
nameYesName of the subtask
notesNoDescription of the subtask
due_onNoDue date in YYYY-MM-DD format
assigneeNoAssignee (can be 'me' or a user ID)
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project to create the task in
nameYesName of the task
notesNoDescription of the task
html_notesNoHTML-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_onNoDue date in YYYY-MM-DD format
assigneeNoAssignee (can be 'me' or a user ID)
followersNoArray of user IDs to add as followers
parentNoThe parent task ID to set this task under
projectsNoArray of project IDs to add this task to
resource_subtypeNoThe type of the task. Can be one of 'default_task' or 'milestone'
custom_fieldsNoObject mapping custom field GID strings to their values. For enum fields use the enum option GID as the value.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to add the story to
textYesThe text content of the story/comment
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_status_gidYesThe project status GID to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_gidYesThe attachment GID to download
output_dirNoDirectory to save the file (defaults to ~/downloads)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
object_gidYesThe object GID to get attachments for
limitNoResults per page (1-100)
offsetNoPagination offset token
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idsYesArray or comma-separated string of task GIDs to retrieve (max 25)
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to retrieve
opt_fieldsNoComma-separated list of optional fields to include

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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:

  1. Get all data at once: Use auto_paginate=true

  2. Manual pagination: First request with limit=N, then use the returned 'next_offset' tokens in subsequent requests

  3. 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)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to get hierarchy for
include_completed_tasksNoInclude completed tasks (default: false)
include_subtasksNoInclude subtasks for each task (default: true)
include_completed_subtasksNoInclude completed subtasks (default: follows include_completed_tasks)
max_subtask_depthNoMaximum depth of subtasks to retrieve (default: 1, meaning only direct subtasks)
opt_fields_tasksNoOptional fields for tasks (e.g. 'name,notes,assignee,due_on,completed')
opt_fields_subtasksNoOptional fields for subtasks (if not specified, uses same as tasks)
opt_fields_sectionsNoOptional fields for sections (e.g. 'name,created_at')
opt_fields_projectNoOptional fields for project (e.g. 'name,created_at,owner')
limitNoMax results per page (1-100). For pagination, set this and don't use auto_paginate
offsetNoPagination token from previous response. MUST be valid token from section.pagination_info.next_offset
auto_paginateNoIf true, automatically gets all pages and combines results (limited by max_pages)
max_pagesNoMaximum pages to fetch when auto_paginate is true (protects against infinite loops)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to get sections for
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_status_gidYesThe project status GID to retrieve
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_gidYesThe project GID to get statuses for
limitNoResults per page (1-100)
offsetNoPagination offset token
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to get task counts for
opt_fieldsNoComma-separated list of optional fields to include

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesID of the task to get subtasks for
opt_fieldsNoOptional fields for subtasks (e.g. 'name,notes,assignee,due_on,completed')
limitNoMaximum number of results per page (1-100)
offsetNoPagination token from previous response
auto_paginateNoIf true, automatically gets all pages and combines results

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_gidNoGlobally unique identifier for the workspace or organization (optional if DEFAULT_WORKSPACE_ID is set)
limitNoResults per page. The number of objects to return per page. The value must be between 1 and 100.
offsetNoOffset token. An offset to the next page returned by the API.
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to retrieve
opt_fieldsNoComma-separated list of optional fields to include

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to get tasks for
completedNoFilter for completed or incomplete tasks
limitNoMaximum number of results to return (1-100)
offsetNoPagination token from previous response
auto_paginateNoAutomatically fetch all pages of results (up to max_pages)
max_pagesNoMaximum number of pages to fetch when auto_paginate is true
opt_fieldsNoComma-separated list of optional fields to include

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
section_idYesThe section ID to get tasks from
opt_fieldsNoComma-separated list of optional fields to include (e.g., 'name,gid,completed,assignee,notes,subtasks')
completed_sinceNoOnly return tasks that are either incomplete or that have been completed since this time (ISO 8601 format)
limitNoNumber of results to return per page (1-100)
offsetNoPagination token from previous response. Required for paginated requests
auto_paginateNoIf true, automatically gets all pages of results (limited by max_pages)
max_pagesNoMaximum pages to fetch when auto_paginate is true

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_gidYesThe tag GID to retrieve tasks for
opt_fieldsNoComma-separated list of optional fields to include
opt_prettyNoProvides the response in a 'pretty' format
limitNoResults per page. The number of objects to return per page. The value must be between 1 and 100.
offsetNoOffset token. An offset to the next page returned by the API.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to get stories for
opt_fieldsNoComma-separated list of optional fields to include

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
user_gidYesThe user GID to get teams for. Use 'me' to get teams for the current user.
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_gidNoThe workspace GID to get teams for (optional if DEFAULT_WORKSPACE_ID is set)
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
opt_fieldsNoComma-separated list of optional fields to include

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoThe workspace ID to get users for (optional if DEFAULT_WORKSPACE_ID is set)
opt_fieldsNoComma-separated list of optional fields to include (e.g., 'photo,resource_type'). Fields 'name' and 'email' are included by default.
limitNoMaximum number of results to return per page (1-100). Helps prevent timeouts and ensures more reliable responses.
offsetNoPagination token from previous response. Must be the exact token returned in a previous response's next_page.offset field.
auto_paginateNoIf true, automatically fetches all pages and combines results (limited by max_pages)
max_pagesNoMaximum number of pages to fetch when auto_paginate is true

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID containing the sections to reorder
section_idYesThe section GID to reorder
before_section_idNoInsert the section before this section GID. Use null for first position.
after_section_idNoInsert the section after this section GID. Use null for last position.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoThe workspace to search in (optional if DEFAULT_WORKSPACE_ID is set)
teamNoThe team to filter projects on
name_patternYesRegular expression pattern to match project names
archivedNoOnly return archived projects
limitNoResults per page (1-100)
offsetNoPagination offset token
opt_fieldsNoComma-separated list of optional fields to include

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoThe workspace to search in (optional if DEFAULT_WORKSPACE_ID is set)
textNoText to search for in task names and descriptions
resource_subtypeNoFilter by task subtype (e.g. milestone)
portfolios_anyNoComma-separated list of portfolio IDs
assignee_anyNoComma-separated list of user IDs
assignee_notNoComma-separated list of user IDs to exclude
projects_anyNoComma-separated list of project IDs
projects_notNoComma-separated list of project IDs to exclude
projects_allNoComma-separated list of project IDs that must all match
sections_anyNoComma-separated list of section IDs
sections_notNoComma-separated list of section IDs to exclude
sections_allNoComma-separated list of section IDs that must all match
tags_anyNoComma-separated list of tag IDs
tags_notNoComma-separated list of tag IDs to exclude
tags_allNoComma-separated list of tag IDs that must all match
teams_anyNoComma-separated list of team IDs
followers_notNoComma-separated list of user IDs to exclude
created_by_anyNoComma-separated list of user IDs
created_by_notNoComma-separated list of user IDs to exclude
assigned_by_anyNoComma-separated list of user IDs
assigned_by_notNoComma-separated list of user IDs to exclude
liked_by_notNoComma-separated list of user IDs to exclude
commented_on_by_notNoComma-separated list of user IDs to exclude
due_onNoISO 8601 date string or null
due_on_beforeNoISO 8601 date string
due_on_afterNoISO 8601 date string
due_at_beforeNoISO 8601 datetime string
due_at_afterNoISO 8601 datetime string
start_onNoISO 8601 date string or null
start_on_beforeNoISO 8601 date string
start_on_afterNoISO 8601 date string
created_onNoISO 8601 date string or null
created_on_beforeNoISO 8601 date string
created_on_afterNoISO 8601 date string
created_at_beforeNoISO 8601 datetime string
created_at_afterNoISO 8601 datetime string
completed_onNoISO 8601 date string or null
completed_on_beforeNoISO 8601 date string
completed_on_afterNoISO 8601 date string
completed_at_beforeNoISO 8601 datetime string
completed_at_afterNoISO 8601 datetime string
modified_onNoISO 8601 date string or null
modified_on_beforeNoISO 8601 date string
modified_on_afterNoISO 8601 date string
modified_at_beforeNoISO 8601 datetime string
modified_at_afterNoISO 8601 datetime string
completedNoFilter for completed tasks
is_subtaskNoFilter for subtasks
has_attachmentNoFilter for tasks with attachments
is_blockedNoFilter for tasks with incomplete dependencies
is_blockingNoFilter for incomplete tasks with dependents
sort_byNoSort by: due_date, created_at, completed_at, likes, modified_atmodified_at
sort_ascendingNoSort in ascending order
opt_fieldsNoComma-separated list of optional fields to include
custom_fieldsNoObject 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

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
task_idYesThe task ID to operate on
optsNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to update
nameNoUpdated name of the project
publicNoWhether the project is public to the organization
archivedNoWhether the project is archived
colorNoColor of the project (light-green, light-orange, light-blue, etc.)
membersNoArray of user GIDs that are members of this project
followersNoArray of user GIDs that are followers of this project
project_briefNoHTML-formatted string containing the description for the project brief
layoutNoThe layout of the project (board, list, timeline, or calendar)
default_viewNoThe default view of the project (list, board, calendar, timeline, or gantt)
due_onNoThe date on which this project is due (YYYY-MM-DD format)
start_onNoThe day on which work for this project begins (YYYY-MM-DD format)
notesNoFree-form textual information associated with the project
html_notesNoHTML-formatted notes for the project
opt_fieldsNoComma-separated list of optional fields to include in the response

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID to update
nameNoNew name for the task
notesNoNew description for the task
due_onNoNew due date in YYYY-MM-DD format
assigneeNoNew assignee (can be 'me' or a user ID)
completedNoMark task as completed or not
resource_subtypeNoThe type of the task. Can be one of 'default_task' or 'milestone'
custom_fieldsNoObject mapping custom field GID strings to their values. For enum fields use the enum option GID as the value.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
object_gidYesThe object GID to attach the file to
file_pathYesPath to the local file
file_nameNoOptional custom file name
file_typeNoOptional MIME type for the uploaded file

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

B3.2/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Multi-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.
  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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.

Latest Blog Posts

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