ProWoDo
Server Details
Manage tasks, sprints and daily planning in chat. ProWoDo's connector lets Claude, ChatGPT and other AI agents create and update tasks, plan sprints, write daily standups and assign work via natural language. 50+ tools, OAuth 2.0 secured.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 83 of 83 tools scored. Lowest: 2.9/5.
Most tools are clearly scoped to a specific resource and action, but a few near-overlapping pairs (e.g., list_attachments vs list_taskattachments, create_tasktags vs add_tag_tasks) could cause misselection without close reading. Descriptions are detailed enough to resolve most ambiguity.
The dominant verb_noun CRUD pattern (create_, list_, retrieve_, update_, partial_update_, destroy_) is consistent and predictable. However, non-standard pluralizations (companys, resumeentrys, taskdependencys) and a handful of irregular names (task_assign_user, move_relate_to_tasks) introduce minor inconsistencies.
With 83 tools, this server is far beyond a well-scoped MCP surface, even for a feature-complete project management suite. The sheer volume will overwhelm agents and make selection inefficient, clearly falling into the extreme-mismatch range.
The toolset provides thorough lifecycle coverage across companies, projects, tasks, sprints, attachments, comments, dependencies, tags, reminders, resume entries, tickets, and users. Missing operations like company deletion or task-attachment creation appear intentional and are worked around via existing tools.
Available Tools
85 toolsadd_tag_tasksAdd a tag to a taskAInspect
Attach a tag to a task. Provide either text (the tag is created in the task's company if it does not exist yet) or the id of an existing tag. The tag must belong to the same company as the task. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false, idempotent=false, and destructive=false, but the description adds valuable behavioral context beyond this: the side-effect that providing text creates the tag if it does not exist, the constraint that the tag must belong to the same company as the task, and the instruction to give the user the app_url deep link instead of describing navigation. These are meaningful additions that help the agent understand the tool's real-world behavior and output presentation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core action, then explains the two input modes and the company constraint, and ends with a practical output instruction. No fluff or repetition; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (three parameters, nested object, no output schema), the description provides sufficient information to invoke it: how to specify the task (pk), how to specify the tag (text or id), and a key output hint (app_url). It doesn't explicitly detail the response body, but the app_url instruction implies the response contains that field, which mitigates the absence of an output schema. Overall, it covers the essential behavioral and usage aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema actually includes descriptions for id, text, and pk (though the context signal claims 0% coverage, which seems inconsistent). The description adds important semantics beyond the schema: it explicitly states that text and id are mutually exclusive ('Provide either text or id') and clarifies the company-matching requirement. This helps disambiguate how the parameters relate and when to use each, adding value over the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Attach a tag to a task.' It gives the specific verb 'attach' and resource 'tag to a task', and distinguishes from sibling tools like create_tasktags (which creates new tag entities) and remove_tag_tasks (which removes tags). The mention of alternative input methods (text or id) further clarifies the tool's specific role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage: 'Provide either text or id' and 'The tag must belong to the same company as the task.' It implies the appropriate scenarios for each input type (create-on-the-fly vs. existing tag). However, it does not explicitly mention alternatives or when-not-to-use cases, such as 'use create_tasktags to create a standalone tag' or 'use remove_tag_tasks to detach.' This is clear context without exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_user_tasksAssign a user to a taskBInspect
Adds a user as an assignee on a task. Idempotent: if the user is already assigned, returns the existing assignment without error. The user must belong to the same company as the task's project.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the annotations: it claims 'Idempotent: if the user is already assigned, returns the existing assignment without error,' while `idempotentHint` is false in the annotations. This is an annotation contradiction and severely undermines trust in the tool's behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, starts with the primary action, and every clause adds useful information: the action, idempotency, and a business rule. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with two required parameters, no output schema, and incomplete annotations, the description provides key context (idempotency, company constraint) but misses a clear explanation of the response/return value and does not resolve the idempotency contradiction. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% per context, and the tool description does not compensate by explaining the parameters beyond the action. It adds the company-membership constraint for `user_id` content, but it does not clarify the `kwargs`/`body` nesting or the parameter roles beyond what the schema already states. For nested required parameters, more semantic guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and resource ('a user as an assignee on a task'), making the action immediately clear. It also distinguishes itself from the sibling `unassign_user_tasks` by naming the assignment direction, and the idempotency note further disambiguates behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when to invoke the tool: assigning a user to a task, and it states a concrete prerequisite (the user must belong to the same company as the task's project). It does not explicitly mention alternative tools or when not to use it, but the sibling list makes the main contrast obvious via `unassign_user_tasks`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_sprintsClose a sprintAInspect
Transition an ACTIVE sprint to CLOSED. Non-DONE tasks are carried over to the sprint id given in carry_over_to, or returned to the product backlog (sprint=null) if omitted. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false, but the description adds valuable context beyond that: it discloses the side effects on non-DONE tasks (carried over or returned to backlog) and the presence of app_url in the response. This enriches the behavior without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and provides essential behavioral and user-guidance details without waste. Every sentence carries meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation with one required parameter and no output schema, the description covers the main action, task handling, and a key response element (app_url). It does not mention errors or permissions, but given the annotations and simplicity, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a thorough description for carry_over_to (including null handling), and pk is a generic primary key. The tool description mostly restates the carry_over_to semantics, adding little new parameter meaning. With schema coverage effectively high, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and state change: "Transition an ACTIVE sprint to CLOSED." This distinguishes it from siblings like start_sprints, update_sprints, and list_sprints by focusing on the close action and the active-to-closed transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: it explains the carry-over behavior for non-DONE tasks and instructs who should receive the app_url deep link. However, it does not explicitly compare with alternatives or state when not to use the tool, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_attachmentsCreate an attachmentAInspect
Create an attachment on a company or one of its projects. Provide exactly ONE of: text (stored as a text/markdown file), content_base64 (base64-encoded binary — content_type is required alongside it), or link (an http(s) URL, e.g. Google Drive/Figma/a web page). file_name is required for text and content_base64. Inline content (text/content_base64) is capped at 4 MB — for larger files, upload to Drive and pass the URL as link instead. project_id is optional: omit it to attach to the company itself rather than to a project. Allowed file types: images, PDF, plain text, CSV, Office documents and zip. Each attachment carries app_url, a deep link to its project's attachments page — null for company-level attachments, which have no dedicated page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behavioral traits beyond annotations: 4 MB size cap for inline content, allowed file types (images, PDF, text, CSV, Office, zip), and that company-level attachments have null app_url because they have no dedicated page. The annotations only indicate non-readonly, so this context is essential and well-covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated; every sentence adds value. It opens with the core action, then systematically covers content types, requirements, size caps, project optionality, allowed types, and return value. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested schema and multiple modes, the description covers all necessary aspects: attachment targets, mutual exclusivity, required fields, size thresholds, file type constraints, and the app_url nuance. Without an output schema, the mention of app_url and its null case is particularly valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema descriptions for individual fields, the description adds mutual exclusivity constraints, size limits, and clarifies that content_type is required only with content_base64. It also explains the semantics of project_id (omit for company-level) and the app_url return behavior, which are not fully captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource+scope: 'Create an attachment on a company or one of its projects.' It clearly distinguishes this from sibling create tools (e.g., create_tasks, create_companys) by explicitly mentioning 'attachment' and its target scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use vs when-not-to-use guidance: 'Provide exactly ONE of: text, content_base64, or link' and 'for larger files, upload to Drive and pass the URL as link instead.' It also clarifies when file_name is required and when project_id should be omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_companiesCreate a companyAInspect
Create a new company (workspace). The authenticated user is automatically added as its first member. Use this to start a fresh tenant that will own its own projects, sprints and tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses a meaningful side effect: 'The authenticated user is automatically added as its first member.' This adds behavioral context not available in annotations and helps the agent understand what happens on creation. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, purposeful sentences. The first sentence states the core action, the second gives a key side effect, and the third provides usage context. No fluff or repetition, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects: what it does, the automatic membership side effect, and how the new company fits into the system (owning projects/sprints/tasks). It does not state return value expectations, but the absence of an output schema makes that less critical. Overall, it is well-rounded for a create tool with this schema complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. However, the description does not mention 'body', 'name', or nested fields at all. The required 'name' is implied by the action, but the description adds no insight into 'description' or 'daily_resume_default', leaving the schema to carry that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a new company (workspace)' with a specific verb and resource. It distinguishes itself from sibling create_* tools by explaining that a company is a 'fresh tenant' that will own its own projects, sprints, and tasks, so it cannot be confused with creating those sub-entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: 'Use this to start a fresh tenant' and explains the ownership model. While it does not explicitly name alternative tools or when not to use it, the description makes the unique role of create_companies clear relative to create_projects, create_sprints, etc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectsCreate a projectAInspect
Create a new project inside a company (company_id path parameter). A project groups tasks, sprints and board columns. Provide at least a title. Each project carries app_url, pointing at its dashboard. Other views share the same /{company}/{project}/ base: tasks/list, board, backlog, matrix, tasks/timeline, sprints, attachments, scoring. The timeline (Gantt) is plan-gated — users without it land on the billing page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: projects carry an app_url pointing to the dashboard, and the timeline (Gantt) is plan-gated, redirecting non-plan users to a billing page. This is substantial extra information beyond the basic readOnly/idempotent/destructive hints, though it could further mention idempotency or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise for the amount of information it conveys. Every sentence adds some value, such as the URL structure and plan-gating behavior, though it could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key aspects of project creation, including the company context, required fields, and plan-gated timeline. However, it does not explain the return value or response format, which is significant given there is no output schema. It also omits permission requirements or potential failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions company_id as a path parameter and states that a title is required, adding meaning over the schema. However, it does not explain the 'description' or 'is_archivied' parameters, and the schema coverage is low (0%), so the description only partially compensates for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Create a new project inside a company' and explains the project's role as grouping tasks, sprints, and board columns. It also mentions the required title and the app_url, making the purpose specific and distinct from sibling tools like create_tasks or create_sprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of when to use the tool is implied: creating a project within a company and providing at least a title. However, it does not explicitly state when not to use it or mention alternatives such as create_tasks or create_sprints, leaving the usage guidance to inference rather than direct instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_remindersCreate a reminderAInspect
Schedule a reminder on a task (task_id path parameter). Provide remind_at (when to fire) and text. Optional: recipient_id (who to notify — defaults to the task assignees), the channels send_push/send_email/send_telegram (at least one must be on; push is on by default), and notify_if_completed to fire even when the task is already done. Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive operation. The description adds valuable behavioral details: default recipient (task assignees), default channel (push on), the constraint that at least one channel must be enabled, and the behavior of notify_if_completed. It also discloses that the response includes an app_url deep link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences that start with the primary action and then detail optional parameters. Every sentence adds functional value without repetition, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested object and multiple boolean channels, the description covers the key creation behaviors and even mentions the response's app_url. It doesn't explain error conditions or permissions, but these are not commonly required when the annotation and schema are present, and the description remains complete enough for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description enriches the schema by explaining practical semantics: remind_at is 'when to fire', recipient_id defaults to assignees, channel flags have a 'push on by default' and 'at least one must be on' rule, and notify_if_completed is clarified. However, it refers to task_id as a 'path parameter' while the schema nests it under body, which is a minor inconsistency that could confuse the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Schedule a reminder on a task' with a specific verb and resource, distinguishing it from sibling tools like update_reminders or destroy_reminders. It also names key parameters, making the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying parameters and defaults, but it does not explicitly state when to use this tool over alternatives or mention any exclusions. For example, it could say 'use update_reminders to modify an existing reminder' but doesn't, leaving the selection to be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_resumeentriesCreate a resume entryAInspect
Create a resume entry for a company (company_id path parameter): what a teammate plans (kind=plan) or did (kind=done) over a day or date range. Set date_from/date_to, the note text and optional linked tasks. Multiple entries per day are allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-idempotent, non-destructive mutation; the description is consistent. It adds useful context like 'Multiple entries per day are allowed' and explains the kind values, but does not disclose additional side effects, required permissions, or error conditions beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place. It front-loads the core purpose in the first sentence, details settable parameters in the second, and adds a key constraint (multiple entries per day) in the third. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description covers the main aspects: purpose, key parameters, kind semantics, optional tasks, and multiplicity. It does not mention return value or prerequisites like the company existing, but given the tool's straightforward nature, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, so the description must compensate. It mentions company_id, date_from/date_to, note, and tasks, and clarifies the meaning of kind (plan vs done) and that tasks are optional. However, it does not explain date formats or task ID types, which are left to the nested schema. This adds some value but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Create a resume entry'), the resource ('for a company'), and the scope (plans or done over a date range). It clearly differentiates from sibling tools like update or destroy by focusing on creation and the kind parameter semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for logging planned or completed work by a teammate, and notes that multiple entries per day are allowed. However, it does not explicitly state when to use this tool versus alternatives like update_resumeentries or destroy_resumeentries, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sprintsCreate a sprintAInspect
Create a sprint for a project. New sprints start in the PLANNED state; provide the project, name and planned start/end dates. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false). The description adds valuable context: new sprints start in PLANNED state and the response includes an app_url. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, impactful, no fluff. The purpose is front-loaded and the behavioral detail about app_url is included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description adequately covers core behavior, required inputs, and a key outcome (app_url). It doesn't mention optional params or error handling, but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description covers the required parameters (project, name, start/end dates) but omits optional fields like goal, review_notes, planning_notes, and retrospective_notes. Since the schema has 0% description coverage, this is a partial compensation – helpful but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a sprint') and resource ('for a project'), distinguishing it from sibling tools like start_sprints, update_sprints, and close_sprints. It also adds unique context about the app_url deep link, which is specific to creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists required inputs (project, name, planned start/end dates) and gives a specific instruction for the result (give app_url to the user). It doesn't mention when to use this vs alternatives, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskcommentsAdd task commentAInspect
Add a comment to a task (e.g. a stakeholder update). The author is the authenticated user. Pass comment_id to reply to an existing comment. Each comment carries app_url, a deep link to the drawer of the task it belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: it discloses that the author is the authenticated user and that each comment has an app_url deep link. These are not present in the annotations or schema, and they do not contradict the annotations (readOnly=false, destructive=false). It does not cover all possible side effects, but provides meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding distinct information: purpose, author context, reply behavior, and app_url. It is well-structured and not verbose, though slightly dense. It earns a 4 for being concise without sacrificing key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially handles the response by mentioning app_url, but it does not describe the full return value, error cases, or prerequisites (e.g., task must exist). It provides enough for basic usage but lacks completeness for a simple create tool with a nested request body.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions only comment_id and its purpose, but the schema already describes it as 'Optional parent comment id (reply/threading)'. The description does not explain the body structure (text, task_id) or add semantics beyond what the schema already provides. With 0% schema description coverage, the description fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: 'Add a comment to a task'. It also provides a concrete use case ('e.g. a stakeholder update') and distinguishes this tool from siblings like create_ticketcomments by explicitly targeting task comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context, including that the author is the authenticated user and how to reply to existing comments via comment_id. However, it does not explicitly mention when not to use this tool or suggest alternative tools like list_taskcomments for reading comments, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskdependenciesCreate a task dependencyAInspect
Link two tasks of the same project with a scheduling dependency. dependency_type is one of FS (finish-to-start, default), SS, FF, SF; lag_days shifts the constraint (may be negative). The successor's planned dates are pushed forward if needed. Rejected (400) on self-link, cross-project, ancestor/descendant, or cycle. Each dependency carries app_url, a deep link to the drawer of the successor (the blocked task), where the dependency is managed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by explaining concrete behaviors: the successor's planned dates are pushed forward, rejection causes are enumerated, and each dependency returns an app_url deep link. This provides valuable context about side effects and response details, with no contradiction to annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the main purpose, and every sentence adds essential information (behavior, constraints, return details). No fluff or repetition of schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no output schema, the description provides sufficient context: it explains the action, its side effect (pushing dates), error scenarios, and a key return field (app_url). Combined with the detailed input schema and annotations, it gives an agent everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only has a nested 'body' parameter with descriptions on its inner fields but no top-level description. The description compensates by explaining dependency_type values (FS/SS/FF/SF) and the meaning of lag_days (shifts constraint, can be negative), which adds semantic clarity beyond the raw schema. It does not repeat the existing descriptions for successor/predecessor IDs, keeping value high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool links two tasks of the same project with a scheduling dependency, using a specific verb (create/link) and resource (task dependencies). It distinguishes itself from sibling tools like destroy_taskdependencies and list_taskdependencies by focusing on creation and by detailing the dependency types and lag behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies a key constraint: the two tasks must belong to the same project, and it lists rejection conditions (self-link, cross-project, ancestor/descendant, cycle) that guide when not to use this tool. However, it does not explicitly mention alternatives such as partial_update_taskdependencies for modifying existing dependencies, so it stops short of full when/why-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tasksCreate a taskBInspect
Create a task. Requires project_id. Optional: title, description (Markdown), status, priority, story_points, parent (for sub-tasks) and sprint. New tasks are appended and the level is reordered automatically. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent operation. The description adds valuable behavioral context: new tasks are appended and the level is reordered automatically, and every task has an app_url deep link in the response. This goes beyond the structured annotations and helps the agent anticipate side effects and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and reasonably front-loaded with the core action. The first sentence states purpose, the second lists key parameters, and the third explains behavior and output usage. It earns its length, though the misleading 'Optional: title' phrase could be reworded for precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many fields, nested body object, no output schema), the description is not complete enough. It incorrectly labels title as optional, omits numerous optional parameters, and does not clarify that body is a required wrapper object. It does provide helpful app_url guidance, but the inaccuracies and omissions leave significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, so the description must compensate, but it only lists a handful of parameters (project_id, title, description, status, priority, story_points, parent, sprint) and omits many others like order, reach, effort, impact, progress, confidence, date fields, and flags. Worse, it incorrectly states title is optional when the schema marks it required, leading to potential misuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a task', a specific verb and resource, and is distinct from sibling tools like create_projects or create_sprints. However, it inaccurately lists title as optional when the schema requires it inside body, slightly muddying the clarity of what is required to create a task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some usage context: mentioning that parent is for sub-tasks, sprint associates a sprint, and instructing to give the returned app_url to the user instead of describing click paths. But it lacks explicit when-to-use vs alternatives (e.g., create vs update_tasks) and does not mention any exclusions or preconditions beyond requiring project_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tasktagsCreate a tagBInspect
Create a task tag in a company (company_id path parameter). Provide the tag text; the tag becomes available to attach to that company's tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent write operation. The description adds that the tag becomes available to attach to company tasks, but it does not address potential duplicate tags, validation rules, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main action, using only 24 words. However, the inaccurate path parameter phrasing is a structural flaw that detracts from clarity, though the length itself is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and low schema description coverage, the description needed to clarify parameter structure and behavioral nuances. It instead introduces a path parameter error and does not compensate for the nested body object, leaving invocation ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description misidentifies company_id as a path parameter when the schema expects it within the body object, which could lead to incorrect invocation. It provides some meaning for text but fails to explain the body wrapper structure and gives no additional detail for text beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' and resource 'task tag' with scope 'in a company', clearly stating what the tool does. It distinguishes from sibling tools like add_tag_tasks by noting the tag becomes available for future attachment to tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating new task tags but does not explicitly state when to use it versus alternatives. No exclusions or comparisons with sibling tools such as add_tag_tasks or destroy_tasktags are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketcommentsAdd ticket commentAInspect
Add a comment to a ticket. DEFAULT is an INTERNAL note (is_internal=true): team-only, NOT shown to the customer. To reply visibly to the customer pass is_internal=false — the comment then appears on the customer's public ticket page. Draft internally first; make it public deliberately. Each comment carries app_url, an INTERNAL deep link to the ticket's task drawer — do not hand it to the customer; use the ticket's public_url (from retrieve_ticketsubmissions) for a customer-facing link.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate the tool is a non-read operation. The description adds valuable behavioral context: default is_internal=true, public comments appear on the customer's ticket page, and app_url is an internal deep link that must not be shared with customers. This goes beyond what annotations alone communicate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet information-dense. Each sentence adds a distinct value: the action, the default internal nature, how to make a public reply, and caution about app_url. There is no redundancy or filler; structure front-loads the main purpose and then gives operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with one nested parameter object, the description covers the primary behavior, defaults, customer visibility implications, and link usage warnings. It also cross-references another tool for obtaining a public URL. No output schema is present, but for a write operation this level of detail is sufficient and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema shows nested fields (text, is_internal, submission_id) but has minimal descriptions; the description compensates by explaining the semantics of is_internal (default true, how to switch to public). It indirectly clarifies submission_id's role as the ticket identifier, but does not explicitly describe the 'text' field or its optionality, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear action verb and resource: 'Add a comment to a ticket.' It immediately distinguishes between internal and public comments, making the tool's purpose distinct from sibling read/list or destroy tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the default behavior (internal note) and provides the exact condition for using is_internal=false to make a comment visible to customers. It also warns against sharing app_url internally and directs users to public_url from retrieve_ticketsubmissions for customer-facing links, giving both when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decrease_depth_tasksOutdent a taskAInspect
Outdent a task to its parent's level (decreases its depth), optionally positioning it after a given sibling via after_task_id. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds useful behavioral context by mentioning the optional after_task_id positioning and the app_url deep link instruction for responding to users. However, it does not disclose potential side effects on child tasks or ordering, which would be relevant for an outdent operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action, then the optional behavior, and finally a practical user-facing instruction. Every word earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter, the description covers the core action and adds a user-response guideline. However, it references after_task_id which is not in the schema, creating a completeness gap. It also does not mention whether the outdent affects subtasks or the resulting order, leaving some behavioral ambiguity. The absence of an output schema makes the app_url instruction valuable, but the schema mismatch detracts from overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only documents 'pk' (the task id), and the description does not explain it beyond what the schema already provides. More problematically, the description introduces 'after_task_id' as an optional parameter, but this parameter is absent from the input schema. This mismatch creates ambiguity: an agent would expect to provide after_task_id but cannot find it in the schema. The description fails to compensate for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Outdent' and clearly states the resource ('a task') and the effect ('decreases its depth'). It distinguishes this tool from its sibling 'increase_depth_tasks' (indent), and the optional positioning after a sibling adds clarity about its behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for outdenting tasks to reduce their depth. It does not explicitly name alternatives or exclusions, but the sibling tools like increase_depth_tasks, move_up_tasks, and reorder_* make the intended usage evident from context. There is no explicit 'when not to use' guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_attachmentsDelete an attachmentADestructiveIdempotentInspect
Soft-delete an attachment belonging to a company you are a member of: the record is kept for history but disappears from list_attachments. Scoped to the company — you cannot delete an attachment belonging to another tenant.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive=true), the description adds the crucial soft-delete behavior: the record is kept for history but hidden from list_attachments. It also discloses the tenant-scoping restriction. This enriches the annotation data meaningfully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both dense with useful information. The first sentence states the action and its consequence; the second explains the tenant restriction. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter delete operation with good annotations, the description covers the core behavior (soft-delete), the scope (company membership), and the side effect (disappears from list). No output schema is present, but the description does not need to detail return values for a simple delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (company_id and pk). The description reinforces the meaning of company_id by emphasizing company membership and scoping. It doesn't add new parameter syntax, but the schema coverage is high, so the baseline is 3 and the added scoping context raises it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'soft-delete' and the resource 'attachment', immediately clarifying the action. It also distinguishes this tool from related list/retrieve tools by stating the record 'disappears from list_attachments' and that deletion is scoped to the company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: the tool is for deleting attachments you own within a company you belong to, and it cannot delete another tenant's attachments. It implies when to use it, though it does not explicitly name alternative tools or say 'use this instead of X'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_projectsArchive a projectBDestructiveIdempotentInspect
Soft-archives a project (sets is_archivied=true) instead of hard-deleting it, so historical tasks keep resolving and it can be restored later. Archived projects drop out of the default project list.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the destructiveHint=true annotation by stating this is a soft-archive, not a hard delete, and can be restored later. This is a clear contradiction, so the score is 1 regardless of other useful details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the most important behavior (soft-archive not hard-delete), and contains no fluff. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the behavior is described well (soft-archive, restorable, drops out of default list), the description omits return values, prerequisites, and parameter details. Additionally, the annotation contradiction undermines the overall completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per the context, and the description does not explain the meaning of company_id or pk beyond what the schema already states. The description adds no parameter-specific guidance, failing to compensate for the lack of coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool soft-archives a project by setting is_archivied=true, using a specific verb and resource. It distinguishes itself from hard deletion, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use it (when you want to preserve history and allow restoration) and contrasts with hard-deleting. However, it does not explicitly name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_remindersDelete a reminderADestructiveIdempotentInspect
Delete a reminder from a task.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, covering the safety profile. The description adds the 'from a task' relationship, which is useful context, but it does not disclose consequences like permanence or error handling for nonexistent reminders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler or redundancy. It is front-loaded with the action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with annotations and a detailed schema, the description is adequate but minimal. It lacks any usage context, behavioral details beyond the core action, or guidance on edge cases. However, it is sufficient for basic invocation when combined with the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself mentions no parameters, but the input schema provides descriptions for both task_id ('ID of the task the reminder belongs to') and pk ('The id of the reminder'). Thus the schema carries the semantic burden, and the description adds no extra meaning, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Delete a reminder from a task.' It specifies the verb (delete), the resource (reminder), and the context (from a task), which distinguishes it from sibling tools like update_reminders or retrieve_reminders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like partial_update_reminders or update_reminders. It does not mention prerequisites, exclusions, or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_resumeentriesDelete a resume entryADestructiveIdempotentInspect
Soft-removes a resume entry (is_deleted=true); the row is retained and drops out of subsequent lists. Requires the company_id path parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already include destructiveHint=true, the description adds crucial context: it reveals the exact mechanism (`is_deleted=true`), confirms data retention, and explains list behavior. This is valuable because 'destroy' often implies permanent deletion, and the description corrects that assumption. It also adds a requirement (`company_id`), though it mislabels it as a path parameter when the schema shows it in the body.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the most critical information (soft delete, retention), and avoids redundancy. Every piece of text serves a distinct purpose: defining the action, explaining the mechanism, listing consequences, and noting a prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity delete tool, this covers behavior, side effects, and a prerequisite. It doesn't describe return values, but with no output schema and simple semantics, that's acceptable. The only minor gap is not explaining what happens to related data or whether the operation is reversible, but it's not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description needs to compensate. It does mention `company_id`, which adds value, but completely omits the `pk` parameter from the description. Additionally, it incorrectly refers to `company_id` as a 'path parameter' when the schema indicates it's in the body. Partial compensation with room for improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it soft-deletes a resume entry by setting `is_deleted=true`. The specific verb 'soft-removes' plus the resource 'resume entry' provides clarity that can't be mistaken for other operations, distinguishing this from hard-delete or update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By explaining that the row is retained and 'drops out of subsequent lists,' the description implies this is the soft-delete alternative to a full delete. It could more explicitly say 'use this instead of define to keep the row,' but the context makes the use case clear. A slight deduction for not naming an alternative tool or giving when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_sprintsDelete a sprintADestructiveIdempotentInspect
Delete a sprint. Only PLANNED sprints can be deleted; ACTIVE or CLOSED sprints return a conflict and must be closed instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable context that non-PLANNED sprints return a conflict and must be closed. This goes beyond the annotations by specifying the state-dependent behavior. It doesn't detail auth requirements or the exact conflict format, but the added behavioral info justifies a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and every word adds value. There is no redundancy or irrelevant detail. It is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description covers the essential context: the action, the constraint on sprint states, and the conflict behavior. It could mention what a successful deletion returns or what 'conflict' means in HTTP terms, but given the presence of destructiveHint and the simplicity of the operation, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. However, the description does not mention the required 'pk' parameter at all. The schema only provides a generic 'pk' description with no context about how to identify a sprint. Since the description fails to clarify the parameter's role in selecting the sprint, a score of 2 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Delete a sprint', which is a specific verb+resource. It further clarifies that only PLANNED sprints can be deleted, distinguishing it from close_sprints and other sprint operations. This makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Only PLANNED sprints can be deleted; ACTIVE or CLOSED sprints return a conflict and must be closed instead.' This directly names the alternative action (closing) for other sprint states, providing clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_taskcommentsDelete task commentADestructiveIdempotentInspect
Soft-delete (hide) a comment on a task; it stops appearing in the thread but is not permanently removed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, idempotentHint=true), the description adds the crucial behavior that this is a soft delete—the comment stops appearing but is not permanently removed. This provides reversibility context that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action ('Soft-delete') and its effect. Every word contributes to clarity, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the core action and the soft-delete behavior. The schema handles parameter details and annotations cover idempotency. The lack of an output schema means return values are not expected, so this is sufficiently complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the tool description does not compensate for parameters. It does not mention task_id or pk, leaving the agent to rely solely on the schema's own descriptions. This is a significant gap for a two-parameter nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Soft-delete (hide) a comment on a task', using a specific verb and resource. It distinguishes itself from permanent deletion and sibling tools like destroy_tasks or destroy_ticketcomments by explicitly mentioning 'task' and the soft-delete nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use this tool: to hide a comment without permanently removing it. It implies a soft-delete context but does not explicitly name alternatives or scenarios where a hard delete would be appropriate, so no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_taskdependenciesDelete a task dependencyADestructiveIdempotentInspect
Remove a scheduling dependency between two tasks of a project. Does not move any dates back — previously pushed-forward planned dates on the successor are left as-is.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key side effect: 'Does not move any dates back — previously pushed-forward planned dates on the successor are left as-is.' This adds behavioral insight beyond the annotations, though it does not mention all potential consequences (e.g., cascading effects on tasks).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, consisting of two sentences with no redundant information. It effectively communicates the purpose and a critical side effect without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and a notable behavioral effect. It does not describe return values or error conditions, but given that this is a destroy operation and no output schema exists, the description is adequately complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no additional meaning for the parameters (company_id, project_id, pk). The schema already gives descriptions, so the description adds no semantic value beyond what is already coded. Since schema coverage is complete, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: removing a scheduling dependency between two tasks of a project. The verb 'Remove' and the specific resource 'scheduling dependency' make the purpose unambiguous, and it distinguishes itself from other destroy operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternative operations (e.g., update_taskdependencies). However, it is implicitly clear that it is for removing dependencies, but no conditions or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_tasksDelete a taskADestructiveIdempotentInspect
Soft-deletes a task; it is excluded from subsequent lists but the row is retained for history. Descendants are not auto-promoted.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, idempotentHint), the description adds crucial context: the soft-delete nature, exclusion from lists, row retention, and that descendants are not auto-promoted. This fully informs the agent of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action, and no redundant or unnecessary words. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with strong annotations, the description is largely complete. It explains side effects and hierarchy behavior, though it omits return format and permission requirements, which are less critical given the output schema absence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the single 'pk' parameter or the 'kwargs' wrapper. The schema only provides 'The id of the task,' so the description adds no value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (soft-deletes) and resource (task), and clearly distinguishes from a hard delete by noting row retention. It also differentiates from sibling destroy_* tools by targeting tasks specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you want to remove a task from lists but keep history) but does not explicitly state alternatives or exclusions. There is no mention of when not to use it, such as for permanent deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_tasktagsDelete a tagADestructiveIdempotentInspect
Delete a task tag from a company (company_id path parameter). Tasks that referenced the tag lose the association.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds valuable context by specifying that tasks referencing the tag lose the association. This goes beyond the annotation hints and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the action and then state the impact, with no filler or repetition. Every clause contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and a meaningful side effect, and the annotations provide destructive and idempotency hints. However, it omits usage exclusions and leaves the placement of company_id ambiguous relative to the schema (path vs body), making it minimally sufficient but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions company_id as a path parameter and refers to 'the tag', but does not explain that kwargs.pk is the tag ID or how body/kwargs are structured. With schema description coverage at 0%, the description fails to compensate for missing parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and resource ('task tag') and clarifies scope ('from a company'). It also distinguishes itself from sibling tools like remove_tag_tasks by stating the consequence that tasks referencing the tag lose the association.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives such as partial_update_tasktags or remove_tag_tasks. Usage is only implied by the delete verb and the consequence statement, with no explicit exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_ticketcommentsDelete ticket commentADestructiveIdempotentInspect
Soft-delete (hide) a comment on a ticket; it stops appearing in the thread but is not permanently removed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint: false, destructiveHint: true, idempotentHint: true), the description adds valuable context by specifying that the comment is hidden but not permanently removed. This clarifies the exact effect on the thread and the reversible nature of the deletion. It does not describe return values or permissions, but with annotations present, it provides sufficient extra behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the essential behavior with no wasted words. It front-loads the key verb and resource, then clarifies the nuance, making it highly concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema) and the presence of annotations, the description covers the most important contextual aspect: the effect of the operation (soft-delete, hide but not permanent). It could mention reversibility or prerequisites, but the combination of annotations and schema fills the gap adequately, making it complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description does not mention parameters at all, but the input schema provides clear descriptions for both `submission_id` ('ID of the ticket submission') and `pk` ('The id of the ticketcomment'). Therefore, the schema itself handles parameter semantics, and the description adds nothing beyond that, aligning with the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Soft-delete (hide) a comment on a ticket; it stops appearing in the thread but is not permanently removed.' It uses a specific verb ('soft-delete'), identifies the resource (comment on a ticket), and distinguishes this from a permanent delete, making its function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by explaining that this is a soft delete and not a permanent removal, which implies when it should be used (when hiding is sufficient) and when it should not (when permanent deletion is intended). However, it does not explicitly name alternative tools or provide exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
increase_depth_tasksIndent a task under a parentBInspect
Indent a task so it becomes a child of another task (increases its depth) — e.g. turn a sibling into a sub-task. Pass new_parent_id. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, and the description is consistent with a mutating operation. The description adds a note about app_url deep links and instructs to give them to the user, which is a useful behavioral hint. However, it does not disclose other behavioral traits such as prerequisites, side effects, or error conditions, and the phantom parameter reference further clouds transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, only two sentences, with the main purpose front-loaded. The second sentence about app_url is slightly tangential but is a useful instruction for user interaction. However, the incorrect parameter reference detracts from the overall structural clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain return values or side effects. It also fails to clarify how 'new_parent_id' should be supplied (since it is not in the schema), leaving the agent confused about the execution. The app_url instruction adds some context but does not address the core invocation requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the actual parameters. The description instructs to pass 'new_parent_id', which does not exist in the input schema (only 'pk' is required). This actively misleads the agent about the required inputs, and no explanation of the real parameter 'pk' is provided. The description fails to compensate for the schema's minimal documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Indent' and the resource 'task', and explicitly explains the result: 'becomes a child of another task (increases its depth)'. The example 'turn a sibling into a sub-task' provides a concrete scenario, and the sibling tool name 'decrease_depth_tasks' reinforces the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete use case ('turn a sibling into a sub-task') and instructs to 'Pass new_parent_id', which suggests when and how to use it. However, it does not explicitly mention alternatives or exclusions, and the referenced parameter 'new_parent_id' is not present in the input schema, making the guidance misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_remindersList all my remindersARead-onlyIdempotentInspect
List reminders across all of the user's tasks (e.g. what fires today) — filter by remind_at (__date, __gte, __lte) and is_sent. Unlike list_reminders, not scoped to one task. Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds useful behavioral context beyond annotations, such as the cross-task scope, filter options, and that each reminder includes an app_url deep link. It does not disclose pagination or default ordering, but the schema covers pagination fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, each carrying substantial information: purpose, filters, differentiation, and output note. It is concise and front-loaded with the core purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a list operation with no output schema, but the description mentions an important output field (app_url) and the key filtering capabilities. The schema provides pagination details, so the description covers enough context for correct usage. However, it does not mention default ordering or pagination behavior, though these are less critical given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes most parameters (e.g., page, page_size, date formats), but the description adds semantic meaning by explaining that remind_at filters are available with __date, __gte, __lte and is_sent is a filter. The example 'what fires today' clarifies a typical use of the __date parameter, going beyond the schema's basic format descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists reminders across all of the user's tasks, using a specific verb and resource. It explicitly distinguishes itself from the sibling list_reminders by noting it is not scoped to one task, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: when you need reminders across all tasks, and contrasts it with list_reminders for task-specific queries. It also indicates filterable fields, giving practical guidance for typical use cases like 'what fires today'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_attachmentsList attachmentsARead-onlyIdempotentInspect
List what is attached to a company or to one of its projects. An attachment is either an uploaded file or an external link (Google Drive, Figma, a web page); the kind field says which. Browse this list to see what is attached and decide what to open, then use that row's url — for links it is the link itself, for files a signed link that expires after 15 minutes, so there is no need to call retrieve_attachments just to get the link. Attachments can also be created over MCP with create_attachments (inline text, base64 content, or a link) and removed with destroy_attachments. To read what a text attachment says, call read_attachments. Requires the company_id path parameter. Filter with project_id for a single project, or project_id__isnull=true for what is attached to the company itself rather than to a project. Each attachment carries app_url, a deep link to its project's attachments page — null for company-level attachments, which have no dedicated page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only/idempotent, but the description adds critical behavior: signed URLs expire after 15 minutes, `app_url` is null for company-level attachments, and attachments can be files or links distinguished by `kind`. It also clarifies that retrieve_attachments is unnecessary for getting links, which is a useful operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds value: purpose, attachment types, URL expiry, no-need-for-retrieve, alternative tools, filtering, and app_url behavior. It is front-loaded with the main purpose and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description sufficiently explains the return concept (list of attachments with url, kind, app_url) and how it maps to other tools. It gives the agent enough context to invoke correctly, including edge cases like company-level attachments and signed link expiry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry the load. It explains `company_id`, `project_id`, and `project_id__isnull` with real-world meaning, but omits `file_name__icontains` and pagination parameters (`page`, `page_size`). Some parameter semantics are covered, but not all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists attachments for a company or project, with a specific verb ('List what is attached') and resource scope. It also distinguishes from sibling tools like retrieve_attachments, read_attachments, and list_taskattachments by explaining what this tool is for (browsing) versus others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: browse the list to decide what to open, use the row's `url` directly (no need for retrieve_attachments), and names alternative tools for creation/destruction/reading. It also explains filtering with `project_id` and `project_id__isnull` for company-level vs project-level attachments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_companiesList companiesARead-onlyIdempotentInspect
List the companies (workspaces) the authenticated user belongs to. A company is the top-level tenant that owns projects, teams, tasks, sprints and tags. Supports text search and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering safety. The description adds that it supports search and pagination, which is useful, but does not detail how these are invoked or what format results take. Given the annotations, the description adds moderate extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first delivers the core purpose and domain context, the second mentions features. It is front-loaded, has no redundant content, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with read-only annotations, the description covers the purpose, the meaning of 'company', and notes search/pagination. It does not need to explain return format since it is a standard list, and annotations cover safety. It is sufficiently complete for an agent to select and call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is empty. The baseline for 0 params is 4, but the description only mentions 'search' and 'pagination' without naming parameters or formats. This adds some semantics but is not specific enough to guide invocation, so a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing companies the authenticated user belongs to. It also defines what a company is, distinguishing it from other entities. This is specific and distinct from sibling tools like retrieve_companies, which likely fetches a single company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to list companies) but does not explicitly contrast it with alternatives like retrieve_companies or other list tools. It provides context about the hierarchy but lacks explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsARead-onlyIdempotentInspect
List the projects of a company. Requires the company_id path parameter. Archived projects are excluded unless include_archived=true. Supports search and filtering by id, title and description. Each project carries app_url, pointing at its dashboard. Other views share the same /{company}/{project}/ base: tasks/list, board, backlog, matrix, tasks/timeline, sprints, attachments, scoring. The timeline (Gantt) is plan-gated — users without it land on the billing page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a safe read-only, idempotent operation. The description adds meaningful behavioral detail beyond that: archived projects are excluded unless include_archived=true, the timeline is plan-gated, and each project includes an app_url. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and key parameters, but the final three sentences about app_url, shared view URLs, and plan-gated timeline add contextual detail that is not directly necessary for invoking the tool. It is compact but contains some tangential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers the required company_id, filtering flags, pagination hints through schema, and even return-value context (app_url). It is missing a full statement of what the response object contains, but the rest of the context is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains company_id, include_archived, and filtering by id/title/description, which clarifies the tersely named icontains fields. It does not explain page/page_size semantics, but those already have schema descriptions, and 'search' is mentioned without a matching schema property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the projects of a company.' It clearly distinguishes this listing tool from siblings like retrieve_projects by describing collection-level behavior, filtering, and archived-project exclusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to call the tool: listing a company's projects, requiring company_id, excluding archived by default, and supporting filters. It does not explicitly state when to prefer a sibling such as retrieve_projects, so it falls just short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remindersList remindersARead-onlyIdempotentInspect
List the reminders of a task (task_id path parameter), ordered by scheduled time. Each reminder shows when it fires (remind_at), the text, the chosen channels and whether it has already been sent. Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, so the description adds value by disclosing the ordering, returned fields (including whether sent), and the app_url deep link. This goes beyond the structured annotations and gives practical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and every clause adds relevant detail (ordering, fields, deep link). There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one parameter and no output schema, the description covers the essential return semantics and ordering. It is slightly incomplete because of the path/body confusion and lack of mention of list_all_reminders, but overall it provides enough context for correct use in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description refers to task_id as a 'path parameter', but the schema shows it inside the required body object, a factual mismatch that could mislead an agent. It adds no extra meaning beyond the schema's own description of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List'), resource ('reminders of a task'), and scope (task_id), clearly distinguishing it from the sibling 'list_all_reminders'. It also mentions ordering by scheduled time, which further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'of a task', indicating this is for a specific task's reminders. However, it does not explicitly contrast with list_all_reminders or provide when-not-to-use guidance, leaving selection partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resumeentriesList resume entriesARead-onlyIdempotentInspect
List resume entries (daily or range plan/done notes) for a company (company_id path parameter). Filter by kind (plan|done), date range (date_from/date_to) or user_id. Used for stand-ups and daily planning.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the filter capabilities and the use case, but does not detail pagination behavior or return format, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and filters, and includes the use case. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 1 parameter (body) with many nested properties, the description covers the main filters and use case. It does not explain the comparison operators, but those are advanced and the schema provides titles. The output schema is absent, but the description does not need to explain return values. Overall, it is complete enough for a listing tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description lists the key filter parameters (kind, date range, user_id) and explains their purpose. However, it does not explain the comparison operators (date_from__gt, etc.) or the page/page_size parameters, which are self-explanatory from the schema. The description adds some value but does not fully compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists resume entries (daily or range plan/done notes) for a company, with specific filter options. It distinguishes itself from sibling tools like create_resumeentries and retrieve_resumeentries by focusing on listing with filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is used for stand-ups and daily planning, providing context for when to use it. It does not explicitly exclude alternatives, but the filter options and purpose make it clear this is the listing tool for resume entries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sprint_lanesList sprint board lanesARead-onlyIdempotentInspect
List the board lanes (task placements in columns) of a sprint. Pass sprint_id to scope to one sprint; lanes missing for tasks already in the sprint are backfilled automatically. This is the sprint kanban board.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, establishing a safe read operation. The description adds useful behavioral context: the auto-backfill of missing lanes for tasks already in the sprint and the notion of a kanban board. It does not contradict the annotations, and it gives insight beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: the first states the verb and resource, the second explains scoping and a notable behavior, the third provides a helpful metaphor. It is front-loaded with the essential information and contains no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and sprint_id scoping, and the annotations cover safety, reducing the burden. However, it leaves a meaningful gap: since `sprint_id` is optional in the schema, the agent is not told what happens if it is omitted, nor is the `task_id` filter mentioned. Without an output schema, a bit more on return shape or default behavior would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single `body` parameter with nested optional fields, but top-level schema description coverage is 0%. The description explains only `sprint_id` (to scope the list) and does not mention `task_id`, `page`, or `page_size`. This leaves the agent to infer or guess the meaning of these parameters, especially `task_id`, which has no schema description either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('board lanes of a sprint'), and the parenthetical '(task placements in columns)' plus 'This is the sprint kanban board' distinguishes it from sibling list tools like list_sprints or list_tasks. The core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance by instructing to pass `sprint_id` to scope to one sprint. It lacks an explicit alternative comparison (e.g., versus retrieve_sprint_lanes) or what happens without sprint_id, but the context is clear enough for most selection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sprintsList sprintsARead-onlyIdempotentInspect
List sprints for projects in the companies the user belongs to. Filter by state (PLANNED|ACTIVE|CLOSED) and order by start/end date. Use it to find a project's active sprint. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable context: the data scope (companies the user belongs to) and the presence of app_url with a direct instruction to give it to the user instead of navigation instructions. This goes beyond the annotations and helps the agent understand behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, followed by a usage tip and an actionable instruction about app_url. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with readOnly and idempotent annotations, the description covers the main purpose, filtering, and a key output field (app_url). It does not mention pagination defaults or other fields, but the lack of an output schema and the simplicity of the use case allow this level of detail to be sufficient. The scope and the deep-link behavior add completeness beyond bare listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already includes descriptions for page, page_size, and date formats, but the description adds meaning for the state filter (PLANNED|ACTIVE|CLOSED) and the ability to order by start/end date. The schema coverage signal is 0% for the top-level body parameter, but the inner properties have some descriptions. The description does not explain the date range suffixes (_gte, _lte) or the ordering mechanism in detail, so it partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'List sprints for projects in the companies the user belongs to.' It specifies the resource (sprints), the scope (projects in the user's companies), and supports filtering by state and ordering. This clearly distinguishes it from sibling tools like retrieve_sprints (single sprint) and list_sprint_lanes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case: 'Use it to find a project's active sprint.' It does not explicitly mention alternatives or when not to use it, but the specific use case and the context of sibling tools (e.g., retrieve_sprints for a single sprint) imply the right scenarios. This is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_taskattachmentsList task attachmentsARead-onlyIdempotentInspect
List the files attached to a task (name, size, url) — e.g. customer context on a ticket. Files can also be attached over MCP with request_taskattachment_upload (a temporary-token upload, no base64 in the model's context). Each attachment carries app_url, a deep link to the drawer of the task it is attached to.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds useful behavioral context: the returned fields (name, size, url) and that each attachment includes an app_url deep link to the task's drawer. This goes beyond the annotations and helps the agent anticipate output, though it does not mention pagination or ordering. Score 4 is appropriate because it complements rather than contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each informative: purpose, alternative upload method, and output detail (app_url). No wasted words, front-loaded with the core function. It is appropriately concise while covering essential aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with one parameter and no output schema, the description is sufficiently complete. It specifies the output fields (name, size, url) and highlights the app_url deep link. It does not mention pagination or limits, but given the low complexity and the annotations, this is not a significant gap. A 4 reflects that it might need a small note on ordering or limits but is already solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter task_id is explicitly described in the schema ('ID of the task the attachments belong to'), so schema coverage is effectively high (the signal says 0% but that likely refers to description coverage, not schema). The description does not add any additional parameter semantics, so the baseline of 3 applies: the schema carries the burden and the description adds nothing beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List the files attached to a task' with the specific returned fields (name, size, url). It distinguishes this from sibling tools like list_attachments (which likely lists all attachments) and retrieve_taskattachments (singular), and it provides an example use case. The verb 'list' and resource 'task attachments' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage scenario ('e.g. customer context on a ticket') and mentions an alternative approach for attaching files via request_taskattachment_upload, which helps the agent decide when to use this tool for reading vs. writing. It does not explicitly state when not to use it or contrast with list_attachments or retrieve_taskattachments, but the guidance is sufficient for typical selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_taskcommentsList task commentsBRead-onlyIdempotentInspect
The comment thread of a task (stakeholder updates / discussion). Each comment carries app_url, a deep link to the drawer of the task it belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the return format (each comment has app_url, a deep link), but does not disclose other behaviors like ordering or potential pagination. This goes slightly beyond annotations without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and the second sentence adds a relevant detail about the return format. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and no output schema, the description is reasonably complete for a simple read tool, but it omits some useful context such as whether the response is a list, if results are ordered, and how it differs from retrieve_taskcomments. The mention of app_url gives partial return-value information, but not a full picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate for the under-documented task_id parameter. It mentions 'of a task' but does not explain how task_id is used or what values are valid. The inherent meaning of 'task_id' in the schema is minimal, so the description adds little over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as returning 'the comment thread of a task', which identifies the resource (task comments) and implies a listing operation. It distinguishes from sibling tools like list_ticketcomments and list_taskattachments by specifying 'task' and 'comment thread', though it does not explicitly say 'list all comments'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as retrieve_taskcomments (likely fetching a single comment). The description implies usage via 'of a task' but offers no exclusions or explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_taskdependenciesList task dependenciesARead-onlyIdempotentInspect
List the scheduling dependencies of a project (company_id + project_id path params). Each link has a predecessor, a successor, a dependency_type (FS/SS/FF/SF) and lag_days. Pass task to get only the links touching that task, on either side — both the ones blocking it and the ones depending on it. Each dependency carries app_url, a deep link to the drawer of the successor (the blocked task), where the dependency is managed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context: each link contains `predecessor`, `successor`, `dependency_type`, `lag_days`, and an `app_url` deep link to the successor's drawer. It also clarifies the bidirectional task filter behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized and front-loaded with the main purpose, and every sentence adds useful information about scope, filtering, or result contents. It avoids fluff and is appropriately sized for a listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
In the absence of an output schema, the description lists the key fields returned and explains the deep-link behavior. It is mostly complete for a read-only listing tool, though it could explicitly mention pagination behavior and the fact that the schema declares no required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description carries the burden of explaining parameters. It usefully identifies `company_id`/`project_id` as path params and explains the semantics of `task`, but it does not explain `page` or `page_size` behavior in any detail, nor does it clarify that no parameters are required at the schema level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb, 'List the scheduling dependencies of a project', and names the scoping parameters (`company_id` + `project_id`). This clearly distinguishes it from sibling tools like `create_taskdependencies`, `destroy_taskdependencies`, and `retrieve_taskdependencies`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use the `task` parameter: to get only links touching that task, on either side, including both blocking and dependent links. It does not explicitly compare against `retrieve_taskdependencies` for fetching a single dependency, but the filter guidance is clear and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksList tasksARead-onlyIdempotentInspect
List tasks the user can access. Rich filtering: project_id, sprint (by sprint id), sprint__isnull=true (product backlog), parent_id, is_completed, depth, plus fuzzy search (trigram over title+description) and literal title__icontains / description__icontains. Filter tickets with has_ticket=true (a ticket is a task with a linked ticket submission) and status with status (BACKLOG|TODO|IN_PROGRESS|DONE). "Open tickets" = has_ticket=true + status not DONE. To assign/change status/tag a ticket use the task tools (task_assign_user, partial_update_tasks, add_tag_tasks). Plan-my-day: filter by planned/due dates with expected_stop_datetime__date (due on a day, e.g. today), expected_stop_datetime__gte/__lte (due after/before, for a range like this week), expected_start_datetime__* likewise, and expected_stop_datetime__isnull=false (has a due date). Also filter by is_milestone, priority (exact/gte/lte), tag (exact tag text), and assignee_id (tasks assigned to a user id). Paginated and ordered by board position. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context: pagination, ordering by board position, and that every task includes an app_url deep link to give to the user. It does not describe response shape or rate limits, but for a read-only list tool this is adequate. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense with useful information. It front-loads the core purpose and then logically groups filters (tickets, plan-my-day, assignments, etc.). Every clause contributes value, though it could be slightly more organized with bullet points. Overall, the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the large number of parameters, lack of output schema, and minimal schema descriptions, the description covers major use cases well: ticket filtering, plan-my-day date ranges, milestone/priority/tag/assignee filters, and the helpful app_url deep link. It does not explain all parameters or response structure, but for a list tool this is strong contextual coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has ~40 parameters with almost no descriptions (0% coverage). The description compensates by explaining key filters (project_id, sprint, sprint__isnull, parent_id, is_completed, depth, search, title__icontains, description__icontains, has_ticket, status, date/time filters). It does not cover every parameter (e.g., progress, importance, story_points, assigned_to_me), but it explains the most important ones and the __gte/__lte/__isnull conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List tasks the user can access', providing a specific verb and resource. It immediately distinguishes itself from sibling tools like list_projects and list_sprints by noting 'Rich filtering' and detailing the many filter options, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names alternative tools for mutations ('To assign/change status/tag a ticket use the task tools (task_assign_user, partial_update_tasks, add_tag_tasks)') and provides concrete use cases with filter suggestions, such as "Open tickets" and "Plan-my-day". This tells the agent when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasktagsList tagsARead-onlyIdempotentInspect
List the task tags defined in a company (company_id path parameter). Tags are company-scoped labels that can be attached to tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only and idempotent behavior is already provided by annotations, and the description adds the company scoping constraint. However, it does not disclose other behaviors like pagination or ordering, so the additional context beyond annotations is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that state purpose and scoping without any redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one parameter and no output schema, the description is complete. It explains what task tags are and how they are scoped, which is sufficient for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description mentions company_id as the scoping parameter. It does not explain the body wrapper or value type beyond what the schema already contains, providing only marginal added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists task tags for a company, using the verb 'List' and specifying the resource. It distinguishes itself from create/retrieve tag tools by mentioning company scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The company-scoped context implies when to use this tool (to get all tags for a company), but there is no explicit comparison to alternatives like retrieve_tasktags or list_tasks. The usage guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketcommentsList ticket commentsBRead-onlyIdempotentInspect
The comment thread of a ticket submission, oldest first. Each comment carries app_url, an INTERNAL deep link to the ticket's task drawer — do not hand it to the customer; use the ticket's public_url (from retrieve_ticketsubmissions) for a customer-facing link.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint true, so the safety profile is covered. The description adds useful behavioral context: the comments are returned oldest first, and each comment contains an internal deep link that should not be shared with customers, pointing to public_url for customer-facing use. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose, and every word earns its place. The caution about app_url is concise and necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward list tool with one parameter and rich annotations, the description is mostly complete. It explains the ordering, the content of each comment, and a critical security caveat. It doesn't outline the return format, but no output schema is provided, and the title implies a list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the submission_id parameter or explain its format/role beyond referring to 'a ticket submission.' With schema description coverage at 0%, the description fails to compensate, though the schema itself does describe the parameter as 'ID of the ticket submission.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool returns the comment thread of a ticket submission, ordered oldest first. This is a clear enough purpose, though it doesn't explicitly use the verb 'list' or differentiate from retrieve_ticketcomments beyond implying a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like list_taskcomments or retrieve_ticketcomments. The only usage-related note is about not sharing app_url with customers, which is more of a behavioral warning than a selection guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList company membersBRead-onlyIdempotentInspect
List the users who are members of a company. Requires the company_id path parameter. Supports search across email, username, first/last name, display name and identity email — use it to resolve a person's name to a user_id before assigning a task.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds the search capability across fields, but it omits return format and falsely describes the parameter location. The mention of 'search' without the schema containing it further undermines trust in the description's accuracy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the core purpose front-loaded. The second sentence packs a long list of search fields but remains reasonably compact and contains no filler. It earns a high score for efficiency, though the long list could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain return values or list contents; it does not. It also fails to clarify how to pass the search parameter (query string vs. body) and misstates the company_id parameter location. With a nested body schema, this description leaves important gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions company_id and a search parameter, but search is not present in the schema, and company_id is called a path parameter while the schema defines it inside the required body object. This creates confusion rather than clarification, making it impossible for an agent to correctly construct the request based on this description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the users who are members of a company' with a specific verb and resource. It further distinguishes the tool by adding the use case of resolving a name to a user_id before assigning a task, which sets it apart from sibling list/retrieve tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit use case ('use it to resolve a person's name to a user_id before assigning a task'), which helps with when to use. However, it does not mention alternatives or when not to use it, and it incorrectly identifies company_id as a path parameter when the schema places it in the request body, potentially misleading invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_down_tasksMove a task downAInspect
Move a task one position down among its siblings (same parent), swapping order with the task below it. No request body needed. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is a non-read-only, non-idempotent, non-destructive mutation. The description adds the behavioral detail of swapping order with the task below it, which is beyond the annotations. The note about no request body is useful though slightly confusing relative to the schema, and the app_url tip adds response-handling context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action. The extra sentence about no request body and the app_url tip are useful and concise, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reorder operation with annotations covering the mutation profile, the description explains the behavior and offers a response-handling tip. However, it does not mention edge cases like behavior when the task is already the last sibling, or explicitly link to sibling alternatives, leaving a small but notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate. It mentions 'a task' but does not explicitly explain the 'pk' parameter or how to identify the task. The schema itself only says 'The id of the task,' and the description adds little beyond the obvious target, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: moving a task one position down among siblings (same parent) and swapping with the task below. This unambiguously distinguishes it from move_up_tasks, reorder_children_tasks, and other sibling reorder tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that the operation targets a task within its sibling group, implying a single-step downward move. It does not explicitly name alternatives or state when not to use it, but the scoping to siblings provides sufficient situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_relative_to_tasksReorder a task next to anotherAInspect
Place a task immediately before or after a sibling (related_task_id), shifting the other siblings to make room. Both tasks must share the same parent and project. Pass related_task_id and direction (before|after). Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the reordering effect (shifting siblings), the constraint (same parent/project), and the app_url output handling. Annotations are minimal (false/false/false), so this extra context is valuable. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each with a distinct purpose: core action, parameter usage, and output handling. No fluff, well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description includes the essential app_url deep-link instruction. It doesn't detail return format or error cases, but for a reorder tool with this complexity, the coverage is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains related_task_id as a sibling and direction as before/after, adding meaning over the schema. However, it doesn't explicitly map the pk parameter to the task being moved, leaving a slight gap in parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool places a task immediately before or after a sibling, shifting other siblings. This specific verb+resource+relative positioning distinguishes it from sibling tools like move_up_tasks or move_to_project_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context by stating the prerequisite that both tasks must share the same parent and project, and instructs to pass related_task_id and direction. However, it doesn't explicitly contrast with alternative reorder tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_sprint_lanesMove a lane to a board columnAInspect
Move a sprint board lane (a task) to a different board column. Pass project_task_status_id (the target column, which must belong to the lane's sprint project) or null to park it in the synthetic 'Incoming' column. Lanes of closed sprints cannot be moved.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful behavioral constraints beyond annotations: the target column must belong to the lane's sprint project, null parks in synthetic 'Incoming', and closed sprints are prohibited. No contradiction with readOnly/destructive hints since this is a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, fully front-loaded with the main action, and every clause carries necessary information. No filler or repeated schema details beyond the key context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and nested body, the description fully covers the input semantics, edge cases (null), and constraints (closed sprints). There is no missing important information for selecting/invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself provides descriptions for both parameters, and the description reinforces the meaning of project_task_status_id, specifically the null behavior and ownership requirement. Adds value by explaining the semantic relationship between param and project.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Move' and the resource 'sprint board lane (a task)' to a 'different board column'. It distinguishes from siblings like move_to_project_tasks by focusing on sprint lanes specifically, and clarifies the lane is a task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: pass project_task_status_id for a target column or null for 'Incoming', and notes closed sprints cannot be moved. Does not explicitly name alternative tools, but the when-to-use is clearly implied by the resource and action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_to_project_tasksMove a task to another projectAInspect
Move a task to a different project (and company). Pass project_id and company_id; the target project must belong to that company and the user must be a member. The task cannot already be in the target project. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate this is not read-only, the description adds non-obvious behavioral constraints: the task cannot already be in the target project, and the user must be a member. It also provides a practical note about app_url, which helps the agent guide the end user. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core purpose, and every sentence adds meaningful detail. It is concise and well-structured without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema and only basic annotations, the description covers the essential preconditions and even provides an actionable tip about app_url. It lacks explicit return-value information, but the core usage is sufficiently well-specified for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the meaning of project_id and company_id, including their relationship and membership requirements, which goes beyond simple parameter names. However, it omits any handling of the `pk` parameter (task id), and since schema description coverage is listed as 0%, the description does not fully compensate for all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Move a task to a different project (and company)', using a specific verb and resource. This distinguishes it from sibling tools like move_to_sprint_tasks or move_relate_to_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool by stating required conditions ('target project must belong to that company', 'user must be a member', 'task cannot already be in the target project'). It does not explicitly mention alternatives or exclusions, but the context strongly implies it is for cross-project moves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_to_sprint_tasksMove tasks to a sprintAInspect
Move one or more tasks (and all their descendants) into a sprint, or back to the product backlog. Pass task_ids (non-empty list, all in the same project) and sprint_id (null = backlog). Closed sprints are rejected. Returns moved_count and affected_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral details beyond annotations: it explains that descendants move automatically, closed sprints are rejected, and the return values are moved_count and affected_ids. Since annotations are neutral (all false), the description carries the transparency burden and does so effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core action, and every sentence adds useful information: scope, parameter meaning, constraints, and return values. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one nested parameter, no output schema), the description covers all essential aspects: what it does, parameter semantics, constraints, and return values. It is complete enough for an agent to invoke the tool correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0% (top-level body param lacks description), the tool description compensates fully by explaining task_ids (non-empty, same project) and sprint_id (null = backlog). It adds constraints not present in the schema (same project, non-empty), making parameter semantics extremely clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves tasks into a sprint or back to the backlog, with the verb 'move' and specific resource 'tasks' plus 'sprint'. It distinguishes from sibling tools like move_to_project_tasks by explicitly mentioning sprint/backlog context and descendant behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (moving tasks to a sprint or backlog) and includes a constraint (closed sprints rejected). It doesn't explicitly compare with alternatives, but the sprint-specific context naturally differentiates it from move_to_project_tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_up_tasksMove a task upAInspect
Move a task one position up among its siblings (same parent), swapping order with the task above it. No request body needed. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating (readOnly=false), non-idempotent, non-destructive operation. The description adds valuable behavioral context beyond annotations: it specifies the swap ordering, states no request body is needed, and instructs to return the app_url deep link to the user instead of describing UI clicks. This exceeds the baseline set by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and every clause earns its place. The app_url instruction is a concrete actionable directive rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and clear annotations, the description covers the essential behavior, scope (siblings), input requirement (no body), and user-facing output handling (app_url). It does not mention edge cases like what happens if the task is already first, but the core information is sufficient for correct invocations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'pk' parameter or the 'kwargs' wrapper at all. The tool name implies a task id, but the description adds no semantic detail about how to identify the task. The schema's own description for pk is minimal ('The id of the task'), so the description fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource+behavior: 'Move a task one position up among its siblings (same parent), swapping order with the task above it.' This clearly distinguishes it from siblings like move_down_tasks and reorder_children_tasks by specifying the exact scope and granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it explains the operation affects siblings under the same parent and requires no request body. It also gives a usage directive for the app_url deep link. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_projectsUpdate a projectBInspect
Partial update (PATCH) of a project — send only the fields to change (e.g. title or description). Requires the company_id path parameter and the project id. Each project carries app_url, pointing at its dashboard. Other views share the same /{company}/{project}/ base: tasks/list, board, backlog, matrix, tasks/timeline, sprints, attachments, scoring. The timeline (Gantt) is plan-gated — users without it land on the billing page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only set all hints to false, so the description must carry the burden. It mentions the PATCH method and 'send only the fields to change', which is some behavioral context, but then diverges into unrelated information about app_url and plan-gated timeline views, which do not describe this tool's side effects, auth, or error behavior. The description does not disclose what fields are accepted or what happens on success/failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences are useful, but the next two sentences about app_url, other views, and plan gating are tangential to updating a project. This extra information makes the description less concise and obscures the core usage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has nested input objects, no output schema, and minimal annotations, the description should clarify the request structure, accepted fields, and response. It only covers some prerequisites and goes off-topic. The plan-gating comment is irrelevant to the update operation itself, and the discrepancy around company_id weakens reliability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description states 'Requires the company_id path parameter and the project id', but the schema places company_id in the body object, not in path params, creating a contradiction. It also gives examples of updatable fields (title or description) but does not provide a complete list. The schema's own property descriptions are not leveraged by the description, and the overall coverage is low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Partial update (PATCH) of a project', which is a specific verb and resource, and distinguishes it from the full 'update_projects' sibling. It also clarifies the partial semantics with 'send only the fields to change'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use this tool: when you need to change a subset of project fields, using PATCH. It also states the required parameters (company_id and project id), providing prerequisites. However, it does not explicitly name alternative tools like update_projects for full updates, though the naming makes it implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_remindersUpdate a reminderAInspect
Partial update (PATCH) of a reminder — send only the fields to change (e.g. remind_at, text, the channel flags or recipient_id). Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description must convey behavior. It states PATCH semantics and mentions the app_url deep link, but does not disclose permissions, reversibility, or response behavior. This leaves meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the first sentence front-loading purpose and usage, and the second adding useful resource context. It is concise, avoids redundancy, and every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and minimal annotations, the description covers purpose, parameters, and one resource fact. It lacks details about return values, error conditions, or required permissions, making it adequate but not comprehensive for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists example updatable fields (remind_at, text, channel flags, recipient_id) that are not present in the schema's body, providing essential value. However, it does not explicitly map these fields to the body/kwargs structure, leaving some ambiguity about payload placement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Partial update (PATCH) of a reminder', which is a specific verb and resource, and clearly distinguishes it from the sibling 'update_reminders' by emphasizing partial updates. Listing example fields further clarifies the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'send only the fields to change' clearly indicates when to use this tool instead of a full update, providing clear context. However, it does not explicitly name an alternative tool like 'update_reminders', so it lacks an explicit when-not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_resumeentriesUpdate a resume entryAInspect
Partial update (PATCH) of a resume entry — send only the fields to change (e.g. note or date range). Requires the company_id path parameter and the entry id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds context that this is a PATCH (partial update) that only modifies specified fields, which is behavior beyond the annotations. It does not mention side effects, permissions, or error behavior, but the partial-update semantics are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-organized sentence that leads with the action (Partial update/PATCH), explains the key behavior, and lists required parameters. Every word adds value; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two required parameters, no output schema), the description covers the core semantics: what it does, the partial nature, and required inputs. It does not explain the domain concept of 'resume entry' or error cases, but these are likely understood from the broader API context. It is reasonably complete for a partial-update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (company_id and pk), so schema coverage is effectively 100% despite the context signal. The description reiterates that company_id and the entry id are required but adds no new meaning beyond the schema. The 'send only the fields to change' hints at optional fields but does not enumerate them, so it does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a partial update (PATCH) of a resume entry, with explicit mention of sending only changed fields. It distinguishes from full updates by using the term 'partial' and gives an example (note or date range), making the purpose unambiguous and differentiating it from sibling tools like update_resumeentries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you want to change only a subset of fields, as opposed to a full update. It states the required parameters (company_id and entry id) but does not explicitly name the alternative tool (update_resumeentries) or provide explicit 'when not to use'. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_sprintsUpdate a sprintAInspect
Partial update (PATCH) of a sprint — send only the fields to change (e.g. name or planned dates). Lifecycle transitions use the dedicated start/close tools, not this one. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden of disclosing behavior. It adds useful context: PATCH semantics, the exclusion of lifecycle transitions, and the app_url existence. However, it doesn't mention auth, side effects, or how omitted fields behave. More importantly, the claim 'send only the fields to change' conflicts with the schema's required body fields (project_id, name, start_date, end_date), which undermines transparency about actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: the core PATCH definition with examples, the lifecycle-transition exclusion, and the actionable app_url guidance. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key usage context: partial update, allowed field categories, lifecycle exclusions, and a concrete user-facing action. However, with no output schema, no auth/error/side-effect information, and the conflicting required-field representation, it leaves gaps that could lead to incorrect invocation. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only gives examples like 'name or planned dates' without mapping to exact parameter names. The schema itself describes date format and project_id, but many fields (goal, planning_notes, review_notes) lack guidance. The 'send only fields to change' assertion contradicts the body schema's required fields, making it unclear whether all required body fields must be supplied despite the partial-update intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Partial update (PATCH) of a sprint', giving a specific verb, HTTP method, and resource. It clearly distinguishes this from lifecycle transition tools by stating 'Lifecycle transitions use the dedicated start/close tools, not this one.' This is far more specific than the generic title 'Update a sprint' and effectively differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: to send only fields to change, and when not to use it: for lifecycle transitions, pointing to 'dedicated start/close tools.' It also provides user-facing guidance about the app_url deep link, telling the agent to give it to the user. This is clear, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_taskdependenciesUpdate a task dependencyAInspect
Change a dependency's dependency_type or lag_days (PATCH). Re-runs the successor's scheduling propagation, pushing its planned dates forward if the new constraint requires it. Still subject to the self-link/cross-project/hierarchy/cycle checks (400 on violation). Each dependency carries app_url, a deep link to the drawer of the successor (the blocked task), where the dependency is managed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations (readOnlyHint=false, destructiveHint=false) by disclosing a side-effect (re-running successor scheduling propagation), specific failure modes (self-link/cross-project/hierarchy/cycle checks with 400), and a response feature (app_url deep link to the successor's drawer). This is rich, non-obvious behavior an agent needs, and it is consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, front-loaded sentences: action, side-effect, and constraints/response detail. No filler—each sentence earns its place and the structural flow from intent to consequence is ideal for an agent scanning quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description covers the core scenario: fields, side-effect, error conditions, and a response attribute (app_url). Minor gaps include lack of detail on the exact response envelope or whether dates can also be pushed backward (only 'forward' is mentioned), but overall it is thorough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 0%, the description does name the two mutable payload fields (dependency_type, lag_days) which are absent from the top-level schema — genuinely useful. However, it does not clarify value formats or constraints (e.g., allowed enum for dependency_type, range for lag_days), and with zero schema-coverage in the description, it could have compensated more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Change') with a specific resource ('a dependency's dependency_type or lag_days'), and appends the HTTP method (PATCH). This distinguishes it from sibling tools like the full update_taskdependencies, making the scope (partial update of two fields) unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for modifying dependency_type or lag_days, which signals selection over the full-update sibling, but there is no explicit when-to-use/exclusion statement or named alternative. Usage context is visible only through the narrow field list, leaving the agent to infer the comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_tasksUpdate a taskAInspect
Partial update (PATCH) of a task — send only the fields to change (progress, status, story_points, order, ...). Note: the backend re-normalizes sibling order after every save, so a large order value lands the task at the end rather than that exact index. Mark a task done by sending is_completed=true, progress=100, status=DONE. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses significant behavioral traits beyond the annotations: backend order re-normalization, the combination needed to mark done (is_completed=true, progress=100, status=DONE), and the app_url deep link to hand to users. These are non-obvious and valuable, and no contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose. Every sentence adds value: the partial-update definition, the order re-normalization warning, the done-marking recipe, and the app_url guidance. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the large number of parameters and no output schema, the description covers the most important usage notes (order, completion, app_url). It doesn't explain return format or errors, but the inclusion of app_url as a return property helps. This is a reasonably complete description for a complex update tool, though it could touch on validation constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having 0% description coverage for parameters, the description adds important meaning for order (re-normalization effect), the completion combo (is_completed/progress/status), and mentions story_points. It does not cover all parameters but provides key semantics for the tricky ones, compensating partially for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a partial update (PATCH) of a task, listing example fields (progress, status, story_points, order). It distinguishes from siblings like update_tasks by emphasizing partial nature, and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: send only fields to change, and gives concrete scenarios like marking a task done with specific values. However, it does not explicitly contrast with alternative tools (e.g., update_tasks) or state when-not-to-use, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_update_tasktagsUpdate a tagAInspect
Partial update (PATCH) of a task tag, e.g. rename its text. Requires the company_id path parameter and the tag id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the HTTP method (PATCH), indicating a mutating operation, and notes that both `company_id` and the tag id are required. However, with annotations all set to false (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description carries the burden of explaining behavioral traits. It does not state what happens to unspecified fields, whether the operation is idempotent, or any potential side effects. The PATCH hint is useful but insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose ('Partial update (PATCH)'), and every word adds value. It avoids redundancy and is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter CRUD tool with no output schema, the description provides the essential information: the operation type, the resource, an example use case, and required inputs. It could have mentioned the absence of an output schema or behavior on unspecified fields, but given the simplicity of the tool, the description is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides basic descriptions for company_id and pk, but schema description coverage is 0%, meaning the tool description adds no extra detail about the parameters' meaning. However, the description adds structural nuance by labeling `company_id` as a 'path parameter' and referring to pk as 'the tag id', which clarifies how the parameters are used in the request. The example 'rename its text' implies that additional body fields (like text) can be included, though not listed in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'Partial update (PATCH) of a task tag' and provides a concrete example ('rename its text'). It specifies the resource (task tag) and the HTTP method, distinguishing it from full updates. This is a specific verb+resource combination that leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies the operation as a 'Partial update (PATCH)', which implies its use case is for modifying specific fields of a tag rather than replacing the entire resource. It does not name alternative tools (e.g., update_tasktags), but the 'Partial update' phrasing effectively communicates when to use this tool versus a full update. The required parameters are also mentioned, giving context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_attachmentsRead an attachment's textARead-onlyIdempotentInspect
Read the text content of an attachment — markdown (.md) first and foremost, plus plain text, CSV, JSON, YAML, XML and HTML. Use this after list_attachments or retrieve_attachments: the url those return is a short-lived signed URL on a private bucket and cannot be fetched directly. Pass the attachment id in kwargs and company_id in the body. At most 256 KB are returned per call: when truncated is true, call again with offset set to the returned next_offset to get the next slice, and repeat until truncated is false — size in the response is metadata written at upload time, not a count of bytes actually read, so don't rely on it to decide you are done paging. PDF and Office files (.docx, .xlsx, .pptx) are NOT readable yet — that is a known gap, not a broken file; point the user at app_url instead. Each attachment carries app_url, a deep link to its project's attachments page — null for company-level attachments, which have no dedicated page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/destructive annotations by detailing the 256 KB return limit, pagination via truncated and next_offset, the misleading nature of 'size' metadata, unreadable file types, and app_url behavior for company-level attachments. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds necessary information—usage sequence, pagination mechanics, known limitations, and fallback. It is well-organized and front-loaded with the core purpose, making it valuable despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and limited annotations, the description covers all critical context: how to invoke, how to page, what to warn users about, and where to redirect for unsupported formats. It is fully self-sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage at 0%, the description thoroughly explains the purpose of each parameter: attachment id in kwargs, company_id in body, and offset for paging. It also explains how to use the response's next_offset to continue reading, adding meaning not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read the text content of an attachment'. It also distinguishes itself from list_attachments and retrieve_attachments by explaining that their returned URL is a short-lived signed URL that cannot be fetched directly, clarifying this tool's unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('Use this after list_attachments or retrieve_attachments'), what to pass (attachment id in kwargs, company_id in body), and provides an explicit alternative for unsupported file types ('point the user at app_url instead'). This covers both use and non-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tag_tasksRemove a tag from a taskAInspect
Detach a tag from a task by tag id. Any tag attached to the task can be removed, including one that belongs to another company (which can happen via the ticket-submit path); removing a tag that is not attached is harmless. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations set to false, the description carries the full burden of behavioral disclosure. It reveals non-obvious behaviors: cross-company tag attachment is possible and removable, missing tags are handled harmlessly, and the task response includes an app_url that should be passed to the user. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded. The core action is stated in the first sentence, followed by two sentences of valuable edge-case and output guidance. Every sentence earns its place; there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers several important behaviors (cross-company removal, harmless missing tag, app_url guidance) but lacks details on error handling for invalid task ids, permissions, or the full response structure. With no output schema and no annotations, this leaves some critical context unresolved, though it is adequate for many use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% according to context signals, so the description must compensate. It only explains the tag id ('by tag `id`') but never mentions the task id (pk) or the wrapper structure body/kwargs. The agent would have to rely on the nested schema descriptions, which the context signal indicates are insufficient. The description adds meaning for only one of the two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-resource pair: 'Detach a tag from a task by tag `id`.' It distinguishes the tool from siblings by clarifying that any attached tag can be removed, including cross-company ones, which is a unique scope detail. The purpose is unmistakable and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: it can remove any tag, even cross-company ones, and it explicitly guarantees that removing a non-attached tag is harmless. It lacks an explicit comparison with alternatives like add_tag_tasks or destroy_tasktags, but the usage context is well conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_children_tasksNormalize child task orderAInspect
Compact and re-normalize the order values of the direct children of a given task (pass the parent task id). Maintenance operation to fix gaps after several moves.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only, not idempotent, and not destructive. The description adds value by explaining that it modifies `order` values and is a maintenance operation, giving the agent a clearer understanding of the side effects beyond the raw annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action, and contains no unnecessary words. Both sentences earn their place: the first explains what it does, the second explains why it exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations and no output schema, the description covers purpose, input, and usage context adequately. It doesn't mention return values or edge cases (e.g., empty children), but these are less critical for a maintenance operation with a clear intent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes `pk` as 'The id of the task,' but the description clarifies it should be the parent task id, adding important context. With only one parameter and zero schema coverage in the description, this additional clarification compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Compact and re-normalize the `order` values') and the resource ('the direct children of a given task'). It specifies the scope (direct children) and the input (parent task id), making it distinct from siblings like reorder_root_tasks or move_up_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'Maintenance operation to fix gaps after several moves.' This implies usage scenarios but does not explicitly name alternatives or exclusions. The context is enough to guide an agent when reordering is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_root_tasksNormalize root task orderBInspect
Compact and re-normalize the order values of the top-level (root) tasks of a project. Pass project_id. A maintenance operation that fixes ordering gaps; it does not accept an explicit ordering list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds that it 'fixes ordering gaps' and is a 'maintenance operation', but does not detail side effects or prerequisites, such as whether the project must exist or what happens to dependent tasks. Given the annotations, the added context is minimal but present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three sentences and front-loads the main action, but the unnecessary and contradictory 'Pass `project_id`' directive detracts from its clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits how to provide the required project_id despite referencing it, and with no output schema it does not clarify return values or side effects. The tool cannot be correctly invoked based on the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines zero parameters, yet the description instructs the agent to 'Pass `project_id`', which is not defined in the schema. This contradiction makes it unclear how to supply the required project identifier and is a critical flaw.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Compact and re-normalize'), target ('order values of top-level (root) tasks'), and scope ('of a project'), clearly distinguishing it from the sibling `reorder_children_tasks` which targets child tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains this is a maintenance operation for fixing ordering gaps and explicitly excludes explicit ordering lists, giving the agent a clear when-to-use/when-not-to-use. It does not name alternative tools, but the sibling naming convention provides enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_attachment_uploadRequest an attachment upload URLAInspect
Get a short-lived, one-time upload_url to hand the file bytes off outside this conversation — use this for files too large or too binary to inline via create_attachments (text/content_base64 there are capped at 4 MB and go through the model's own context). POST the file as multipart form data to upload_url with the field named file (max size and allowed content types are in the response) before expires_at; the token is consumed by the first successful upload and creates the attachment itself, scoped to company_id and, if given, project_id. This call only reserves the slot — it does not create the attachment yet, so it won't show up in list_attachments until the upload completes.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say the call is not read-only and not idempotent, but the description adds crucial behavioral detail: the token is one-time, consumed by the first successful upload, and the upload itself creates the attachment. This prevents the agent from expecting immediate listing or retry semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: purpose, workflow, constraints, and caveats all appear in three sentences with no redundancy. The key deliverable and distinction from `create_attachments` are front-loaded, and every sentence adds practical value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and annotations providing only negative hints, the description carries the complete burden and succeeds: it explains the returned fields (`upload_url`, `expires_at`, max size, content types), the asynchronous attachment creation, and the lifecycle relative to `list_attachments`. This is sufficient for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema gives little semantic coverage at the top-level body parameter, and the description compensates by explaining `company_id` and optional `project_id` scoping and the exact upload contract. However, it does not explain the `title` sub-parameter, leaving a small gap in full parameter coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly names the deliverable (`upload_url`) and clearly states the tool's purpose: obtaining a short-lived, one-time URL for offloading file bytes that are too large/binary for `create_attachments`. It also distinguishes this tool from siblings by explaining that this only reserves a slot and that the attachment is not visible in `list_attachments` until upload completes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use-case boundary: use it for files too large or too binary to inline via `create_attachments`. It gives concrete steps — POST multipart form-data to `upload_url` with field name `file`, before `expires_at`, with max size and allowed content types from the response — which is exactly the guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_taskattachment_uploadRequest a task attachment upload URLAInspect
Get a short-lived, one-time upload_url to hand the file bytes off outside this conversation — the only way to attach a file to a task over MCP, since task attachments have no inline-content create tool. POST the file as multipart form data to upload_url with the field named file (max size and allowed content types are in the response) before expires_at; the token is consumed by the first successful upload and creates the TaskAttachment itself, scoped to task_id. This call only reserves the slot — it does not create the attachment yet, so it won't show up in list_taskattachments until the upload completes.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-readOnly, non-idempotent, and non-destructive—minimal safety info. The description significantly enriches this by disclosing short-lived expiry, one-time token consumption, that the attachment is created only after successful upload, and that it won't appear in list_taskattachments until then. These behavioral details go far beyond annotations, aiding correct usage and expectation management.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then explains the required upload flow and important caveats. Though multi-sentence (actually one long compound sentence), it contains no fluff; each clause adds essential information about usage, behavior, and constraints. It is concise relative to the complexity of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the one parameter, no output schema, and non-trivial multi-step nature, the description covers all critical aspects: how to obtain the URL, how to upload (multipart, field name), expiry, token one-time use, attachment creation timing, and relation to list_task_attachments. It is fully self-contained and sufficient for correct invocation without additional oracle calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a clear description for task_id: 'ID of the task the file will be attached to.' The description adds little beyond saying the attachment is 'scoped to task_id', which slightly reinforces but does not materially extend semantics. Since the schema covers the only parameter adequately, a baseline of 3 is appropriate; the description does not need to compensate for missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: obtaining a short-lived, one-time URL to upload file bytes for attachment to a task. It explicitly distinguishes itself from other tools by emphasizing it is 'the only way to attach a file to a task over MCP' since task attachments lack inline-content creation. This specific verb+resource description effectively differentiates it from siblings like request_attachment_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance by stating it's the sole method for task attachments and correct use is the only way. It also details the required steps (POST multipart form data with field 'file' before expiry) and clarifies that the call merely reserves a slot and does not create the attachment until the upload completes. This effectively tells the agent when and how to invoke the tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_attachmentsGet an attachmentARead-onlyIdempotentInspect
Retrieve a single attachment by its id: title, kind (an uploaded file or an external link), author, and url — the link itself for links, a signed link expiring after 15 minutes for files. File name, size and content type are filled in for files and empty for links. Use list_attachments first to find the id. To read what a text attachment says, call read_attachments. Each attachment carries app_url, a deep link to its project's attachments page — null for company-level attachments, which have no dedicated page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds significant context beyond these: signed links expire in 15 minutes, file fields are null for links, and app_url behavior for company-level attachments. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, each delivering meaningful information without repetition. It is front-loaded with the core purpose and logically organized, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully discloses return fields and behaviors (kind, url, file metadata, app_url). It covers edge cases (expiring links, null fields for links, company-level attachments) and references related tools, making it comprehensive for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies the pk parameter by mentioning 'by its id' and hints at company_id via 'company-level attachments'. However, it does not explicitly define the role of company_id. Given schema description coverage is 0%, the description only partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function ('Retrieve a single attachment by its id') and enumerates the returned fields, distinguishing it from sibling tools like list_attachments and read_attachments. It uses a specific verb and resource, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use list_attachments first to find the id, and read_attachments to read text content. This provides direct alternatives and when-to-use guidance, surpassing simple implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_companiesGet a companyARead-onlyIdempotentInspect
Retrieve a single company (workspace) by its id, including name, description and metadata. Only companies the user is a member of are accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds behavioral context by stating the returned fields (name, description, metadata) and the membership visibility constraint. It doesn't mention potential 404s or auth errors, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the action, resource, and id. It contains no filler or repeated schema information and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieve-by-id tool, the description covers the resource type, return scope, and access restriction. It lacks explicit alternative guidance and error behavior, but the read-only annotations, single parameter, and absence of output schema make this sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, pk, and the schema describes it as 'The id of the company', so the description's 'by its id' adds little new meaning. With schema description coverage reported at 0%, the description should compensate for the nested kwargs structure, but it does not explain how to pass the parameter beyond the id concept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Retrieve', names the exact resource 'company (workspace)', and scopes it by 'id'. It also clarifies the access restriction, distinguishing it from list_companies which returns collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: to fetch a singular company by id, with the caveat that only member companies are accessible. It does not explicitly name alternatives or provide when-not-to-use guidance, but the single-vs-list distinction is apparent from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_current_userGet the current userAInspect
Return the authenticated user's own profile (id, username, display name, email). Call this to resolve 'me' / 'my tasks' / 'assign it to me' into a concrete user_id, instead of guessing the person's name against the company member list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description describes a read-only operation returning profile data, but annotations declare readOnlyHint=false and idempotentHint=false, directly contradicting the nature of the tool. This is a serious inconsistency that undermines transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function, and includes essential use-case guidance without any redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool without an output schema, the description fully covers what the tool does, what it returns, and when to use it. The tool's simplicity means no further detail is needed, aside from the annotation contradiction already noted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the description cannot add parameter semantics. Per the rubric, a zero-param tool gets a baseline of 4, and the description appropriately focuses on return values and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies the exact resource ('authenticated user's own profile') with listed fields. It also differentiates from sibling tools by resolving 'me' into a user_id rather than guessing names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call this tool ('resolve me/my tasks/assign it to me') and provides an alternative to avoid ('instead of guessing the person's name against the company member list'). This gives clear context relative to alternatives like list_users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_projectsGet a projectARead-onlyIdempotentInspect
Retrieve a single project by id within a company (company_id path parameter), including its title, description and whether it is archived. Each project carries app_url, pointing at its dashboard. Other views share the same /{company}/{project}/ base: tasks/list, board, backlog, matrix, tasks/timeline, sprints, attachments, scoring. The timeline (Gantt) is plan-gated — users without it land on the billing page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint, idempotentHint, and destructiveHint already provided by annotations, the description adds value by disclosing the response fields (title, description, archived, app_url) and the plan-gating nuance where users without timeline access land on the billing page. This goes beyond the annotations and helps the agent anticipate behavior when navigating from the returned app_url.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized; it front-loads the core purpose in the first sentence and then adds useful contextual details about the returned fields, related views, and plan gating. While a bit dense, each sentence earns its place without extraneous fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read operation with two parameters and no output schema, the description provides a solid picture of what to expect: the fields returned and a notable behavioral quirk (timeline gating). It doesn't cover error cases or exhaustive return format, but it is sufficient for a retrieval tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters: company_id as 'ID of the company that owns the projects' and pk as 'The id of the project'. With high schema coverage, the baseline is 3. The description adds no parameter-specific syntactic details, but none are needed beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve a single project by id within a company' — a specific verb, resource, and scope. It distinguishes from sibling list_projects (list many) and update/destroy/create by clearly being a read operation for one project. The title 'Get a project' aligns with the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need a single project's details, including title, description, archived status, and app_url. It doesn't explicitly name alternatives like list_projects, but the distinction is clear from the 'single project' wording. It also provides context about the timeline being plan-gated, which helps avoid unexpected behavior. No explicit when-not-to-use, hence not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_remindersGet a reminderARead-onlyIdempotentInspect
Retrieve a single reminder of a task by id. Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool's non-mutating nature is known. The description adds useful behavioral context by explaining that each reminder carries an app_url linking to the task's drawer, enriching the agent's understanding of the returned data without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that immediately state what the tool does and add a key detail about the return value. No filler or redundant wording, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helps by revealing that reminders include an app_url field, giving the agent a concrete expectation of the return data. For a simple retrieval tool with strong annotations, this is fairly complete, though listing other fields or error behaviors would be more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself fully describes both parameters: task_id is 'ID of the task the reminder belongs to' and pk is 'The id of the reminder'. The description only says 'by id' without specifying which parameter, so it doesn't add much beyond the schema. Since the schema provides clear descriptions, this is adequate, though the description could have clarified that it uses the reminder id (pk) rather than the task id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retrieve'), a specific resource ('a single reminder'), and the method ('by id'). It clearly distinguishes itself from list-type tools by focusing on a single reminder and even provides an extra detail about the app_url deep link, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching one reminder by id, but does not explicitly mention alternatives like list_reminders for multiple reminders or create_reminders for creating. The context is clear but lacks explicit when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_resumeentriesGet a resume entryARead-onlyIdempotentInspect
Retrieve a single resume entry by id within a company (company_id path parameter), including its kind, date range, note text and linked tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool is safe and non-destructive. The description adds valuable context about the return content ('including its kind, date range, note text and linked tasks') without contradicting the annotations. It does not describe error cases or permission requirements, but annotations cover the safety aspect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and resource. It contains no filler, efficiently covering purpose, scope, and return content in one line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters (both required) and no enums or nested complexity, the description covers the key aspects: what it does, the scope, and what is returned. It does not mention pagination or error handling, but for a simple retrieve-by-id tool with read-only annotations, this is sufficient. The list of included fields compensates for the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'pk' is the resume entry id and 'company_id' is the parent scope. It adds meaning by explaining that retrieval is scoped within a company and that the response includes linked tasks. Minor inaccuracy: it calls company_id a 'path parameter' while the schema places it in the request body, but the schema itself is clear enough to prevent misplacement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Retrieve a single resume entry by id within a company') and clearly identifies the resource and scope. It distinguishes from sibling tools like list_resumeentries (which retrieves multiple) and create/update/destroy operations by explicitly stating 'single' and 'by id'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this to fetch one specific resume entry by id, scoped to a company. It does not explicitly mention alternatives (e.g., for multiple entries use list), but the contrast with siblings is obvious from the verb 'retrieve' and 'single'. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_sprint_lanesGet a sprint board laneARead-onlyIdempotentInspect
Retrieve a single sprint board lane by id, showing which task sits in which board column for its sprint.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds a behavioral detail about what the lane shows (which task sits in which board column), which is useful, but does not disclose additional traits like error handling or return format, so it stays at a mid score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, immediately front-loaded with the verb and resource, and contains no filler. Every clause adds information about the operation's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and strong sibling context (e.g., list_sprint_lanes, move_sprint_lanes), the description adequately explains the tool's function and result. It could mention error behavior (e.g., not found), but that is not essential for a basic retrieve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains only a generic 'pk' description ('The primary key of the resource') with 0% schema coverage. The description's 'by id' clarifies that pk is the lane's identifier, adding meaning beyond the schema. With only one parameter and this clarification, it earns a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Retrieve a single sprint board lane by id' with a specific verb and resource, and adds 'showing which task sits in which board column for its sprint' which clarifies the tool's unique output. This clearly distinguishes it from list_sprint_lanes (plural) and other sprint-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching a single lane by ID, with the word 'single' contrasting with list-style tools. It provides clear context but does not explicitly mention alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_sprintsGet a sprintARead-onlyIdempotentInspect
Retrieve a single sprint by id, including name, project, start/end dates and lifecycle state. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by listing the returned fields and instructing to pass app_url directly to the user, going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first covers purpose and return content, the second gives a clear user-handoff instruction. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-object retrieve with strong annotations, the description is complete. It names the key fields returned and includes the app_url detail, fulfilling the need without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the only parameter 'pk' has a generic description. The tool description only says 'by id', which mildly clarifies the parameter's meaning, but lacks specifics like type or format beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve a single sprint by id') and the resource ('sprint'), with specific fields included. This distinguishes it from sibling tools like list_sprints and retrieve_sprint_lanes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific sprint id, but does not explicitly mention alternatives or exclusions such as 'for all sprints, use list_sprints'. No direct guidance on 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.
retrieve_taskattachmentsGet task attachmentBRead-onlyIdempotentInspect
Get the metadata and download url of a single task attachment. To attach a new file, use request_taskattachment_upload. Each attachment carries app_url, a deep link to the drawer of the task it is attached to.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows it's a safe read. The description adds that it returns metadata and a download URL, and notes app_url is a deep link to the task drawer, which is useful context beyond the annotations. It does not mention any side effects or error cases, but for a simple read with strong annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a purpose: stating the action, providing an alternative for related behavior, and adding an extra detail about the response (app_url). It is front-loaded with the core purpose and avoids unnecessary elaboration. Slight waste is the third sentence, which is optional but still relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with strong annotations and no output schema, the description covers the essential behavior: retrieving metadata and download URL, and the app_url detail. It does not detail what metadata fields are returned or any pagination/error behavior, but given the simplicity and the annotations, it is adequately complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per the signal, meaning the description must compensate for parameter documentation. The description does not mention task_id or pk, nor clarify which parameter refers to the attachment id versus the task id. Even though the schema itself includes some descriptions, the tool description adds no value for parameter understanding, leaving the agent to rely solely on the schema for semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the metadata and download url of a single task attachment,' specifying the verb (get), resource (task attachment), and scope (single). It distinguishes from list_taskattachments by emphasizing 'single,' and from upload tools by contrast. The mention of app_url as a deep link adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one explicit alternative: 'To attach a new file, use request_taskattachment_upload,' which helps with a create/read distinction. However, it does not explicitly contrast with list_taskattachments for retrieving multiple attachments, though the word 'single' implies the difference. No other when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_taskcommentsGet task commentARead-onlyIdempotentInspect
Retrieve a single comment of a task by id. Each comment carries app_url, a deep link to the drawer of the task it belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already define readOnly, idempotent, and non-destructive behavior. The description adds the useful detail that each comment includes app_url, a deep link to the task drawer, which provides context about the return value. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and adding one valuable detail about the response. There is no fluff or repetition; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and one return-field detail, but no output schema exists. It does not explain the need for both task_id and pk, nor does it clarify error behavior or pagination (if any). This is minimally viable but leaves gaps for a nested two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions are tautological ('ID of the task' and 'The id of the taskcomment'), providing no real semantic value. The tool description does not clarify the two required parameters (task_id and pk) or their relationship, leaving users uncertain about what 'by id' means. It fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single task comment by id, using the specific verb 'Retrieve' and the resource 'single comment of a task'. It distinguishes itself from siblings like list_taskcomments (which lists) and destroy_taskcomments (which deletes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for fetching one specific comment when the id is known, contrasting with list_taskcomments for all comments. However, it does not explicitly state when not to use it or mention alternative tools, so it lacks the explicit guidance of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_taskdependenciesGet a task dependencyARead-onlyIdempotentInspect
Retrieve a single task dependency of a project by id, including its predecessor, successor, dependency_type and lag_days. Each dependency carries app_url, a deep link to the drawer of the successor (the blocked task), where the dependency is managed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it is a safe read operation. The description adds the detail about the deep link URL (app_url), which is useful but not critical. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences with minimal filler. The first sentence states the primary purpose, and the second adds valuable context about the deep link. It is appropriately sized for the tool's simplicity, though the second sentence could be merged for tighter structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, good annotations, and no output schema, the description adequately covers what is returned (predecessor, successor, dependency_type, lag_days) and highlights the app_url feature. It could mention pagination or error scenarios, but these are less critical for a single retrieve operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% because parameters only have brief descriptions (e.g., 'company_id' and 'pk'), but the required fields are fairly self-explanatory. However, the description does not elaborate on the meaning of 'lag_days' or 'dependency_type', which could be ambiguous for an AI. Since there are only 2 parameters with clear roles, a score of 3 is fair, but the description could have added more value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb and resource ('retrieve a single task dependency'), specific identifier, and lists exact fields included. It stands out from siblings like retrieve_taskcomments and retrieve_tasks because it uniquely mentions dependency-specific fields and the successor deep link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching a specific dependency by its ID, but does not explicitly contrast with list_taskdependencies or mention when not to use it. However, the context is clear enough for an agent to infer the correct scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_tasksGet a taskARead-onlyIdempotentInspect
Retrieve a single task by id, including title, description, status, progress, story points, tags, assignees and order. Inspect a task with this before updating it. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds value by disclosing that every task carries an app_url deep link and by listing the task attributes returned, which are behaviors not captured in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the purpose, no filler. Each clause adds specific information: retrieval scope, fields, use case, and app_url behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieve tool with no output schema, the description is nearly complete. It specifies return fields, the app_url guarantee, and the recommended usage flow. It omits edge-case behavior (e.g., 404 on missing id), but that's not essential for an idempotent read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning the tool description offers no explicit mapping for the 'pk' parameter. The phrase 'by id' is minimal and doesn't clarify that the id is passed via the 'pk' field or its type. Although the schema does include a basic description, the tool description fails to compensate for the low coverage as required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Retrieve a single task by id') and enumerates the exact fields returned (title, description, status, progress, story points, tags, assignees, order). This clearly distinguishes it from sibling list/retrieve tools (e.g., list_tasks, retrieve_taskcomments).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit when-to-use directive: 'Inspect a task with this before updating it.' This gives clear context for the primary use case. It also instructs to use the app_url in user-facing replies. It doesn't mention exclusions or alternatives, but the guidance is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_tasktagsGet a tagARead-onlyIdempotentInspect
Retrieve a single task tag by id within a company (company_id path parameter).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, and destructive=false, so the description doesn't need to restate safety. It adds context about company scoping and lookup by id, but provides no additional behavioral details (e.g., 404 behavior, auth requirements, or return value shape). This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that immediately states the action, resource, and key scoping context. No filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation (retrieve by id), the description is complete enough. It covers the essential constraints (single tag, company scope). It does not describe the response object, but for a simple retrieve operation with a clear tool name, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions for company_id and pk are already clear in the input schema. The description adds relational context ('within a company') but does not mention the pk parameter by name, instead referring to 'id'. With schema description coverage at 0% from the tool description, it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve'), names the resource ('single task tag'), identifies the lookup key ('by id'), and scopes it within a company. This clearly distinguishes it from list_tasktags (plural) and mutating/creating tools like create_tasktags or update_tasktags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: use this when you need exactly one task tag identified by id within a company. It does not explicitly mention alternatives (e.g., 'use list_tasktags to fetch multiple tags'), so it slightly misses the highest bar for when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_ticketcommentsGet ticket commentARead-onlyIdempotentInspect
Retrieve a single comment on a ticket submission by id. Each comment carries app_url, an INTERNAL deep link to the ticket's task drawer — do not hand it to the customer; use the ticket's public_url (from retrieve_ticketsubmissions) for a customer-facing link.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/safe behavior. The description adds crucial non-obvious context: the returned app_url is an internal deep link that must not be exposed to customers, and the customer-facing counterpart comes from another tool. This goes beyond annotation basics and provides meaningful operational guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and followed by a high-value safety note. No wasted words; every phrase serves a function. The structure is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieve operation with good annotations, the description covers the essential behavioral quirk (internal vs. public link). It does not explain parameter relationships or error scenarios, but those are partly addressed by the schema. The presence of an important output-usage caveat elevates it above minimal adequacy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only says 'by id' without clarifying which parameter (submission_id vs. pk) or how they relate. With schema description coverage at 0% (the tool description adds no parameter detail), it fails to compensate for the nested structure and dual-parameter requirement. The schema does provide descriptions, but the tool description itself adds little semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Retrieve') and the specific resource ('a single comment on a ticket submission'), distinguishing it from sibling tools like list_ticketcomments or retrieve_ticketsubmissions. The verb+resource combination is unambiguous and immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives, but the phrase 'single comment' implies a contrast with listing tools. It provides a strong usage guideline for the returned data (not sharing app_url with customers), which is a form of context, but it lacks explicit exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_ticketsubmissionsGet ticket submissionARead-onlyIdempotentInspect
Read the intake metadata of a ticket: who opened it (submitter), which widget, when. A ticket is a Task; use retrieve_tasks for the task detail and the task tools to triage. Carries two different links: app_url is the INTERNAL deep link to the ticket's task drawer in the team's ProWoDo app — never hand it to the person who opened the ticket. public_url is the PUBLIC ticket page that person sees, safe to share with them.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds value beyond annotations by disclosing the presence of two distinct URLs with different sharing rules: 'app_url is the INTERNAL deep link... never hand it to the person who opened the ticket' and 'public_url is the PUBLIC ticket page... safe to share.' This is meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each focused: first states purpose, second gives alternative tool, third explains the two links. No fluff or repetition. It is front-loaded with the most critical information and maintains high information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the essential aspects: what data it reads (submitter, widget, when), and the two return links with sharing guidance. It doesn't mention return format or error cases, but these are not required given the straightforward nature and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description does not mention the pk parameter or its format. Although the schema describes pk as 'The id of the ticketsubmission,' the description fails to compensate for the lack of coverage. The parameter is simple, but the description provides no explicit guidance beyond the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Read the intake metadata of a ticket: who opened it (submitter), which widget, when.' It uses a specific verb (read) and resource (ticket submission), and explicitly distinguishes from retrieve_tasks by noting 'A ticket is a Task; use retrieve_tasks for the task detail.' This differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: 'use retrieve_tasks for the task detail and the task tools to triage.' It also gives context about the two links and how to share them appropriately, adding practical usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_usersGet a company memberARead-onlyIdempotentInspect
Retrieve a single member of a company by user id. Requires the company_id path parameter. Returns the user's profile fields (name, email, display name).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds return fields (name, email, display name) and the path parameter requirement, but does not disclose error handling or permissions. This is adequate given annotation coverage, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences. It front-loads the core purpose, then states a requirement and a return summary. Every sentence earns its place with no redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-retrieval tool with strong annotations and schema, the description covers the purpose, required parameter, and return fields. It doesn't specify that the response is a single object, but 'single member' conveys that. The lack of an output schema is not a problem given the explicit list of returned fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters (company_id as company ID, pk as user ID). The description adds that company_id is a path parameter and that retrieval is by user id, but does not name pk. This adds marginal meaning beyond the schema, and the schema's own descriptions are sufficient, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Retrieve a single member of a company by user id', which is specific and distinguishes it from list_users (multiple) and retrieve_current_user (self). The verb 'Retrieve' and resource 'single member' are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching a single user by id and notes the required company_id path parameter, but does not explicitly contrast with alternative tools like list_users or retrieve_current_user. The context is clear but exclusions are not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sprintsStart a sprintAInspect
Transition a sprint from PLANNED to ACTIVE. Fails if the sprint is not PLANNED or if another sprint is already ACTIVE in the same project (only one active sprint per project). Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing specific failure conditions (sprint not PLANNED or another ACTIVE sprint) and instructing on how to handle the app_url deep link in user-facing responses. This adds meaningful behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it opens with the core action, then specifies conditions and output guidance in three tight sentences. No redundancy or filler, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description covers all operational essentials: the state transition, failure cases, and how to present the deep link. This is complete enough for an agent to invoke the tool correctly and handle the response appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes pk as 'The primary key of the resource' with 0% coverage from the description. The description never explicitly states that pk should be the sprint's identifier or how to provide it. Since the description carries the burden for parameter meaning, this is a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action: 'Transition a sprint from PLANNED to ACTIVE.' This specific verb-resource combination distinguishes it from sibling tools like close_sprints (which transitions to CLOSED) and create_sprints (which creates a new sprint). The mention of failure conditions further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you want to start a sprint (transition from PLANNED to ACTIVE). It also gives important constraints (fails if not PLANNED or another ACTIVE sprint exists). However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unassign_user_tasksRemove a user assignment from a taskBInspect
Removes a user from a task's assignee list. Noop if the user is not currently assigned (returns unassigned=false).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context by noting the no-op case and `unassigned=false`, but it contradicts the annotation `idempotentHint: false`. If removing an absent assignment is a no-op, the operation is effectively idempotent, so this is an annotation contradiction and per rubric receives score 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: one clear purpose sentence plus a compact parenthetical for the no-op return behavior. No words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the most important edge case, but with no output schema it does not fully describe the successful return shape, error behavior, or nested argument requirements. It is adequate but gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description conveys only the semantic roles of a user and a task; it does not mention the actual parameter names `user_id` and `pk`, nor does it explain the required nested `body`/`kwargs` structure. With schema description coverage reported as 0%, the description does not compensate sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Removes a user from a task's assignee list.' It clearly distinguishes this from the sibling `assign_user_tasks`, and the title reinforces the same operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb 'Removes', but the description does not explicitly say when to use or not use this tool. It also does not point to `assign_user_tasks` as the inverse/alternative operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectsReplace a projectAIdempotentInspect
Full update (PUT) of a project: every writable field must be supplied. Requires the company_id path parameter and the project id. To change only a few fields, prefer the partial-update tool. Each project carries app_url, pointing at its dashboard. Other views share the same /{company}/{project}/ base: tasks/list, board, backlog, matrix, tasks/timeline, sprints, attachments, scoring. The timeline (Gantt) is plan-gated — users without it land on the billing page.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds that every writable field must be supplied, which clarifies the full-replacement semantics. It also mentions plan-gated views, though this is tangential to the update operation itself. Overall, it adds useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with essential info, but then includes several sentences about app_url and various view routes (tasks/list, board, backlog, etc.) and timeline gating. These are not directly relevant to the update operation and add unnecessary length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a full-replacement PUT, the description fails to list the writable fields, which are not present in the schema either. It also contains the incorrect path/body placement for company_id. While annotations and output schema absence reduce the burden, these gaps make the description incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description incorrectly states that company_id is a path parameter, while the schema places it inside the body. This contradiction could mislead the agent. Additionally, it does not enumerate the writable fields it says must be supplied, leaving a critical gap beyond what the schema shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full update (PUT) of a project' with a specific verb, resource, and HTTP method. It also explicitly distinguishes from the partial-update tool, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'To change only a few fields, prefer the partial-update tool,' providing a direct alternative. It also states the required parameters (company_id and project id), which tells the agent when and how to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_remindersReplace a reminderAIdempotentInspect
Full update (PUT) of a reminder — every writable field required. Prefer the partial-update tool for small edits. Each reminder carries app_url, a deep link to the drawer of the task it is set on.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive. The description adds meaningful context: 'every writable field required' clarifies PUT semantics, and the app_url note explains a non-obvious property of reminder objects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a purpose: defining the operation, giving usage guidance, and noting a resource trait. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and no output schema, the description covers the core behavior and guidance but fails to specify what 'every writable field' actually includes. The schema alone does not fill this gap, creating potential ambiguity. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It says 'every writable field required' but never enumerates which fields are writable. The schema only lists task_id and pk, while the description implies there are more fields, leaving the agent without a clear picture. Minimal added meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States 'Full update (PUT) of a reminder' with a specific verb (update), resource (reminder), and HTTP method. Clearly distinguishes from sibling partial_update_reminders by calling it 'Full update' and mentioning the partial-update tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Prefer the partial-update tool for small edits,' giving when-not-to-use guidance and naming an alternative. The opening 'Full update' also implies this is for complete replacement. This matches the high standard of the reference example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_resumeentriesReplace a resume entryAIdempotentInspect
Full update (PUT) of a resume entry — every writable field required. Requires the company_id path parameter and the entry id. Prefer the partial-update tool for small edits.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds context that it is a PUT operation requiring every writable field, which is valuable for understanding the update semantics. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the full update nature in the first clause. It uses two sentences to convey the operation, requirements, and alternative, with no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two parameters, no output schema), the description covers essential aspects: update semantics, required parameters, and guidance for alternatives. It could mention the return value or success behavior, but such information is often implied for CRUD operations and is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptive explanations for both parameters (company_id and pk). The description reinforces the need for company_id and 'entry id', but incorrectly labels company_id as a 'path parameter' when the schema places it in the body. This minor inaccuracy slightly reduces clarity, but the schema's own descriptions prevent significant ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Full update (PUT) of a resume entry', specifying the verb, resource, and HTTP method. It differentiates from sibling partial_update_resumeentries by explicitly mentioning that all writable fields are required and recommending the partial-update tool for small edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on prerequisites ('Requires the `company_id` path parameter and the entry id') and advises when not to use it ('Prefer the partial-update tool for small edits'). However, it does not elaborate on scenarios where this full update is necessary beyond small edits, but the distinction is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sprintsReplace a sprintAIdempotentInspect
Full update (PUT) of a sprint — every writable field required. Prefer the partial-update tool for small edits such as adjusting dates. Each sprint carries app_url, a deep link straight to it in the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: 'every writable field required' makes the PUT semantics and missing-field implications clear, and the advice to return the app_url deep link to the user is an actionable behavioral guideline. No contradiction with annotations (idempotentHint, non-destructive) exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences. The first states the core function, the second provides usage guidance, and the third adds a valuable user-facing tip. Every sentence earns its place with zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (nested body object, many fields) and no output schema, the description does well: it covers purpose, usage guidance, and a response-related hint (app_url). However, it does not describe the full return value or potential error cases, leaving a minor gap for such a full-replacement operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not enumerate individual parameters (0% schema coverage from description), but it does add important semantic context: the PUT method and that every writable field is required. This goes beyond just repeating the schema, but leaves field-level meaning (e.g., 'goal', 'review_notes') to be inferred from their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a 'Full update (PUT) of a sprint' — a specific verb (replace/update) and resource (sprint). It distinguishes itself from the partial-update sibling by explicitly contrasting with it, satisfying the 'distinguishes from siblings' criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when NOT to use this tool: 'Prefer the partial-update tool for small edits such as adjusting dates.' This is a clear alternative referral, giving the agent a rule of thumb for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskdependenciesReplace a task dependencyAIdempotentInspect
Full update (PUT) of a task dependency: predecessor, successor, dependency_type and lag_days must all be supplied. Re-runs the same propagation and validation as create (self-link, cross-project, ancestor/descendant and cycle checks). Prefer the partial-update tool for small edits. Each dependency carries app_url, a deep link to the drawer of the successor (the blocked task), where the dependency is managed.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it discloses that the update re-runs validation checks (self-link, cross-project, ancestor/descendant, cycles) and explains the app_url deep link behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each with distinct purpose: explaining the full-update requirement, the validation behavior, and the recommendation to use partial-update with app_url context. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: full update semantics, required fields, validation behavior, alternative tool, and a useful deep-link detail. Despite having nested objects and no output schema, the description is comprehensive enough for an agent to understand the tool's behavior and invocation requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only lists company_id, project_id, and pk, but the description specifies the critical body fields: 'predecessor, successor, dependency_type and lag_days must all be supplied'. This fills the gap left by the schema, which has no coverage for these essential parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full update (PUT) of a task dependency', providing a specific verb and resource. It also distinguishes from the partial-update sibling by explicitly calling itself 'Full update' and referencing the alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Prefer the partial-update tool for small edits', giving clear when-to-use and when-not-to-use guidance. Also mentions re-running propagation and validation, which implies this is for cases requiring full re-validation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_tasksReplace a taskAIdempotentInspect
Full update (PUT) of a task: every writable field must be supplied, including title. Saving re-normalizes the order of sibling tasks. To change only a few fields, prefer the partial-update tool. Every task carries app_url, a ready-to-use deep link into the ProWoDo web app — give it to the user instead of describing where to click.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only and not destructive, and the description aligns by calling it a full PUT. It adds critical behavioral context: all writable fields must be supplied (including title) and that saving re-normalizes sibling order—a side effect not in annotations. Also mentions app_url in response, adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each packed with useful information: the full-update semantics, the side-effect, and the alternative tool/app_url guidance. No redundancy, no fluff, and the most important detail (all fields required) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with many parameters and nested objects, the description covers the essential operational context: full replacement, mandatory fields, sibling reordering, alternative tool, and response link guidance. It does not explain response structure (no output schema) or error conditions, but the schema is detailed enough to fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate but only mentions 'title' and indirectly 'order' via re-normalization. It does not explain the semantics of most parameters (e.g., reach, effort, impact, status, progress, confidence), leaving the agent to rely solely on the schema, which itself lacks descriptions for many fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Full update (PUT) of a task', specifying the verb and resource. It explicitly distinguishes itself from the partial-update tool by noting 'prefer the partial-update tool' when changing only a few fields, making it a clear and specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'every writable field must be supplied' is a condition for use, and 'prefer the partial-update tool' gives a direct alternative. It also adds a practical tip about using app_url for user-facing links, which is useful for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_tasktagsReplace a tagAIdempotentInspect
Full update (PUT) of a task tag — every writable field required. Requires the company_id path parameter and the tag id.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kwargs | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover idempotency, read-only status, and destructiveness. The description adds that this is a PUT full-update requiring every writable field, which is useful but does not detail failure modes or what happens if fields are omitted. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action ('Full update (PUT)'), and includes necessary constraints without any redundant wording. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a full-update tool with a nested body parameter, no output schema, and zero schema description coverage, the description is incomplete. It fails to list the writable fields or direct the agent to where they can be found, leaving substantial ambiguity for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description needed to explain the body fields. It mentions company_id and tag id as identifiers but leaves the actual writable fields unspecified. The phrase 'every writable field required' tells the agent the body must contain all fields, but does not enumerate them, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a full update (PUT) of a task tag, naming the resource and the action. It distinguishes from partial_update_tasktags by emphasizing 'every writable field required', making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this is a full replacement operation and that all writable fields are required, implicitly guiding when to use it versus partial updates. It also specifies the required identifiers (company_id and tag id), but stops short of explicitly naming partial_update_tasktags as the alternative for partial changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT- AlicenseNot gradedqualityCmaintenanceA Voice of Customer pipeline that cross-references feedback from calls, reviews, chat, and other sources to surface only corroborated patterns, routing actionable insights with exact customer quotes to the right people.MIT
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT