Decknote
Server Details
Kanban boards your AI agent can use: add, complete, move and recall tasks with your team.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 211 tools
Most tools have distinct resource/action scopes, but several pairs overlap heavily: search vs search_tasks, fetch vs get_task, list_boards vs list_projects, and get_board vs show_board. The detailed descriptions usually resolve the choice, but the sheer size makes accidental selection plausible.
Nearly all names are snake_case verb_noun (create_board, get_task, list_invoices), giving a predictable pattern. A handful of exceptions like overview, fetch, search, and bulk_tasks break the convention, but only mildly.
211 tools is far beyond an appropriate set for any single MCP server and exceeds the 50+ extreme-mismatch threshold. Even with strong individual descriptions, this creates severe discoverability and selection burden.
The surface covers boards, tasks, lists, labels, comments, checklists, attachments, time tracking, invoicing, clients, workload, portals, templates, webhooks, and API access, with lifecycle operations throughout. No important missing operation is apparent for the stated project/work-management domain.
Available Tools
211 toolsadd_attachmentAdd attachmentADestructiveInspect
Attaches a link (url) or a file (contentBase64 + filename) to a task. Files follow the board owner's plan: 5 MB each and 100 MB per board on Free, 25 MB and 2 GB on Pro. Photos are optimized, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | An http(s) link. | |
| name | No | The link's or file's name. | |
| cardId | Yes | ||
| filename | No | For a file: its name with extension. | |
| mimeType | No | ||
| contentBase64 | No | For a file: its bytes, base64-encoded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=true, so the safety profile is covered. The description adds genuinely new behavioral context the annotations cannot convey: per-file and per-board size quotas that vary by plan (Free vs Pro) and server-side photo optimization. It does not mention failure behavior when limits are exceeded, which is the one notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action before the quota detail, and every clause carries information. 'Photos are optimized, as in the app' is mildly informal filler but still communicates a real side effect, so it 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 mutation tool with no output schema, the description covers input modes, size constraints and transformation behavior, while annotations cover the destructive/read-only profile. What is missing is error/limit-exceeded behavior and any permission requirement, which would be the remaining useful additions.
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 coverage is 67%, so roughly a third of parameters are undocumented in the schema. The description compensates by explaining the pairing semantics — url for links, contentBase64 + filename for files — which the schema lists as independent properties without stating they are alternatives. Undescribed parameters (mimeType, name) remain slightly ambiguous, but the mode distinction is the critical semantic.
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 a specific verb (attaches) and resource (link or file) and names the target object (a task), so an agent immediately knows what the tool produces. It also distinguishes the two input modes, url vs. contentBase64 + filename, which is the key ambiguity for this tool. The verb 'add_attachment' is unambiguous against siblings like delete_attachment and rename_attachment despite no explicit naming of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mapping each mode to its parameters (link via url, file via contentBase64 + filename), which tells the agent how to pick a path. However, it never states when to prefer this over sibling alternatives such as create_embed or add_comment, nor any prerequisites (e.g., board membership or permissions). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_checklistAdd checklistCDestructiveInspect
Adds a checklist with its items to a task, in addition to its other checklists.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | ||
| title | No | Default 'Checklist'. | |
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write nature is covered. The description usefully clarifies that existing checklists are preserved, which is additive-behavior context beyond the annotations, but it says nothing about permissions, limits, or effects on the task's state.
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 front-loaded sentence with no padding. It is efficient, though brevity here comes partly from omitting information an agent needs.
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?
Three parameters, low schema coverage, no output schema, and no annotations about the target card. The description omits what cardId refers to and what items should look like, leaving the definition too thin 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 coverage is only 33% (only title is documented), and the description does not compensate: it never explains cardId, the items array format, or how checklists are titled. 'with its items' vaguely alludes to the items parameter but adds no usable syntax.
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+resource: adds a checklist to a task, and it distinguishes itself somewhat by noting items are included and that it does not replace existing checklists. It never explicitly contrasts with the close sibling add_checklist_items, which handles adding items to an existing checklist, so an agent must infer the boundary.
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?
There is no explicit when-to-use guidance and no named alternative, despite the presence of add_checklist_items, update_checklist, and delete_checklist. The clause 'in addition to its other checklists' hints at scope but is not a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_checklist_itemsAdd checklist itemsBDestructiveInspect
Adds items at the end of a checklist.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| checklistId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the mutation/safety profile is covered. The description usefully adds the append-at-end placement semantics, but says nothing about idempotency, duplicate handling, item format, or what happens to existing items.
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 front-loaded sentence with no filler or redundancy. It is efficient, though arguably under-specified rather than optimally concise.
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?
Annotations cover the safety profile and there is no output schema to explain. Still, for a two-required-parameter mutation with 0% schema coverage, the description omits item format, multi-item behavior, and error/ordering semantics, leaving real 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% and there are two required parameters, so the description carries the full burden. It does not explain that 'items' is an array of plain strings (item text) or what 'checklistId' must reference, leaving both parameters' meaning to the bare schema types.
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 ('Adds items') and adds scope detail ('at the end of a checklist'), which distinguishes it from add_checklist (creates a checklist) and update_checklist_item. However, it does not explicitly name or contrast those siblings, so the agent must infer the routing.
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: use it when appending items to an existing checklist. There is no explicit when-to-use vs update_checklist_item/add_checklist guidance and no stated prerequisites (e.g., checklist must exist, permissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_commentAdd commentADestructiveInspect
Adds a comment to a task as the user. By default nobody is notified. With notify: true it notifies @mentioned board members and the card's watchers by push and email, as commenting in the app does; that needs confirm: true, and without it the result is a preview of who would be notified.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Mention a board member by writing @ and their name. | |
| cardId | Yes | ||
| notify | No | Notify mentioned people and watchers, as the app does. Default false. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as destructive and not read-only, and the description adds crucial context: notify defaults to false, confirm:true is required for notification, and without confirm the result is a preview. This is valuable behavioral detail beyond annotations. It doesn't explain what 'destructive' means here or what access is required.
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, front-loaded with the core action, then default behavior, then the notify/confirm interaction. No wasted words. Could be slightly tighter, but every sentence 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?
Given no output schema and 4 parameters with 75% schema coverage, the description covers the main behavioral caveats (notify + confirm) and default. It doesn't mention return values or error cases, but for a comment-adding tool, this is reasonably 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 coverage is 75%, and the description explains the interaction between notify and confirm: notify:true needs confirm:true, otherwise a preview is returned. This adds meaning beyond the schema, which individually describes each parameter but not their joint behavior. The text parameter's @mention syntax is only in the schema, not the 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 states a specific verb and resource ('Adds a comment to a task') and adds the actor ('as the user'). It does not explicitly distinguish itself from siblings like edit_comment or delete_comment, though 'adds' implies creation rather than modification.
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 clarifies the default behavior (nobody notified) and what notify:true does, with a clear condition for using it. But it doesn't mention when to use this instead of edit_comment or react_to_comment, and doesn't explain required permissions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_expense_receiptAdd expense receiptADestructiveInspect
Attaches a receipt to an expense: a photo (JPG, PNG, WebP or GIF, optimized like task photos) or a PDF, sent base64-encoded with its filename. The person who logged the expense and the project owner can add one, also to an expense already on an invoice. At most 10 per expense; each file up to the project owner's plan cap (5 MB on Free, 25 MB on Pro).
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | The file's name with its extension. | |
| expenseId | Yes | The expense. | |
| contentBase64 | Yes | The file's bytes, base64-encoded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: accepted formats, base64 plus filename delivery, authorization rules, the 10-per-expense limit, and plan-based size caps. It does not explain the destructiveHint=true implication, such as whether the addition modifies or replaces existing receipt state or how it can be undone.
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: attachment behavior comes first, followed by permissions and limits. Every sentence contributes operational detail without 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 three required parameters, annotations, and lack of an output schema, the description supplies enough context to invoke the tool correctly. It covers formats, encoding, authorization, per-expense count limits, and size caps.
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 coverage is 100%, so parameter meaning is already largely documented. The description still adds useful semantics: accepted file types, the base64-encoded file plus filename convention, and file-size constraints that apply to the content 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 verb and resource: attaches a receipt to an expense. It immediately distinguishes the operation from general attachment or expense-creation siblings by naming the exact target and supported receipt formats.
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 clearly states who may use the tool and that receipts can also be added to expenses already on an invoice. It does not explicitly name when to use this instead of add_attachment or delete_expense_receipt, so alternative routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_holidayAdd holidayADestructiveInspect
Adds a holiday to the user's calendar: one per day, with a name of up to 80 characters. That day holds no work for anybody in the user's Workload, so every person's capacity for that week is one working day lower; a holiday on a Saturday or a Sunday changes nothing. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | The day, YYYY-MM-DD. | |
| name | Yes | Up to 80 characters, for example Independence Day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: it explains the capacity impact across the Workload, the weekend no-op behavior, the one-per-day constraint, and the Pro-plan requirement. This is exactly the kind of side-effect disclosure needed for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, then immediately explains behavioral consequences. It is dense but every sentence carries relevant 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 two-parameter mutation tool with annotations and no output schema, the description covers purpose, side effects, constraints, plan gating, and edge cases like weekends. An agent has enough context to call 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?
Schema coverage is already 100%, so the baseline is 3. The description adds useful meaning by explaining the effect of the 'day' parameter on weekly capacity and the weekend exception, plus it reinforces the 80-character name constraint.
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 and resource: adding a holiday to the user's calendar. It also scopes the operation by explaining that it applies to everyone in the Workload, which distinguishes it from personal time-off 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?
It gives clear usage context: holidays affect everyone's weekly capacity, and holidays on Saturdays or Sundays change nothing. It also notes that this is a Pro feature, though it does not explicitly compare against siblings like add_time_off or list_holidays.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_page_commentAdd page commentADestructiveInspect
Adds a comment to a note or discussion (plain text, up to 5000 characters); the page moves up its list. Not on an archived page. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Up to 5000 characters. | |
| pageId | Yes | The page (a note or a discussion). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, but the description adds genuinely new behavioral facts: plain-text-only input, a 5000-character ceiling, the side effect that the page moves up its list, the archived-page restriction, and the required editor role. That is unusually strong disclosure of auth, limits, and side effects for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verb and resource, with constraints appended in a tight semicolon-separated chain. No filler and nothing buried.
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 is largely self-sufficient: input medium, limit, side effect, permissions, and the archived-page constraint are all present. It omits what the call returns and whether the comment triggers notifications, which are minor but real gaps for a 2-param mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both pageId and text are already described in the schema, including the 5000-character limit repeated here. The description adds no syntax, format, or ID-sourcing detail beyond the schema, so 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?
States a specific verb+resource ('Adds a comment') and scopes the target as 'a note or discussion', which distinguishes it from the sibling add_comment / edit_page_comment family. It does not explicitly name those siblings or explain the task-comment vs page-comment split, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two real preconditions — not usable on an archived page, and requires the editor role on the project — which is clear context for when the call will succeed. It stops short of naming an alternative tool to use instead (e.g. add_comment for tasks) or what to do when the page is archived.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_reminderAdd reminderADestructiveInspect
Adds a reminder for the user on a task: a push notification and an email at a chosen moment. Either at (an ISO 8601 instant), or relative to the due date (daysBefore + local time + IANA timeZone), which follows the due date when it moves and repeats with repeating tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| time | No | ||
| cardId | Yes | ||
| timeZone | No | ||
| daysBefore | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing real side effects: a push notification and an email are dispatched, and relative reminders track the due date and repeat with repeating tasks. This is meaningful behavior an agent could not infer from readOnlyHint=false / destructiveHint=true / openWorldHint=false 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?
Front-loaded with the action and its effects, then the scheduling semantics, with no filler sentences. The second clause is dense and slightly run-on, but every element carries information the agent needs.
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 5-parameter mutation tool with no output schema, the description covers effects and both scheduling modes well, and the annotations carry the safety profile. It could still note the required `cardId` explicitly and mention whether the reminder is immediately active or error behavior.
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 coverage is 0%, so the description must carry the burden, and it does: `at` is defined as an ISO 8601 instant, `timeZone` as IANA, and `daysBefore` + `time` as a due-date-relative offset. Only `cardId` is left implicit via the phrase 'on a task', which is a minor 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?
States a specific verb and resource ('Adds a reminder for the user on a task') plus the concrete effect (push notification and email), which cleanly separates it from list_reminders and remove_reminder among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description effectively explains the two mutually exclusive ways to schedule the reminder ('Either `at` ... or relative to the due date'), which tells the agent which parameter set to choose. It stops short of stating when to prefer this tool over list_reminders/remove_reminder or any prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_offAdd time offADestructiveInspect
Records time off for the user or, on Pro, for an editor of a project the user owns: a vacation, sick leave or other, from a first day to a last day (a single day when no last day is given), for the whole working day or a number of minutes of each. Once approved it lowers that person's capacity in the Workload for the weeks it touches (Monday to Friday count). The user's own time off is a request (status pending, and those owners get a notification) when an owner of a project the user edits plans with the team calendar, and approved at once otherwise; time off recorded for an editor is approved. A span is at most 366 days. The note belongs to the person: only they can write it, so it is refused when the time off is for somebody else.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | vacation, sick or other. Default vacation. | |
| note | No | Up to 300 characters. Only the person writes it and only they read it back. | |
| endDay | No | The last day off. Default: the first day, YYYY-MM-DD. | |
| userId | No | Whose time off it is: the user (default) or an editor of one of the user's projects (Pro). | |
| startDay | Yes | The first day off, YYYY-MM-DD. | |
| minutesPerDay | No | Minutes off each day (240 is half a working day), between 1 and the person's working day. null or missing: the whole working day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only flag it as a non-read-only, destructive write in a closed world) it discloses the approval/pending state, that owners get a notification, that approved time lowers capacity in Workload for Mon–Fri weeks touched, the 366-day cap, and that the note is refused when the time off is for somebody else. That is substantial side-effect and authorization context an agent could not infer from 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?
Front-loaded with actor and resource before the conditional rules, and every clause carries information (kinds, span, capacity effect, approval logic, note ownership). It is a single dense paragraph of long semicolon-joined sentences, which is harder to parse than it needs to be, but nothing is 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 mutating, multi-actor tool with no output schema, the description covers the outcomes an agent must anticipate: resulting approval status, notification side effect, capacity change, span limit, and the note-permission failure mode. Nothing material for correct invocation is missing.
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 coverage is already 100%, so the baseline is 3, and the description adds real semantics on top: the note is private to the subject and refused when recording for another person, and a single day applies when no last day is given. It does not add detail on minutesPerDay or userId beyond what the schema already says.
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 a specific verb and resource (records time off), the two actors it can act on (the user, or on Pro an editor of a project the user owns), and the accepted kinds and date span. It is clearly distinguishable from siblings like approve_time_off, update_time_off, list_time_off and remove_time_off.
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?
Gives explicit conditions: own time off becomes a pending request when an owner of an edited project plans with the team calendar, otherwise approved at once, while time off for an editor is approved immediately. It also states constraints (366-day maximum, note only writable by the subject) but does not name the sibling to use when correcting or cancelling an existing entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_createCreate via Decknote APIADestructiveInspect
Creates something through Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with POST. Reachable: POST /api/v1/boards: a board: { title, template? }; POST /api/v1/cards: a card: { listId | boardId, title, description?, dueDate?, checklist?, reminders? }; POST /api/v1/boards/{boardId}/embeds: an embed of a board: { name, origins[], canEdit? } (owner, Pro). Takes a path on Decknote itself (not a full URL) and a JSON object body as documented there. Needs confirm: true; without it nothing is sent and the result is a preview of the request. Authentication, token, session, admin, payment and internal endpoints are not reachable, and secrets are removed from responses.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The JSON body the route documents. | |
| path | Yes | A path from the list, e.g. /api/v1/cards | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: confirm:true is required or nothing is sent and a preview is returned, responses have secrets removed, and only specific endpoint families are reachable. These details materially affect how an agent must invoke the tool and are not available from the structured 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 dense but front-loads the core operation and then groups route-specific details compactly. It could be more scannable with bullets, but nearly every sentence carries necessary constraint or body-shape 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 generic, multi-endpoint create tool, the description covers reachable routes, required confirmation, authentication behavior, and response sanitization. It does not describe the successful return shape when confirm:true is passed, and there is no output schema to cover that 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?
Although schema coverage is 100%, the nested body parameter is only described as 'The JSON body the route documents.' The description compensates by enumerating the supported body shapes for each reachable route and clarifying that path must be a Decknote-relative path, not a full URL.
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 operation (create via POST) and enumerates the exact reachable resource routes: boards, cards, and board embeds. It is clear enough to distinguish this as a generic API-create tool, but it does not explicitly differentiate itself from sibling high-level creators like create_board, create_task, or create_embed.
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 implicit when-to-use guidance by listing the reachable routes and constraints, such as authentication and internal endpoints being unavailable. However, it never states when an agent should choose this generic API tool over the dedicated create_board, create_task, or create_embed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_readRead from Decknote APIARead-onlyInspect
Reads from Decknote's HTTP API (reference: https://decknote.app/api-docs#mcp-http-api) as the signed-in user, with GET; it doesn't change anything. Covers what no dedicated tool returns, such as the contents of an uploaded text file or a link preview. Reachable: GET /api/v1/me: the user (id, name, email); GET /api/v1/boards: the user's boards and their lists; GET /api/v1/boards/{boardId}/embeds: a board's live embeds (owner); GET /api/export: everything the user can read, as one JSON document; GET /api/link-preview?url=…: the title and description of a web page; GET /api/attachments/{attachmentId}: an uploaded file (text files come back as text; others as type and size). Takes a path on Decknote itself (not a full URL) and optional query parameters. Authentication, token, session, admin, payment and internal endpoints are not reachable, and secrets are removed from responses.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | A path from the list, e.g. /api/v1/boards or /api/link-preview?url=https://example.com | |
| query | No | Extra query parameters (string, number or boolean values). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent ('it doesn't change anything'). It adds real value beyond the annotations: the reachable-endpoint whitelist, the exclusion of sensitive endpoint classes, and the note that secrets are stripped from responses. It does not describe pagination or output size limits for the bulk /api/export case.
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?
Front-loaded with the operation and its read-only nature, then a compact endpoint inventory that earns its space by enumerating exactly what is callable. The endpoint list is dense but each entry adds a distinct capability; the prose is not padded with 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?
There is no output schema, so the description compensates by sketching return shapes per endpoint (user id/name/email, board lists, embed list, link-preview title/description, attachment type/size). Combined with the reachability and auth constraints, an agent has enough to call it correctly; only response volume/pagination for the export endpoint is left unstated.
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 coverage is 100%, so the baseline is 3, but the description adds genuine semantics: the path must be a Decknote-relative path, not a full URL, and the query object carries optional string/number/boolean parameters. That exceeds what the schema's field descriptions convey.
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 a specific verb and resource ('Reads from Decknote's HTTP API ... with GET') and immediately scopes it as read-only. It also distinguishes itself from the 70+ dedicated siblings by declaring it 'covers what no dedicated tool returns,' with concrete examples (uploaded text file contents, link previews). An agent can tell what this tool is for without opening the schema.
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?
Gives clear context for use: only for data no dedicated tool returns, with examples of such cases. It also supplies a when-not list (authentication, token, session, admin, payment and internal endpoints are not reachable). It does not name specific sibling tools to prefer for the common endpoints it lists (e.g. boards), so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_time_offApprove time offADestructiveInspect
Approves a time off an editor of a project the user owns asked for: from then on it lowers that person's capacity in the Workload, and the person gets a notification. A Pro feature (the team calendar). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Up to 300 characters for the person (why it was rejected). The person and the owners read it. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| timeOffId | Yes | A time off of the user or of an editor of one of the user's projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=false, and destructiveHint=true. The description adds valuable context beyond annotations: approval lowers the person's capacity in Workload, triggers a notification, requires confirm=true, and otherwise returns a preview. It does not discuss reversibility, but this is not contradictory.
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?
Front-loaded with the action and appropriately short. Its three sentences each add useful information about effects, Pro-feature context, and confirm behavior. The first sentence is slightly tangled but still concise.
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 an approval mutation with no output schema, the description covers the key effects and the preview behavior when confirm is omitted. It does not mention the note parameter or describe what a confirmed response looks like, but the essential behavioral 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?
Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces the confirm=true vs preview behavior, but adds no meaning beyond the schema for timeOffId or note. Baseline 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?
States a specific verb and resource: approves a time off request from an editor on a project the user owns. The effect on capacity and notifications is clear, but it does not explicitly distinguish itself from siblings such as reject_time_off or approve_timesheet.
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 a prerequisite for execution: confirm must be true or the result is only a preview. It also notes this is a Pro feature. However, it does not explicitly say when to choose this over reject_time_off or other time-off tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_timesheetApprove a week of hoursADestructiveInspect
Approves a week of hours a person on the user's projects submitted for approval: its hours stay closed to that person (the user, as the project owner, can still change them) and the person gets a notification. A rejected week has to be submitted again first. A Pro feature. Needs confirm: true; without it the result is a preview with the week's hours by project and task.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Up to 500 characters, sent to the person with the notification. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| timesheetId | Yes | A week handed in for approval (the user's own, or one handed to the user). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true and readOnlyHint=false; the description adds the real consequences: hours are locked for the submitter, the project owner retains edit rights, a notification is sent, and without confirm nothing changes but a preview is returned. This is exactly the behavioral context annotations cannot 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 core action and its consequences are front-loaded, and each sentence carries information. The first sentence is somewhat long and packs several facts (lock, owner override, notification), but nothing is 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?
For a three-parameter mutation with no output schema, the description covers preconditions, consequences, the confirm gating rule, and the Pro-tier requirement. An agent has everything needed to call 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?
Schema coverage is 100%, so the baseline is 3. The description goes beyond it by explaining what the preview from a missing confirm contains ('the week's hours by project and task') and by tying note to the notification, adding usage meaning the schema doesn't.
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 a specific verb and resource ('Approves a week of hours') and clarifies the scope: a submission by a person on the user's projects. This clearly distinguishes it from reject_timesheet, submit_timesheet, and withdraw_timesheet in the sibling list.
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?
Gives a concrete precondition ('A rejected week has to be submitted again first') and an operational rule for the confirm flag (preview without it). It does not explicitly name a sibling alternative such as reject_timesheet, so it falls just 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.
archive_boardArchive boardADestructiveInspect
Archives a board the user owns: it leaves everyone's dashboard and keeps all its data until it is restored. Archived boards don't count toward the free plan's 5 owned boards.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds context the annotations cannot: the board disappears from everyone's dashboards (multi-user impact), the data survives until restored (partial reversibility), the user must own the board, and it doesn't count against the free-plan cap. It does not say who can restore it or whether the action can be undone in-app.
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, no filler, and the core effect (leaves dashboards, data retained) is front-loaded before the secondary plan-limit 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 one-parameter, no-output-schema tool, the description covers the user-visible consequences: dashboard removal for all members, data retention, ownership requirement, and plan implications. Only the boardId format and the restore path are left implicit, which are minor for 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?
Schema description coverage is 0% and the sole parameter boardId gets no mention or format guidance in the description. The parameter is largely self-evident by name, so the description neither compensates for nor worsens the gap; a baseline 3 is appropriate for a single obvious identifier.
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 a specific verb (archives) and resource (a board), plus the ownership precondition. The clause 'keeps all its data until it is restored' implicitly separates it from delete_board and points at restore_board, so an agent can distinguish it from siblings without opening their schemas.
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?
Gives clear context for when this is the right action: you want the board off everyone's dashboard but not gone, and archiving has a plan-limit benefit. It never explicitly names restore_board as the undo path or states when archiving would be wrong, so it stops short of full 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.
archive_clientArchive clientADestructiveInspect
Archives a client: it leaves the active list and stops counting toward the plan's client limit. Its projects keep the link and all the time stays. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| clientId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, yet the description adds substantial context beyond them: the side effects on the plan's client limit, the fact that projects retain the link and time is preserved, and the two-phase preview/commit behavior. This is exactly the kind of behavioral detail that earns a top score even when annotations are 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?
Three compact clauses with zero filler. The core action is front-loaded, the effects follow immediately, and the confirm requirement is stated last where it functions as the pre-call checklist item.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema, the description covers everything an agent needs: what changes, what is preserved, and the mandatory confirm flag that prevents an accidental commit. Nothing material is left unstated.
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 coverage is 50%: confirm is already fully documented in the schema, and the description essentially restates its preview semantics rather than adding new meaning, while clientId carries no description in either place. Schema does the heavy lifting for the one documented parameter, so a baseline 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 states a specific verb and resource ("Archives a client") and then goes further, explaining the concrete effects: it leaves the active list, stops counting toward the plan's client limit, keeps project links, and preserves time. A sibling restore_client exists, and while the description never names it, the action itself 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?
Usage is implied through the archiving semantics (the client leaves the active list) and the confirm gate, but there is no explicit when-to-use guidance or comparison against the obvious alternative, restore_client, or delete-style operations. An agent must infer the trigger condition from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_taskArchive taskADestructiveInspect
Archives a task: it leaves the board but keeps all its data and can be restored from the board's archive. Archiving a dated repeating task creates its next occurrence, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: data is preserved, the task is restorable from the archive, and archiving a dated repeating task spawns its next occurrence. That side effect is non-obvious and not derivable from destructiveHint=false/true alone. It stops short of stating permissions or failure 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?
Two tight sentences, front-loaded with the core action and then the non-obvious repeat-task side effect. 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?
With annotations covering the mutation safety profile and no output schema, the description supplies the key behavioral facts an agent needs (recoverability, side effects). It is only slightly short on authorization/error context, which is a minor gap for a one-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?
Schema coverage is 0%, so the sole required parameter (cardId) is documented only by its name in the schema. The description says 'a task' but never clarifies identification, so it adds essentially no semantic value over the schema field itself.
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 a specific verb and resource ('Archives a task') and immediately defines the semantics: the card leaves the board but retains data and can be restored. This implicitly distinguishes it from delete_task (permanent) and pairs with restore_task, so an agent can pick correctly without opening the schema.
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 behavior described makes the use case inferable (remove from board without destroying), but no explicit when-to-use, when-not-to-use, or named alternative (delete_task vs archive_task) is given. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_tasksBulk update tasksADestructiveInspect
Acts on up to 100 tasks of one board at once, like multi-select in the app: moves them to a list, adds a label, or archives them (repeating ones create their next occurrence).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| listId | No | For move: the target list on the same board. | |
| cardIds | Yes | ||
| labelId | No | For add_label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false, openWorldHint=false. The description adds value beyond that: the 100-task cap, the single-board scope, and notably that archiving repeating tasks creates their next occurrence — a non-obvious side effect not captured by 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?
A single front-loaded sentence that covers scope, actions, and the key side effect. Efficient, though cramming the repeating-task behavior into a parenthetical slightly buries it.
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 a 4-param mutation tool with no output schema, the description covers scope, the action-to-parameter mapping, and an important side effect. It omits error/permission behavior and what happens to individual task results, but is largely complete for safe 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 coverage is 50%; listId and labelId have schema descriptions, and the enum for action is machine-readable. The description ties each action to its parameter via examples, but adds no format/syntax detail beyond what the schema already documents.
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 a specific verb and resource: acts on up to 100 tasks of one board at once, enumerating the three actions (move, add_label, archive). The 'multi-select in the app' analogy and the batch scope clearly distinguish it from single-task siblings like move_task, set_task_labels, and archive_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 implies when to use it (batch operations on many tasks at once) but never explicitly contrasts it with the single-task siblings it overlaps with. It doesn't state prerequisites (e.g., all cardIds must belong to one board, matching the 'one board' constraint) or when to prefer the individual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_taskComplete taskCDestructiveInspect
Marks a task as completed (done).
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the write/mutating nature is covered structurally. The description adds only that the resulting state is 'completed (done)'; it omits whether the change is reversible (reopen_task exists), what happens to subtasks/checklists, and any permission 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?
A single short sentence with the action front-loaded and no filler. It is appropriately sized, though its brevity is partly the source of the missing 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?
For a state-mutating tool with no output schema and an undocumented required parameter, the description leaves out permissions, reversibility, and side effects on related items. Annotations cover the safety profile, but the definition is still too thin to call the tool confidently.
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 single required parameter cardId is a bare string with no explanation. The description does not identify what cardId refers to (a task card identifier) or its expected format, so it fails to compensate 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 states a specific verb ('Marks') and resource ('a task'), and clarifies the resulting state ('completed (done)'). It stops short of distinguishing itself from closely related siblings such as reopen_task, archive_task, or update_task, which an agent must infer.
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?
There is no guidance on when to use this rather than reopen_task (the inverse), archive_task, or update_task, nor any stated prerequisite such as the task existing or the caller having board membership. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_estimate_to_invoiceConvert estimate to invoiceADestructiveInspect
Turns an accepted estimate into a draft invoice with the same lines, once while that invoice stands (after the invoice is voided or its draft deleted, the estimate can be turned into a new one). Counts toward the free plan's 2 documents per month.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The accepted estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful behavior beyond annotations: the resulting invoice is a draft with the same lines, the conversion has a one-time constraint tied to invoice lifecycle, and it counts toward the free plan document quota. It does not describe permissions or whether the estimate is marked consumed, but the annotations already flag destructive 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?
Front-loads the core action and result, then adds lifecycle and quota constraints compactly. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter conversion with no output schema, the description covers the action, result, one-time lifecycle constraint, and billing impact. Minor gaps remain around exactly what is returned or whether the source estimate is altered, but the essentials are 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?
Schema coverage is 100%, so the single parameter is already documented. The description reinforces that the input is an accepted estimate but adds no format or identity details 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 a specific verb and resource: turning an accepted estimate into a draft invoice with the same lines. This is clearly distinct from generic invoice creation siblings such as create_invoice and create_invoice_from_work.
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?
Explains the lifecycle condition: it can be done once while the resulting invoice stands, and again only after the invoice is voided or its draft deleted. It does not explicitly compare against sibling tools like create_invoice_from_work, but the accepted-estimate condition provides clear selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_estimate_to_projectConvert estimate to projectADestructiveInspect
Makes a project board from an accepted estimate that is not tied to a project yet: the estimate's client, its amount before tax (budget "money", the default), its hours ("hours") or no budget ("none") as the project's budget, the hourly rate when every line in hours has the same price, and one task per line (lines in hours carry their hours as the task's estimate) unless tasks is false. The estimate is then tied to that project. Counts against the board limit of the user's plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | One task per line of the estimate. Default true. | |
| title | No | The project's name, up to 120 characters. Default: the client's name and the estimate's number. | |
| budget | No | ||
| invoiceId | Yes | The accepted estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive mutation; the description adds important behavior beyond that: budget derivation, hourly-rate propagation, task generation, re-linking the estimate, and board-limit consumption. It still does not explicitly state irreversibility or what exactly is lost/changed from a safety standpoint.
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 and contains no filler; every clause carries operational meaning. However, it is a single dense sentence with several nested conditions, which reduces readability for such a side-effecting conversion 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?
For a four-parameter conversion tool with no output schema, the description covers prerequisites, budget behavior, task creation, derived hourly rate, estimate re-linking, and plan limits. It omits return shape and explicit failure conditions, but the core invocation context is 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 coverage is 75%, and the description meaningfully compensates for the undocumented budget enum by defining the money/hours/none outcomes. It also explains the tasks toggle and default task behavior, though title semantics are mostly already 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 uses a specific verb and result ('Makes a project board from an accepted estimate') and sharply scopes the input ('not tied to a project yet'). It clearly separates this operation from siblings like create_project and convert_estimate_to_invoice.
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 states the prerequisite condition clearly: the estimate must be accepted and not already tied to a project. It does not explicitly name when to choose convert_estimate_to_invoice or create_project instead, so the alternative routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_automationCreate automationADestructiveInspect
Adds a board rule: WHEN a card is added to a list / moved to a list / gets a label, THEN move it, add or remove a label, assign someone, set the due date N days ahead, archive it, or comment. Triggers: card_added, card_moved, label_added (card_added/card_moved need triggerListId, label_added needs triggerLabelId). Actions: move_to_list, add_label, remove_label, assign, set_due, archive, comment (move_to_list needs actionListId; add_label/remove_label need actionLabelId; assign needs actionUserId; set_due needs actionDays; comment needs actionText). Free plan: 1 per board.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| action | Yes | ||
| boardId | Yes | ||
| trigger | Yes | ||
| actionDays | No | ||
| actionText | No | ||
| actionListId | No | ||
| actionUserId | No | ||
| actionLabelId | No | ||
| triggerListId | No | ||
| triggerLabelId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false, so the mutation profile is known. The description adds real context beyond that: the one-rule-per-board free-plan limit, and it discloses that creating a rule has ongoing side effects. It does not mention permissions or that the rule executes asynchronously in the future, but it exceeds the annotation baseline.
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?
Front-loads the capability, then the trigger taxonomy, then action taxonomy, then the plan limit. Every clause carries a required-field mapping or a constraint; 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?
For an 11-param tool with 0% schema coverage and no output schema, the description supplies the conditional-requirement graph that the schema lacks. It stops short of stating boardId/name semantics and creation preconditions, but no critical field mapping is missing.
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 coverage is 0%, so the description carries the full burden and does so cleanly: it maps each trigger to its required id field and each action to its required companion field (actionListId, actionLabelId, actionUserId, actionDays, actionText). This is exactly the conditional parameter semantics the schema cannot express.
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 a specific verb+resource ('Adds a board rule') and fully enumerates the WHEN/THEN grammar available. An agent can distinguish this from delete_automation and set_automation_enabled without opening the schema.
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 implies creation but never states when to use this versus alternatives, nor that a rule must be deleted rather than edited. The 'Free plan: 1 per board' constraint is the only boundary guidance, which is useful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_boardCreate boardADestructiveInspect
Creates a new board owned by the user. template sets the initial lists and labels, in the user's language: blank (To do / In progress / Done), kanban, content or personal; lists replaces the template's list titles. Returns the board with its list ids. The free plan allows 5 owned boards.
| Name | Required | Description | Default |
|---|---|---|---|
| lists | No | List titles, in order; they replace the template's lists (its labels stay). | |
| title | Yes | ||
| template | No | Initial lists/labels. Default 'blank'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=false, so the safety profile is covered. The description goes beyond them usefully by disclosing the return payload ('returns the board with its list ids') and a hard quota constraint ('free plan allows 5 owned boards'), which is exactly the kind of operational limit annotations cannot express.
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?
Four short sentences, front-loaded with the core action and followed by parameter behavior, return value, and quota. Dense but every sentence carries information; the only minor cost is the semicolon-heavy mid-section that packs template semantics into 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 no output schema, the description compensates by describing the return value, and it covers the quota constraint. Remaining gaps are small: ownership/permission nuances and what happens if the free-plan limit is reached are not stated, but nothing essential to invoking the tool correctly is missing.
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 coverage is 67% (title is undocumented but self-evident). The description earns its place by explaining what each template value actually yields ('blank (To do / In progress / Done), kanban, content or personal'), that it is localized to the user's language, and that `lists` overrides the template's lists while keeping its labels — real semantics beyond the enum and the schema text.
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 a specific verb+resource (creates a board) and immediately scopes it with ownership ('owned by the user') plus what the two optional parameters produce. It does not explicitly differentiate itself from nearby siblings like duplicate_board or import_trello_board, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you call it when you want a brand-new board. There is no when-not guidance and no mention of the obvious alternatives (duplicate_board, import_trello_board) that an agent should be choosing between when a board already exists elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clientCreate clientADestructiveInspect
Adds a client. Projects are linked to a client in their settings; the client's currency and default hourly rate apply to their time. The free plan includes 2 active clients; Pro has no limit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Up to 120 characters. | |
| No | Contact email. | ||
| notes | No | ||
| phone | No | ||
| taxId | No | Tax or VAT number. | |
| address | No | ||
| currency | No | Three-letter code, e.g. USD or ARS. Default USD. | |
| hourlyRate | No | Default hourly rate for this client's projects. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=true, openWorld=false), so the bar is lower, and the description still adds substantive behavior: project linkage, propagation of currency and hourly rate to the client's time, and a plan-limit constraint. It doesn't state whether the operation is reversible or what happens when the free-plan limit is hit, so it falls short of a 5.
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 sentences, front-loaded with the core action, then useful domain context, then the quota caveat. No filler, though the linkage sentence and the rate sentence could be merged without loss.
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 an 8-parameter mutation tool with no output schema, the description covers the domain model and a quota constraint but omits what a successful call returns (e.g., the new client identifier) and whether any parameters are required. It is adequate but leaves meaningful gaps for an agent composing the call.
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 coverage is 63%, so roughly a third of the 8 parameters (notes, phone, address, and partially others) carry no documentation anywhere. The description adds domain meaning for currency and hourlyRate by explaining how they propagate to projects and time, but leaves the remaining parameters to the schema. Baseline 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?
"Adds a client" is a specific verb+resource, and the following sentences clarify what a client is in this domain (linked to projects, carries currency and hourly rate). It doesn't explicitly distinguish itself from siblings like update_client or archive_client, but the resource naming is unambiguous enough for selection.
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 real precondition — the free plan allows only 2 active clients — which tells the agent when this call may fail or be inappropriate. However, it names no alternative (update_client, restore_client) and states no when-to-use vs. when-not-to-use rules beyond the quota.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_fieldCreate custom fieldBDestructiveInspect
Adds a custom field to a board's cards: text, number, select (with up to 20 options), checkbox or date. The free plan allows 3 per board.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | ||
| boardId | Yes | ||
| options | No | For select: the choices (up to 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the agent knows this is a mutating, non-open-world call. The description adds the plan quota, a genuine constraint not present in annotations, but it never explains what makes the operation 'destructive' or what permissions are needed. With annotations carrying the safety profile, 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?
Two short sentences, zero filler, with the core action and supported types front-loaded and the quota caveat trailing. 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 4-parameter mutation tool with no output schema and low schema coverage, the description covers what can be created but not what is returned (e.g., the new field's ID), permission requirements, or behavior on cards that already have the field. An agent could call it correctly but would be guessing at the response and side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% – just the 'options' parameter is documented, and boardId/name are bare. The description partially compensates by restating the type enum values and the 'up to 20 options' constraint, but adds nothing about boardId or name semantics, leaving half the meaningful parameters undocumented.
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 a specific verb+resource ('Adds a custom field to a board's cards') and enumerates the five supported field types, which lets an agent separate it from siblings like create_label or create_list without opening the schema. It does not explicitly name an alternative, but the field-type enumeration does the differentiating work.
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?
There is no guidance on when to use this versus update_custom_field or the other create_* siblings, and no prerequisites or when-not conditions. The free-plan quota ('3 per board') is a useful constraint but is a limit, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_embedCreate embedADestructiveInspect
Lets another app of the user's show this board in an iframe (Pro, owner only): a name and up to 5 https origins allowed to frame it, read-only unless canEdit. That app's server then requests a session through the REST API. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| boardId | Yes | ||
| canEdit | No | Whether people in the embed can edit. Default false. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| origins | Yes | Up to 5, like https://your-app.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnly=false, destructive=true, openWorld=true), and the description adds substantial context beyond them: plan/ownership auth requirements, the read-only-unless-canEdit access model, the external-server session flow, and critically the confirm:true gate with preview-by-default behavior. This is exactly the behavioral detail an agent needs before calling a mutation that exposes a board externally.
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 dense sentences that front-load the purpose before the constraints and the confirm gate. The parentheticals are information-packed rather than wasteful, though the second and third sentences are slightly run-on.
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 partial schema coverage, the description covers what is created, who may create it, the access model, the dry-run gate, and the downstream session flow. Nothing an agent needs to invoke it safely is missing.
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 coverage is 60%; the description adds meaning for canEdit ('read-only unless canEdit') and restates the origins cap, complementing the schema's own descriptions of confirm and origins. The name and boardId parameters remain unexplained in both places, so it does not fully compensate 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?
States a specific verb and resource ('show this board in an iframe' via an embed) and names the exact mechanism, distinguishing it from sibling list_embeds and revoke_embed. The parenthetical constraints (Pro, owner only) sharpen rather than obscure the 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?
Gives clear preconditions for use: Pro plan, board owner, and an external app whose server will request a session via the REST API. It does not explicitly name alternatives (e.g. revoke_embed for teardown), but the context is strong enough to select the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_expenseCreate expenseADestructiveInspect
Logs an expense on a project: what was spent, the amount, the day, a category (travel, software, hardware, services, meals, other), the vendor, whether it can be billed to the client, and optionally a task. It records a cost; nothing is paid. Only the project owner can set a markup (a percentage added when billing it). Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | The day it was spent. Default today, YYYY-MM-DD. | |
| amount | Yes | What it cost. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). | |
| cardId | No | A task of the same project. | |
| vendor | No | ||
| boardId | Yes | The project. | |
| billable | No | Whether it can be billed to the client. Default: the project's own setting (true when it has none). | |
| category | No | ||
| description | Yes | What it was, up to 200 characters. | |
| markupPercent | No | Percentage added when billing it, e.g. 10. Project owner only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and destructiveHint=true, the description adds real context beyond them: permission requirements, the owner-only markup restriction, and the clarification that nothing is paid. It does not, however, explain the somewhat surprising destructiveHint=true for a create operation or any side effects on billing aggregation.
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 front-loaded sentences: purpose first, then the cost-vs-payment scope clarification, then permission constraints. It is efficient, though the field enumeration in sentence one partly duplicates what the schema exposes.
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 9-parameter mutation tool with no output schema, the description covers purpose, field meaning, defaults implied by schema, and role requirements adequately. A brief note on the returned identifier or validation behavior would be the only meaningful addition.
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 78%, so most parameters (day, amount, cardId, billable, markupPercent, database description) are already documented in the schema. The description largely re-lists the same fields and repeats the enum values already present in the schema, adding only marginal narrowing 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?
The description names a specific verb and resource ('Logs an expense on a project') and enumerates exactly what the expense captures, so an agent can distinguish it from siblings like create_invoice, log_time, or create_task without opening schemas. The scope note 'It records a cost; nothing is paid' further sharpens the intent.
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 states concrete prerequisites and constraints — 'Needs the editor role on the project' and 'Only the project owner can set a markup' — which tell the agent when it can and cannot use the tool. It does not name sibling alternatives (e.g. delete_expense, update_expense, create_invoice), so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoiceCreate invoiceADestructiveInspect
Creates a draft invoice or estimate, with its lines if given, copying the user's billing details and the chosen client onto it. The draft is private: nothing is sent or published. It has no number until it is sent; sending takes the next one from the profile's counter. The free plan includes 2 invoices or estimates per calendar month (voided ones count); Pro has no limit. Needs the billing details to be set up.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| lines | No | At most 500. | |
| notes | No | Up to 4000 characters. Default: the profile's default notes. | |
| terms | No | Up to 4000 characters. Default: the profile's payment instructions. | |
| toName | No | Who it is for. Default: the client's name. | |
| boardId | No | A project the user owns, to link the document to. | |
| dueDate | No | YYYY-MM-DD. Default: the profile's payment terms (invoice) or 30 days (estimate). | |
| toEmail | No | ||
| toTaxId | No | ||
| clientId | No | One of the user's clients; its name, email, address, tax id and currency are copied onto the document. | |
| currency | No | Three-letter code. Default: the client's, else the profile's. | |
| discount | No | A fixed amount off the whole document. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). null clears it. | |
| taxLabel | No | What the tax is called, up to 30 characters. | |
| issueDate | No | The issue date. Default today, YYYY-MM-DD. | |
| toAddress | No | ||
| taxPercent | No | Tax as a percentage, e.g. 21 or "10,5". Default: the profile's. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=true; the description adds genuinely non-obvious behavior: the draft is private, numbering happens only on send, voided documents still consume the free-plan quota, and Pro is unlimited. That is meaningful context beyond the annotations, though it does not explain why a creation tool is flagged destructive (quota consumption) nor what the response contains.
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?
Six short sentences, front-loaded with what is created and what it copies, followed by the privacy/numbering, quota and prerequisite facts. Dense but every sentence carries operational information; the quota sentence is slightly tangential but still decision-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 16-parameter mutation tool with no output schema, the description covers prerequisites, side effects and limits well, but never says what the call returns (e.g. the new document's id) or whether the draft can be edited/deleted afterwards. An agent needs that to chain into update_invoice or send_invoice.
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 75%, so most parameters are already documented in the schema (currency defaults, discount units, line fields). The description adds meaning only for the aggregate behaviors (lines accepted, billing details and client copied), not for individual optional parameters such as boardId, terms or taxLabel.
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 a specific verb and resource ('Creates a draft invoice or estimate') plus the scope of what gets copied onto it. It is clearly distinguishable from siblings like send_invoice, update_invoice, convert_estimate_to_invoice and create_invoice_from_work because it emphasizes that the result is a private draft with no number.
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?
Gives a real prerequisite ('Needs the billing details to be set up') and makes clear this is the draft-creation step, with sending deferred elsewhere ('sending takes the next one from the profile's counter'). It does not explicitly name sibling alternatives such as preview_invoice_from_work or create_invoice_from_work, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoice_from_workCreate invoice from workADestructiveInspect
Creates a draft invoice from a project's unbilled work (same options as the preview): the finished billable hours and billable expenses become lines and are tied to the invoice, so they cannot be invoiced twice or edited until it is voided. The draft is private: nothing is sent. Counts toward the free plan's 2 documents per month. Only the project owner. Needs confirm: true and amount equal to the total of the preview; without them the result is that preview.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only work up to this day, YYYY-MM-DD. | |
| from | No | Only work from this day on, YYYY-MM-DD. | |
| notes | No | Up to 4000 characters. Default: the profile's default notes. | |
| terms | No | Up to 4000 characters. Default: the profile's payment instructions. | |
| amount | No | The document's total in the currency's main unit, repeated from the preview (e.g. 220 or "220.00"). Must equal the total or nothing is done. | |
| toName | No | Who it is for. Default: the client's name. | |
| boardId | Yes | The project. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| dueDate | No | YYYY-MM-DD. Default: the profile's payment terms (invoice) or 30 days (estimate). | |
| groupBy | No | How the work becomes lines. Default task. | |
| toEmail | No | ||
| toTaxId | No | ||
| clientId | No | One of the user's clients; its name, email, address, tax id and currency are copied onto the document. | |
| currency | No | Three-letter code. Default: the client's, else the profile's. | |
| discount | No | A fixed amount off the whole document. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). null clears it. | |
| taxLabel | No | What the tax is called, up to 30 characters. | |
| issueDate | No | The issue date. Default today, YYYY-MM-DD. | |
| toAddress | No | ||
| expenseIds | No | ||
| taxPercent | No | Tax as a percentage, e.g. 21 or "10,5". Default: the profile's. | |
| includeTime | No | ||
| taxableTime | No | ||
| timeEntryIds | No | ||
| includeExpenses | No | ||
| taxableExpenses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the downstream consequence that lines become tied to the invoice and 'cannot be invoiced twice or edited until it is voided', that the draft is private with 'nothing is sent', that it consumes a free-plan quota ('2 documents per month'), and the owner-only auth requirement. These are exactly the side-effect, auth, and rate-limit facts an agent needs before a destructive write.
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?
Five sentences, each carrying distinct information, with the core action front-loaded and the gating requirements placed where an agent will see them. Slightly dense, but nothing is padding or restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter destructive write with no output schema, the description covers the operation, its irreversibility window, the preview fallback, quota impact, and auth scope. The remaining parameter detail is legitimately delegated to the schema and the referenced preview 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 coverage is 64% across 25 parameters, so the schema already documents most of the surface. The description adds real meaning for confirm and amount (gating semantics, 'Must equal the total or nothing is done') and gestures at includeTime/includeExpenses via 'finished billable hours and billable expenses become lines', but leaves many parameters (timeEntryIds, expenseIds, from/to, groupBy) to the schema and the 'same options as the preview' hand-wave.
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 a specific verb and resource plus the source material ('Creates a draft invoice from a project's unbilled work'), which cleanly separates it from create_invoice, convert_estimate_to_invoice, and preview_invoice_from_work. The parenthetical 'same options as the preview' explicitly anchors it to its sibling.
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?
Gives a hard prerequisite ('Needs confirm: true and amount equal to the total of the preview') and states the fallback behavior when they are absent ('the result is that preview'), plus an ownership constraint ('Only the project owner'). It never names preview_invoice_from_work as the tool to call instead, so the alternative is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_labelCreate labelCDestructiveInspect
Adds a label to a board. Colors: green, yellow, orange, red, purple, blue, sky, pink.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | Yes | ||
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, and the description adds no behavioral context beyond them. It does not disclose permissions required, whether labels are board-scoped, or what happens on duplicate names, so the burden carried by the description 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?
Two short, front-loaded sentences with the core action first. The color list duplicates the schema enum, which is mild waste, but the overall structure is tight.
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, 0% schema coverage, and a board-scoped side effect, the description is too thin. It omits permission requirements, label scope, and error behavior.
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 three required parameters. The description only restates the color enum values already present in the schema, and says nothing about boardId or name semantics, so it fails to compensate 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?
States a specific verb and resource (create/adds a label) scoped to a board, which distinguishes it from update_label, delete_label, and set_task_labels. It is clear but does not explicitly differentiate itself from the sibling create_* 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?
There is no statement of when to use this versus update_label or set_task_labels, and no prerequisites such as the board needing to exist or whether the label becomes board-wide. Usage must be inferred entirely 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_listCreate listADestructiveInspect
Adds a list (column) to a board, at the end or, with first: true, before the other lists. Returns the new list with its id. Needs edit access to the board.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Put it before the other lists. Default false. | |
| title | Yes | ||
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose write/destructive/openWorld status, yet the description adds two genuinely useful facts beyond them: the return value ('Returns the new list with its id') and the authorization requirement ('Needs edit access to the board'). It does not discuss the destructiveHint implication, but the added auth and return context is real 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?
Three tight sentences, front-loaded with the action, each carrying distinct information (what it does, the first-flag behavior, the return value, the permission requirement). 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?
For a mutation tool with no output schema, the description covers the return value, the positioning option, and the required access level, and annotations cover the safety profile. Minor gap: no mention of where in a board workflow this fits or error conditions, but an agent has enough to call 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?
Schema coverage is 33%, so description must compensate, and it partially does by explaining the 'first: true' placement behavior and referring to the board. However 'title' and 'boardId' carry no added meaning beyond the schema, leaving one required parameter effectively undocumented.
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 a specific verb (Adds) and resource (a list/column to a board), and even disambiguates the domain term 'list' as 'column'. An agent can distinguish this from create_board, create_task, update_list, and duplicate_list purely from the text.
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 the positional behavior of the new list ('at the end or, with first: true, before the other lists'), which is a usage hint, but it does not name sibling alternatives or state when-not to use it. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageCreate pageADestructiveInspect
Starts a note (shared writing any editor can change) or a discussion (its text belongs to its author and the owner; editors answer with comments) in a project. The body is Markdown; links must be http, https, mailto, tel or of this site. Too much text is refused, not cut. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| title | Yes | Up to 200 characters. | |
| boardId | Yes | The project. | |
| content | No | The body, in Markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the Markdown body, the allowed link schemes, the 'refused, not cut' validation behavior on oversized text, and the required editor role on the project. This is strong disclosure for a write tool, though it doesn't touch the destructiveHint=true annotation (e.g., no explanation of side effects or lifecycle).
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?
Four tight sentences, front-loaded with the core action and then the two kind definitions before constraints. Every sentence carries distinct, necessary information with 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?
For a no-output-schema create tool, the definition covers permissions, content format, validation failure mode, and the kind choice, which is nearly everything an agent needs. The main remaining gap is any indication of side effects tied to the destructiveHint annotation.
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 75% schema coverage, the schema documents boardId and title, while the description contributes real meaning for kind (note vs discussion semantics) and content (Markdown, link scheme constraints, size limit). It goes beyond restating the schema, though it doesn't mention the title's 200-character bound.
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 a specific verb+resource (starts a note or discussion in a project) and defines the two kinds, which is the main ambiguity an agent faces. It never uses the word 'page' itself, so the resource name must be inferred from the tool name rather than the description, and no sibling (create_task, create_board) is explicitly contrasted.
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?
Offers clear in-tool routing by explaining what a note is versus a discussion and how their editing/commenting models differ, which directly guides the kind choice. It stops short of explicit when/when-not guidance against sibling tools such as update_page or add_page_comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate projectADestructiveInspect
Creates a new project: a board with the plain three-list layout and project settings (active), optionally for one of the user's clients. Counts against the free plan's board limit like any board. To turn an existing board into a project, change its project settings.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Up to 120 characters. | |
| clientId | No | One of the user's clients. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-schema behavior: the created board consumes a slot against the free plan's board limit, and the project is created in 'active' state. It stops short of stating permission/auth requirements, so it is not a 5.
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 sentences with the core action front-loaded, followed by quota impact and the alternative path. No filler; every sentence carries a distinct fact an agent needs.
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 create tool with annotations covering the safety profile and full schema coverage, the description is nearly complete: it explains what is built, the quota consequence, and the alternative for existing boards. It does not describe what is returned or how to reference the new project afterward, a minor gap given there is no 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 100% and both parameters (title, clientId) are documented there, so the schema does the heavy lifting. The description only echoes the clientId semantics ('optionally for one of the user's clients') without adding format or constraint detail beyond the schema. 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?
States a specific verb and resource ('Creates a new project') and pins down exactly what is produced: a board with the plain three-list layout plus project settings (active). It also differentiates from the update path by noting that converting an existing board is done via project settings, so an agent can separate this from create_board/update_project_settings.
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 (creating from scratch, optional client association) and one explicit redirect: 'To turn an existing board into a project, change its project settings.' It does not, however, distinguish this from close siblings like create_project_from_template or create_sample_project, which an agent would also consider for project creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_from_templateCreate project from templateADestructiveInspect
Creates a new project from a starter or saved template: its lists, labels, tasks with estimates and checklists, and settings, with due dates shifted onto the start date (default today). The template is untouched. Optionally for one of the user's clients. Counts against the free plan's board limit like any board.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The new project's name, up to 120 characters. | |
| clientId | No | One of the user's clients. | |
| startDate | No | YYYY-MM-DD. The day the project starts. Default today. | |
| templateId | Yes | The template's id: a starter's or a saved one's. | |
| templateKind | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=true, but the description adds genuine context the agent would otherwise lack: the template is untouched, due dates are shifted onto the start date, and the new board counts against the free plan's board limit. That quota-consumption detail in particular explains the destructive hint and is real added 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?
Three tight sentences with no filler; the core action is front-loaded and each remaining sentence carries distinct content (copy scope, source immutability, quota). Slightly dense but well ordered and appropriately sized for a five-parameter mutation.
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 should say something about the result (e.g. that it returns the new project or its id), but it does not. It adequately covers the required inputs and the mutation's side effects, leaving the return contract as the 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 coverage is 80%, so the baseline is 3, and the description earns a bump by disambiguating the templateKind enum ('starter or saved'), restating the startDate default semantics ('due dates shifted onto the start date, default today'), and clarifying that clientId is optional and constrained to the user's own clients.
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 a specific verb and resource ('Creates a new project from a starter or saved template') and enumerates exactly what gets copied (lists, labels, tasks with estimates and checklists, settings). It is clear what the tool does, but it never names the adjacent siblings (create_project, create_sample_project, create_task_from_template) to help an agent distinguish this from them without opening schemas.
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?
There is no explicit when-to-use guidance, no when-not-to-use condition, and no alternative sibling named, despite the crowded create_* family. The 'Optionally for one of the user's clients' clause describes a parameter rather than usage context, so the agent must infer selection criteria from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_recurring_invoiceCreate recurring invoiceADestructiveInspect
Pro. Makes an invoice repeat: a new invoice with the same client, lines, tax, notes and terms is made on each date (every N weeks, months or years from nextDate), until endAfter invoices are made or with no end. Each new invoice is left as a draft, marked as sent (its link is published), or emailed to the client, as action says. The lines are copied now: later changes to the original invoice do not reach the ones to come. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| every | No | Every how many weeks, months or years, 1 to 12. Default 1. | |
| action | No | What happens to each new invoice. Default draft. email needs the client's email address on the invoice. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| endAfter | No | How many invoices to make, 1 to 500; null or omitted = no end. | |
| interval | Yes | ||
| nextDate | Yes | The date of the next invoice, today or later, YYYY-MM-DD. | |
| invoiceId | Yes | The invoice to repeat (not an estimate, not voided). | |
| paymentTermsDays | No | Days each new invoice gives to pay. Default: those of the original invoice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that line items are snapshotted at creation time, that each generated invoice is left as draft/published-link/emailed per action, and that omitting confirm yields a read-only preview rather than a mutation. These are exactly the side-effect details an agent needs given destructiveHint=true.
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?
Front-loaded with the core action, and every sentence carries information with no filler. It is a dense paragraph rather than structured bullets, which slightly hurts scannability for eight parameters, but nothing is 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?
For an 8-parameter mutation tool with no output schema, the description covers side effects, the confirm gate, and copying semantics thoroughly. It doesn't say what the preview result contains or what errors look like (e.g., voided/estimate invoice ids), leaving a small 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 coverage is already 88%, so the baseline is 3; the description adds real value by tying interval/every/nextDate together ('every N weeks, months or years from nextDate') and clarifying endAfter as a cap. It doesn't further explain paymentTermsDays or invoiceId eligibility beyond the schema text.
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?
Specific verb+resource ('Makes an invoice repeat') plus the exact mechanics: same client, lines, tax, notes and terms recurring every N weeks/months/years. It clearly distinguishes this from create_invoice (one-off) and update_recurring_invoice (modify an existing schedule) by describing creation of the recurring arrangement.
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?
Gives clear operating context: 'Pro' plan gating, the confirm:true requirement with a preview fallback, and the action choice (draft/send/email) with the email precondition. It does not explicitly route the agent away from create_invoice or update_recurring_invoice, so it lacks named alternatives, but the when-and-how context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sample_projectCreate sample projectADestructiveInspect
Creates a sample client, a sample project with a budget, six tasks with estimates and two weeks of hours, labelled as a sample in its name, so reports, the budget bar and the timesheet have something to show. One at a time. Uses a board of the free plan's limit (and the sample client is left out if the client limit is full).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, non-open-world, and destructive behavior, but the description adds rich operational detail about exactly what gets created, how much (six tasks, two weeks of hours), the 'one at a time' constraint, and free-plan/client-limit fallbacks. It does not explain the destructive aspect hinted by annotations (e.g., whether existing sample data is replaced), leaving a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and concise overall, but the first sentence is a long, multi-clause run-on that could be split for easier parsing. The second and third sentences are short. Overall efficient 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?
Given no input schema, no output schema, and annotations that carry the safety profile, the description supplies the necessary operational context: what the sample project comprises, its labelling, concurrency limit, and quota interactions. It is nearly complete; only the destructive annotation's implication is left unexplained.
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?
Zero parameters, so the schema imposes no semantic burden; baseline for no-param tools is 4. The description correctly focuses on side effects rather than field-level 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?
States the verb 'Creates' and precisely enumerates the resources (sample client, sample project with budget, six tasks, two weeks of hours) while marking the output as sample-labelled, which clearly separates it from create_project/create_client siblings that produce real data. An agent can identify the tool's unique role without opening the schema.
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 for use – populating reports, budget bar and timesheet with demo data – and a usage constraint ('One at a time'), plus limitation about free-plan board and client limit. It does not name when to avoid it or point to alternatives, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_saved_viewCreate saved viewBDestructiveInspect
Saves a personal view of a board: how to show it (board, table, calendar or timeline) and a filter (due date, labels, assignees). Only the user sees it. The free plan allows 3 per board.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | ||
| name | Yes | ||
| view | No | ||
| boardId | Yes | ||
| labelIds | No | ||
| assigneeIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=true, lowering the bar. The description adds real context beyond that: privacy scope ("Only the user sees it") and a quota (free plan allows 3 per board). However, it never explains the destructiveHint at all -- no mention of what happens when the 3-view limit is hit, whether an existing view is replaced, or what permissions are needed. Given the annotation explicitly flags destruction, that omission is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the core action front-loaded and zero filler. Each sentence adds something (what is saved, who sees it, plan limit). Slightly fragmentary parenthetical style keeps it from being a model of 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?
With no output schema, the description need not explain return values, and annotations cover the safety profile. Yet for a 6-parameter creation tool at 0% schema coverage it leaves the required parameters unexplained and says nothing about failure modes (limit exceeded) or whether the created view is returned/addressable. Adequate conceptual framing, incomplete operational detail.
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% across 6 parameters, so the description must carry the load. It partially does: it names the four view enum values and maps the three filter categories (due date, labels, assignees) to the due/labelIds/assigneeIds properties. But neither required parameter (boardId, name) is explained, the due enum values are not enumerated, and the ID-array format for labelIds/assigneeIds is left implicit.
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?
Specific verb + resource: "Saves a personal view of a board," and it goes further by enumerating what the view contains (board/table/calendar/timeline plus due date, labels, assignees filters). An agent immediately knows this writes a per-user view configuration. It stops short of naming the obvious counterpart (delete_saved_view) or otherwise differentiating itself from the many other create_* siblings, so a 5 is not warranted.
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 this is relevant (you want a personal board view) but never states when to use it versus alternatives or any exclusions. The two facts it does give -- "Only the user sees it" and the 3-per-board free-plan cap -- are constraints rather than selection guidance. Minimum-viable context, no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskCreate taskADestructiveInspect
Adds a task (card) to a list, or to a board's first list when only boardId is given. The description becomes the card's page and accepts Markdown (headings, bullet and numbered lists, - [ ] task lists, bold, italic, code, links, fenced code). Optional due date, reminders, repeat (Pro) and a checklist. The board's rules for new cards run, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| listId | No | ||
| boardId | No | Used if listId is omitted. | |
| dueDate | No | ISO 8601. | |
| checklist | No | A checklist on the card: { title?, items: [{ text, done? }] }. | |
| reminders | No | Reminders for you (push and email). | |
| recurrence | No | Repeat: archiving the task creates the next one, dates and reminders moved (Pro; needs a due date). | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false. The description adds real behavioral context beyond that: 'The board's rules for new cards run, as in the app,' which explains why a create call can have side effects, plus the Pro constraint that recurrence requires a due date. It does not explain return values, but for a create tool with annotation coverage this is solid.
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, front-loaded with the core action and resource before feature details. The parenthetical Markdown enumeration is the longest stretch and borders on padding, but it is informative enough to earn 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 an 8-param tool with nested objects and no output schema, the description covers creation semantics, target resolution, content format, side effects, and Pro constraints. The main omission is what the call returns (e.g., the created task identifier), which an agent may need for follow-up 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?
Schema coverage is only 63%, and the description compensates meaningfully: it documents that the `description` field becomes the card page and accepts Markdown (a detail absent from the schema), that recurrence is Pro-gated and needs a due date, and enumerates the optional features (due date, reminders, checklist). It adds utility beyond the structured fields, though not every undocumented param is covered.
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 and resource ('Adds a task (card) to a list') and further specifies the fallback ('or to a board's first list when only boardId is given'). It also implicitly distinguishes itself from siblings like create_task_from_template and bulk_tasks by describing scratch creation. An agent can identify exactly what this does without opening the schema.
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 gives conditional usage for two parameters (use listId, or boardId alone to target the first list), which is genuinely helpful routing guidance. However, it never says when to prefer this over create_task_from_template, bulk_tasks, or add_checklist/add_reminder — usage relative to alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_task_from_templateCreate task from templateCDestructiveInspect
Adds a task to a list from one of the board's card templates.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ||
| templateId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, yet the description says only that a task is 'added' — it never addresses why the operation is flagged destructive (does it consume or alter the template? is it reversible?) or what permissions are needed. With annotations doing the safety signaling, the description should have explained this tension, and instead adds nothing.
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-formed sentence with no filler; the action and source are front-loaded. It is appropriately sized, though the brevity is partly under-specification rather than disciplined concision.
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 write tool with no output schema, no annotation commentary, and 0% parameter documentation, the description leaves key gaps: required permissions, destructive behavior rationale, and parameter formats. An agent could invoke it, but without real confidence about side effects.
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 carry the burden, but it only loosely maps the two parameters to concepts ('a list', 'one of the board's card templates'). It gives no format guidance (ID vs name, where to obtain listId/templateId), leaving the agent to guess at values.
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 a specific verb (adds) and resource (a task to a list), and names the source (card template), which implicitly separates it from the plain create_task sibling. It never names an alternative explicitly, so differentiation is inferable rather than stated.
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 when-to-use, when-not-to-use, or alternative is given, despite several closely related siblings (create_task, save_task_as_template, duplicate_task). The only guidance is the implied precondition that a card template on the board exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookCreate webhookADestructiveInspect
Adds a webhook: from then on, each chosen event of the user's boards is sent outside Decknote. kind "slack" posts a line to a Slack channel through a Slack incoming-webhook URL (https://hooks.slack.com/…); kind "json" POSTs the event as JSON to any https URL (Zapier, Make, n8n, a server), signed in X-Decknote-Signature with a secret returned once, here. boardId limits it to one board the user owns; without it, every board they own and their invoices and estimates. events: the types to send (default: all). The free plan has 1 webhook, Pro 25. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| kind | Yes | ||
| events | No | ||
| boardId | No | One board the user owns. Omit for all of them. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructive/not-read-only; the description adds the real operational consequences: persistent external delivery of events, request signing via X-Decknote-Signature with a secret returned once in the response, free=1 / Pro=25 quota, and the confirm:true gate that otherwise yields only a preview. This is exactly the behavior an agent needs before invoking a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but earned: purpose first, then kind, scope, events, quotas, and the confirm gate. It reads as a long run-on paragraph with several implicit abbreviations ('…', 'here'), which costs a little clarity but no sentence is 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 5-parameter write tool with no output schema, the description covers effect, scoping, payload format, security (signing secret returned once), quotas, and the preview/confirm contract. Nothing material is missing 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 coverage is only 40%, but the description compensates by explaining every parameter: kind semantics and the URL format each expects, boardId's ownership restriction and fallback scope (all boards plus invoices/estimates), events defaulting to all, and confirm's preview behavior. This adds substantial meaning beyond the bare 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 a specific verb and resource ('Adds a webhook') and immediately explains the effect: chosen board events get sent outside Decknote. It is clearly a creation tool distinct from update_webhook/delete_webhook/list_webhooks, though it never names those siblings explicitly.
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?
Explains when each kind applies ('slack' for an incoming-webhook channel URL, 'json' for Zapier/Make/n8n/own server), how boardId scopes delivery versus omitting it, the event default, and the plan quotas. It lacks an explicit pointer to update_webhook/test_webhook for related follow-up actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_attachmentDelete attachmentADestructiveInspect
Deletes an attachment from a task (and the task's cover, if it was the cover image). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| attachmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true; the description adds genuinely non-obvious behavior: the aggressive side effect on the task cover image and the fact that omitting confirm yields a non-mutating preview. That is exactly the extra context annotations cannot carry.
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 compact sentences, with the core destructive action front-loaded and the confirm requirement trailing. The parenthetical about the cover image earns its place as it prevents surprise data loss.
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 destructive tool with no output schema and annotations covering the safety profile, the description supplies the essential missing pieces (preview gate, side effect). Minor gaps remain around permissions and reversibility, but nothing blocks 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 50%: 'confirm' is already fully documented in the schema, so the description's restatement adds little, while 'attachmentId' has no schema description and gets no format/ID guidance here either. Partial compensation only.
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 a specific verb (deletes) and resource (an attachment from a task), and goes further by disclosing a secondary effect: removal of the task cover if the attachment was the cover image. This is unmistakably distinct from the nearby rename_attachment and add_attachment siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a two-step preview-then-confirm workflow via 'Needs confirm: true', which is usable guidance, but it never states when to choose this tool over alternatives or what preconditions exist (e.g., permissions). Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_automationDelete automationADestructiveInspect
Deletes a board rule. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| automationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety baseline is covered. The description adds genuinely useful non-obvious behavior: the operation is a no-op preview unless confirm is exactly true, and any non-true value degrades to preview. It omits whether the preview reports affected items or what permissions are needed.
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 with the destructive/preview caveat front-loaded right after the purpose; no filler. Slightly telegraphic, but every clause carries weight.
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 destructive tool with annotations covering the safety profile and no output schema, the description supplies the critical behavioral fact (preview-by-default). The main remaining gap is that the preview result format is unstated, though the absence of an output schema makes that a moderate shortfall rather than a critical one.
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 50%: confirm is already fully documented in the schema, and the description essentially restates that same contract, while automationId remains unexplained in both places (no format, no hint on where to obtain it). With half the schema undocumented, the description does not compensate enough to exceed the baseline.
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 gives a specific verb+resource: 'Deletes a board rule,' which maps cleanly to delete_automation and distinguishes it from sibling deletions like delete_board, delete_task, or delete_list. It doesn't explicitly name or contrast with siblings such as set_automation_enabled (disable vs. delete), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The confirm/preview note implies a two-step usage pattern (preview first, then commit), which is real usage guidance. However, it never states when to delete an automation versus disabling it via set_automation_enabled, nor any prerequisites such as permission requirements. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_boardDelete boardADestructiveInspect
Permanently deletes a board the user owns, with every list, card, comment and attachment on it, also for the people it is shared with. Irreversible. Without confirm: true nothing is deleted and the result is a preview of what would be lost.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial detail beyond the destructiveHint annotation: it discloses that all nested content (lists, cards, comments, attachments) is destroyed, that shared users are affected, and that the operation is irreversible. It also describes the confirm-based preview behavior, which is critical for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the primary action and scope, followed by the irreversibility warning and the confirm preview behavior. Every sentence earns its place with 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?
For a destructive delete tool with no output schema, the description covers the critical agent needs: what will be deleted, the irreversibility, the sharing impact, and how to preview safely. Nothing essential is missing.
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 documents the confirm parameter in detail, and the description repeats that preview behavior. For boardId, the description adds only the ownership constraint ('a board the user owns'), which is helpful but not a full semantic treatment. With 50% schema coverage, this is adequate but not rich.
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 the exact verb and resource ('Permanently deletes a board') and specifies the cascade scope: lists, cards, comments, attachments, and shared users. The use of 'permanently' and 'Irreversible' distinguishes it from reversible board operations such as archive_board or restore_board, even though no sibling is named explicitly.
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 the confirm preview mechanism, which is useful usage context, but it does not state when to choose this tool over alternatives like archive_board or delete_list. The implied usage is clear from the verb, yet no explicit guidance 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.
delete_card_templateDelete card templateADestructiveInspect
Deletes a card template; tasks made from it stay. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| templateId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this destructive and non-read-only. The description adds real behavioral context beyond annotations: the two-phase preview/confirm model and that dependent tasks survive the deletion. It stops short of describing reversibility or permission 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?
Two compact sentences, front-loaded with the action and its side effect, then the confirmation requirement. 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?
No output schema, so the description should carry return behavior — it does explain the preview vs. execution outcome. Given annotations covering destructiveness and a small 2-param schema, this is nearly complete; only auth/reversibility detail is missing.
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 coverage is 50%; the description compensates for the undocumented templateId (implied target) and reinforces confirm's exact semantics. The schema already spells out confirm's behavior, so the description largely echoes it, but it adds the preview-framing which is genuinely useful.
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 a specific verb+resource ('Deletes a card template') and immediately disambiguates from other delete tools by clarifying the effect on derived tasks ('tasks made from it stay'), which is the key distinguishing behavior versus delete_task or delete_board.
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?
Clearly explains the confirm semantics — without confirm:true you get a preview rather than the deletion. It does not, however, explicitly route to siblings (e.g., archive vs delete) or state when deletion is preferred over archiving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_checklistDelete checklistADestructiveInspect
Deletes a checklist with all its items. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| checklistId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so safety is partly covered, but the description adds real value by disclosing the two-phase confirm/preview mechanism and that all items are removed. It stops short of stating irreversibility or permission requirements, but the preview semantics are a meaningful addition 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?
Two tight sentences with no waste; the destructive scope is front-loaded and the confirm requirement follows immediately. 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 destructive delete tool whose annotations carry the safety profile and with no output schema to explain, the description covers the key behaviors an agent needs: what is deleted, and that confirmation is required. The undocumented checklistId leaves a minor 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 coverage is 50%: the confirm parameter is fully documented in the schema, and the description largely restates it, while checklistId has no description anywhere. The description does not compensate for the undocumented checklistId, so it adds little beyond structured data.
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 a specific verb ('Deletes') and resource ('a checklist') and adds scope ('with all its items'), which cleanly distinguishes it from the sibling delete_checklist_item. An agent can tell what gets removed without opening the schema.
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 the confirm: true requirement and the preview fallback, which is useful operating guidance, but it never states when to choose this over alternatives like delete_checklist_item or archive/update paths. Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_checklist_itemDelete checklist itemADestructiveInspect
Deletes one checklist item. A checklist keeps at least one item, so its last item only goes away with the whole checklist. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds real behavioral context beyond that: the dry-run/preview mode when confirm is absent or not boolean true, and the invariant that the final checklist item cannot be removed here. It does not describe the preview payload's contents, but for a destructive tool this is solid added 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?
Three short sentences, zero filler, and the ordering is effective: core action first, then the constraint caveat, then the confirm-gating requirement that an agent must act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the description covers the essentials: what is destroyed, the last-item guard, and the confirm gate including preview behavior. The only real omission is any sense of what the preview returns or how errors surface when the last item is targeted.
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 coverage is 50%: confirm is fully documented in the schema and restated in the description with the same semantics, but itemId has no description in either place. The description implies itemId is the item being deleted but adds no format or sourcing guidance, so it only 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?
States a specific verb and resource (delete one checklist item) and immediately bounds the scope against the sibling delete_checklist by explaining that a checklist always keeps at least one item, so the last item requires deleting the whole checklist. An agent can distinguish it from delete_checklist, update_checklist_item, and delete_task without opening a schema.
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?
Gives concrete conditions for correct invocation: confirm: true is required for the action, and omitting it yields a preview rather than a change. It also warns about the last-item case. It does not explicitly name the alternative (delete_checklist) as the route for full removal, so the routing guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_client_commentDelete client commentADestructiveInspect
Permanently removes one comment from a task's conversation on the client portal (spam, a mistake): the client's page stops showing it at once. Works on the client's comments and on the team's answers. Only the project owner. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| commentId | Yes | A comment of the portal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the bar is lower, yet the description adds substantial context beyond them: owner-only authorization, immediate effect on the client page, the confirm=true preview mechanic, and the scope covering both client comments and team answers. Nothing about consequences is left implicit.
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 tightly packed sentences with no waste, front-loading the action and permanence, then scope, then authorization and the confirm gate. The parenthetical examples earn their space by clarifying intent.
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 destructive tool with no output schema, the description supplies everything an agent needs: authorization requirement, confirmation semantics, side effects, and scope. No meaningful gap remains given that annotations cover the safety profile and the schema covers the 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?
Schema description coverage is 100%, and the schema itself documents confirm's preview behavior and commentId. The description restates the confirm requirement but adds no syntax, format, or lookup guidance beyond what the schema already provides, 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?
States a specific verb (permanently removes), resource (one comment), and scope (task conversation on the client portal), which distinguishes it from sibling delete_comment and delete_page_comment. An agent can tell which comment surface this targets without opening the schema.
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?
Gives clear usage context (spam, a mistake), a prerequisite (only the project owner), and the confirm/preview flow. It does not explicitly name the alternative tools (e.g., delete_comment for internal comments), so it stops short of full when-vs-alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentDelete commentADestructiveInspect
Deletes a comment (the user's own, or any on a board the user owns). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| commentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/destructive nature is covered structurally. The description adds two things the annotations cannot: the ownership-based authorization rule and the confirm gate that makes the call a preview by default — a genuinely non-obvious safety behavior for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the destructive action and the confirm requirement both front-loaded. Every clause carries information an agent needs before calling.
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 destructive tool with annotations covering the safety profile and no output schema, this is nearly sufficient: action, permission scope, and the preview default are all stated. It stops short of covering failure modes (nonexistent/already-deleted comment) or whether replies to the comment are affected.
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 50%: 'confirm' is fully documented in the schema, while 'commentId' carries no description. The description restates the confirm semantics (already in the schema) and adds nothing about what a comment ID is or where to obtain it, so it neither compensates for the gap nor falls below the baseline for this coverage 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?
Specific verb ('Deletes') plus resource ('a comment'), and it goes further by stating the authorization scope in parentheses: the user's own comments or any on a board the user owns. This distinguishes it from edit_comment and delete_task-style siblings without opening a schema.
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 clarifies who may delete what, which is a real usage constraint, but it never names an alternative (edit_comment, react_to_comment, delete_task) or states when deletion is preferable to editing. Usage is implied by the permission scope rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_custom_fieldDelete custom fieldADestructiveInspect
Deletes a custom field and its value on every card. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| fieldId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds genuine behavioral context beyond that: the two-phase confirm/preview mode and the fact that the deletion cascades to the field's value on every card — neither is derivable from 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 tight sentences, with the destructive effect front-loaded and the confirm requirement immediately after. 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?
No output schema exists, and the description covers the critical call semantics (preview vs commit, cascade). It could still say whether the deletion is reversible or what permissions are required, but for a 2-parameter tool it is close to 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 coverage is 50%: confirm already has a thorough schema description that the prose largely restates, while fieldId is undocumented in both schema and description. With 2 parameters and one half-documented, baseline 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?
States a specific verb (deletes), the exact resource (a custom field), and the blast radius (its value on every card), which an agent cannot infer from the name alone. It is clearly distinguishable from sibling delete_* tools that target different resources like delete_label or delete_list.
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 supplies the confirm:true precondition, which is a real usage instruction, but gives no guidance on when deletion is preferable to keeping the field or using update_custom_field instead, and no warning about irreversibility or 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.
delete_expenseDelete expenseADestructiveInspect
Permanently deletes an expense that is not yet on an invoice. The person who logged it and the project owner can delete it. Needs confirm: true; without it the result is a preview of what would be lost.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| expenseId | Yes | The expense. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true/readOnlyHint=false; the description goes well beyond by disclosing that deletion is permanent, the permission model (logger or project owner), and the confirm-gated preview behavior. These are exactly the behavioral traits an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler; the destructive scope is front-loaded, followed by permissions and then the confirm gate. Every sentence carries distinct, actionable 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?
With no output schema, the description adequately covers destructiveness, permissions, and the confirm/preview flow. It leaves minor gaps such as error behavior when the expense is already on an invoice or whether related data is affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, so the baseline is 3. The description restates the confirm:true requirement and the preview semantics, which mirrors rather than extends the schema's own wording.
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 a specific verb (permanently deletes) and resource (an expense), plus a scoping precondition (not yet on an invoice) that separates it from update_expense and list_expenses. An agent can identify the operation and its domain constraint without opening the schema.
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?
Gives clear when-to-use conditions: only for expenses not yet on an invoice, and only by the person who logged it or the project owner. It stops short of naming an explicit alternative (e.g., remove from invoice first, or update_expense), so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_expense_receiptDelete expense receiptADestructiveInspect
Deletes a receipt of an expense for good. The person who logged the expense and the project owner can delete it. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| receiptId | Yes | The receipt (its id is in each expense's receipts). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so "for good" adds little; the real value is the disclosed permission model and the dry-run preview behavior when confirm is absent. It doesn't cover error cases (e.g., missing receipt, insufficient rights), keeping it below 5.
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 sentences, front-loaded with the action and permanence, then authorization, then the confirm mechanic. 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?
For a destructive 2-parameter tool with no output schema, the description covers permanence, authorization, and the preview safety valve — the key facts an agent needs to call 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?
Schema coverage is 100%, so both parameters (receiptId, confirm) are already documented in detail. The description's remark about confirm:true largely restates the schema's own explanation, so 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?
States a specific verb and resource ("Deletes a receipt of an expense") and adds permanence ("for good"). This cleanly isolates it from the sibling delete_expense (deletes the expense) and add_expense_receipt without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete invocation guidance — who is authorized (the logger and the project owner) and the confirm:true requirement with preview fallback. It doesn't explicitly exclude sibling tools or say when deleting a receipt is preferable to updating/removing the expense, 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.
delete_invoice_draftDelete invoice draftADestructiveInspect
Deletes a draft invoice or estimate for good. Only a draft: it was not sent, so no client saw it, and it has no number, so no gap is left in the numbering. The hours and expenses it had taken go back to the project's unbilled work, and an estimate it was made from can become an invoice again. A deleted draft stops counting toward the free plan's monthly allowance. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the destructiveHint annotation: deletion is permanent, hours and expenses return to unbilled work, a source estimate can become an invoice again, and the draft stops counting toward the free-plan allowance. It also explains that omitting confirm yields a preview rather than performing the deletion.
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 action and then explains consequences and the confirm requirement. Every sentence contributes useful information for a destructive 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?
There is no output schema, and the description covers the key behavioral details: irreversibility, side effects on unbilled work and estimates, billing impact, and the confirm/preview distinction. An agent has enough context 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?
Schema description coverage is 100%, so the schema already documents both invoiceId and confirm. The description reinforces the confirm preview behavior but does not add parameter meaning beyond what the schema already provides.
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 and resource: it deletes a draft invoice or estimate. It also scopes the operation to drafts only, which distinguishes it from actions on sent or numbered invoices.
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 clearly says the tool applies only to drafts that were not sent and have no number, and it explains that confirm: true is required. It does not explicitly name a sibling alternative such as void_invoice for non-draft invoices, so it falls short of full sibling routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_labelDelete labelADestructiveInspect
Deletes a label from a board and removes it from every card that has it. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| labelId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds the crucial detail annotations cannot express: exactly what is destroyed (the label and its application on every card). It also discloses the dry-run/preview safety behavior of the confirm gate, which is valuable behavioral context for a destructive 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 tight sentences, front-loaded with the primary effect and immediately followed by the confirmation requirement. No filler or restatement of the tool name.
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 two-parameter destructive tool with no output schema, the description covers the effect scope and the confirm/preview mechanic well. It omits permission or authorization requirements and whether the deletion is reversible, which would be useful for a destructive 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 50%: confirm is fully documented in both schema and description (redundant but consistent), while labelId has no description anywhere. The description does not compensate for that gap, though the parameter name is largely self-explanatory.
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 a specific verb and resource ('Deletes a label from a board') and goes further to define the scope of the deletion ('removes it from every card that has it'). This cascade detail cleanly separates it from siblings like update_label, create_label, and delete_list.
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 states the invocation precondition ('Needs confirm: true; without it the result is a preview'), which tells the agent how to actually execute versus preview. It does not, however, mention any alternative tool or when-not-to-use case (e.g., renaming via update_label instead of deleting).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_listDelete listADestructiveInspect
Permanently deletes a list and every card in it, archived ones included. Irreversible. Needs confirm: true; without it the result is a preview with the number of cards that would be lost.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds substantial context beyond them: the deletion cascades to all cards including archived ones, it is irreversible, and omitting confirm produces a preview with the number of cards that would be lost. That is exactly the behavioral detail an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences are front-loaded with the core action, then irreversibility, then the confirmation requirement. Every sentence adds distinct information and none is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive cascade tool with no output schema and full destructive annotations, the description covers consequences, irreversibility, and preview behavior well. Minor gaps remain: listId semantics are not documented, and no permissions or side effects beyond card deletion are mentioned.
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 coverage is moderate at 50%. The confirm parameter is already fully described in the schema, and the description mostly restates that behavior while adding the preview detail ('number of cards that would be lost'). The required listId parameter remains unexplained in both the schema and the description, though its meaning is largely evident from the name.
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 and resource (permanently deletes a list) and clarifies the cascade scope (every card, archived included). The word 'permanently' distinguishes it from archive siblings such as archive_board and archive_task, so an agent can tell it apart without opening sibling schemas.
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 the confirmation precondition ('Needs confirm: true') and the preview fallback, which is useful invocation guidance. However, it does not say when to choose delete_list over alternatives such as archive_task, update_list, or restore_task, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageDelete pageADestructiveInspect
Permanently deletes a note or discussion with all its comments. Its author and the project owner can. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page (a note or a discussion). | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds the cascade ('with all its comments'), the authorization rule, and the dry-run preview semantics of omitting confirm. That is meaningful behavior beyond the structured hints.
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 sentences, destruction and authorization front-loaded, no filler. The fragment 'Its author and the project owner can.' is slightly clipped and would read better with an explicit verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the definition covers scope of deletion, permissions, and preview mode. It could say whether the deletion is recoverable or what the preview returns, but nothing essential is missing.
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 coverage is 100% and both parameters are fully documented in the schema, including the exact confirm/preview contract. The description restates confirm rather than adding syntax or constraints, so 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?
States a specific verb ('permanently deletes') and resource, and disambiguates 'page' as 'a note or a discussion'. The word 'permanently' also separates it from the sibling set_page_archived, so an agent can route correctly.
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?
Gives real preconditions: only the author and the project owner may call it, and confirm:true is required or the call degrades to a preview. It does not, however, point to an alternative such as archiving when a reversible action is wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_page_commentDelete page commentADestructiveInspect
Permanently deletes a page comment. Its author and the project owner can. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| commentId | Yes | A page comment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds genuinely new behavioral context: the deletion is permanent, is authorization-gated, and without confirm:true only a preview is returned. It omits whether cascading effects occur (e.g., replies) or whether the action is recoverable.
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 sentences with the core action front-loaded and the confirm requirement last. 'Its author and the project owner can.' is telegraphically clipped but not wasteful; nothing extraneous is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the description covers the essentials: permanence, permission scope, and the confirm-preview mechanism. Only edge cases such as recovery or side effects on dependent data are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, and the description's confirm sentence largely restates the schema's own text. Baseline 3 is appropriate since the description adds no extra syntax or edge-case detail.
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 a specific verb+resource ('Permanently deletes a page comment') that identifies the target object precisely. It implicitly separates itself from delete_comment/delete_client_comment by naming the resource, though it never explicitly contrasts with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete prerequisites: who is permitted ('Its author and the project owner can') and the required confirm:true flag with the preview fallback. It does not state when to prefer this over edit_page_comment or the other delete variants, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_templateDelete project templateADestructiveInspect
Permanently deletes a saved template of the user (projects already made from it are untouched; the starters cannot be deleted). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| templateId | Yes | A saved template of the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true and readOnlyHint=false; the description goes well beyond that by disclosing permanence, the non-cascading effect on already-created projects, the prohibition on deleting starter templates, and the confirm-gated dry-run behavior. These are exactly the behavioral traits an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the destructive action front-loaded, followed by the two side-effect caveats and the confirm requirement in parentheses. No filler and nothing repeated from the schema verbatim.
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 destructive mutation with full schema coverage, destructive annotations, and no output schema, the description supplies everything missing: irreversibility, blast radius, restricted targets, and the confirm gate. Nothing an agent needs to call this correctly is absent.
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 coverage is 100%, so the confirm semantics are already documented in the schema; the description restates them but adds a constraint on templateId (starters cannot be deleted) that the schema's terse 'A saved template of the user' does not convey. Baseline would be 3, lifted slightly by that added eligibility constraint.
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 a specific verb and resource (permanently deletes a saved template) and immediately scopes the effect: projects made from the template are untouched, and starter templates cannot be deleted. This distinguishes it from nearby siblings like delete_card_template, delete_sample_project, and archive_* operations without opening any schema.
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?
Clearly conveys the calling context: this is the tool for removing a saved template, and it requires confirm: true or the call only produces a preview. It does not explicitly name alternatives (e.g., list_project_templates for discovery, or rename_project_template), but the confirm/preview gate gives concrete guidance on how to invoke it safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recurring_invoiceDelete recurring invoiceADestructiveInspect
Deletes a recurring invoice: no more invoices are made from it. The invoices it already made stay as they are. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| recurringId | Yes | The recurring invoice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known; the description adds the genuinely non-obvious part — the blast radius is limited to future generation and already-issued invoices are untouched. What's missing is permission requirements and whether the deletion is reversible.
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 sentences, each earning its place: effect, scope of destruction, and the confirm requirement are front-loaded in that order. No filler or restatement of the title.
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 destructive tool with full schema coverage, annotations, and no output schema, the description supplies everything an agent needs: what is deleted, what survives, and how to preview safely.
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 coverage is 100% and the confirm parameter's description in the schema is actually richer than the tool description (it explains that any value other than boolean true yields a preview). The description restates the confirm semantics but adds nothing about recurringId beyond what the schema says.
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 a specific verb and resource ('Deletes a recurring invoice') and immediately bounds the effect: 'no more invoices are made from it' while 'the invoices it already made stay as they are.' That scope clarification separates it cleanly from void_invoice, delete_invoice_draft, and update_recurring_invoice without the agent needing to open any schema.
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?
Gives explicit operational guidance for the confirm flag: 'Needs confirm: true; without it the result is a preview,' which tells the agent exactly how to run a safe dry-run first. It does not, however, address when to delete versus archive/update a recurring invoice, nor mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sample_projectDelete sample projectADestructiveInspect
Permanently deletes the sample project with everything on it (its tasks, hours and anything added to it since) and the sample client if nothing else uses it. The user's own projects and reports are untouched. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes well beyond them: it discloses the exact cascade (tasks, hours, anything added since), the conditional deletion of the sample client, what is preserved, and the confirm/preview safeguard. For a destructive tool this is rich, decision-relevant 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?
Three tight sentences, each carrying unique information, with the destructive scope front-loaded before the confirm requirement. 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 single-parameter destructive tool with no output schema, the description covers the action, its blast radius, what is spared, and the confirmation gate. Nothing an agent needs to call it safely is missing.
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 a single parameter at 100% schema coverage, the schema already fully documents the confirm flag and its preview behavior. The description restates the same confirm/preview semantics without adding format or syntax detail beyond the schema, 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?
States a specific verb (permanently deletes) and a precisely scoped resource (the sample project), and clarifies the cascade to its tasks, hours, and the sample client. This distinguishes it cleanly from siblings like delete_project_template, delete_task, and delete_board.
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 makes the key decision criterion explicit: this only affects sample data and leaves the user's own projects and reports untouched, which is exactly what an agent needs to decide whether to call it. It stops short of naming an alternative tool or an explicit when-not, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_saved_viewDelete saved viewADestructiveInspect
Deletes one of the user's saved views. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| viewId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the meaningful behavioral trait that the default (no confirm) is a non-destructive preview rather than a partial delete, which is the most likely failure mode for an agent. It does not say whether the deletion is permanent or recoverable.
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, zero filler, with the destructive action stated first and the safety condition second. Nothing could be removed without losing 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 two-parameter destructive tool with no output schema, the definition covers the essential mechanics: what it removes and the confirmation gate. It omits whether the operation is reversible or permission-restricted, which is the one remaining gap for a destructive call.
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 coverage is 50%: confirm is fully documented in the schema, and the description merely restates it in shorter form. viewId has no description in either place; the phrase 'one of the user's saved views' hints at its role but supplies no ID format or source. Baseline 3 for partial coverage with the schema doing most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deletes one of the user's saved views'), which is unambiguous against the many sibling delete_* tools since the resource differs. It does not explicitly differentiate itself from siblings like delete_board or delete_list, but the resource naming carries that work.
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?
Gives a concrete invocation condition: confirm: true is needed or the call degrades to a preview. That is a genuine how-to-use rule rather than a when-to-use rule, and no alternative tool or exclusion is named, 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.
delete_taskDelete taskADestructiveInspect
Permanently deletes a task with its comments, checklists and attachments. Irreversible. Needs confirm: true; without it the result is a preview of what would be lost.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true and readOnlyHint=false; the description goes well beyond that by naming exactly what is destroyed (comments, checklists, attachments), declaring irreversibility, and disclosing the dry-run preview semantics of the confirm flag. This is real behavioral disclosure that the agent could not derive from the structured fields 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?
Three short sentences, front-loaded with the destructive scope and irreversibility, then the confirm requirement. Every sentence carries distinct information with no padding.
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 already covering the safety profile, the description supplies the cascade scope, irreversibility, and the confirm/preview contract an agent needs to call it safely. It stops short of mentioning permission requirements or whether the deletion can be undone via restore_task.
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 coverage is 50%: the confirm parameter is already fully documented in the schema, and the description largely restates it rather than adding new semantics. cardId is never mentioned by name or clarified in the description, so the undocumented half of the schema is not compensated for.
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 a specific verb and resource (permanently deletes a task) and adds the cascade scope — comments, checklists, attachments. The word 'permanently' implicitly distinguishes it from siblings like archive_task and delete_card_template, but no sibling is named explicitly, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete invocation rule — confirm: true is required, otherwise you get a preview — which is useful operational guidance. However, it never says when to prefer this over archive_task (reversible) or when deletion vs. archiving is appropriate, so the when-to-use-vs-alternative question is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_time_entryDelete time entryADestructiveInspect
Permanently deletes a time entry, or a running timer. A person deletes their own entries and the project owner deletes anyone's; time already billed to a client cannot be deleted. Needs confirm: true; without it the result is a preview of what would be lost.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| entryId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds substantial context beyond them: permanence, the authorization model (self vs project owner), the billed-time restriction, and the dry-run preview behavior when confirm is absent. This tells the agent exactly what gets destroyed and under what authority.
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 irreversible action, then permissions, then the confirm requirement. No filler, and each clause carries distinct operational 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 destructive two-parameter tool with no output schema, it covers safety, authorization, and preview semantics well. It stops short on the shape of the preview result and the entryId format, which are the remaining 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 coverage is 50%: confirm is fully documented in the schema and the description merely restates its preview semantics, while entryId has no description anywhere and its format is never clarified. It adds marginal meaning over the schema rather than compensating 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?
States a precise verb and resource ('Permanently deletes a time entry, or a running timer'), and distinguishes the two object types this acts on. An agent can separate this from list_time_entries, update_time_entry, or stop_timer without opening any schema.
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?
Explicit conditions are given: a person may delete their own entries, a project owner may delete anyone's, and time already billed to a client cannot be deleted. It also states the mandatory confirm: true precondition and what happens without it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete webhookADestructiveInspect
Deletes one of the account's webhooks: nothing more is sent to its address. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| webhookId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description's real value is explaining the two-phase behavior — without confirm:true nothing changes and a preview is returned — which is not in any structured field. It does not state whether deletion is reversible or irretrievable, which is the one meaningful gap for a destructive 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 short sentences, effect stated first and the confirm gating second. No filler, nothing truncated that matters.
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 two-parameter destructive tool with annotations covering the safety profile and no output schema, the description covers the action, its consequence, and the preview safeguard. Only irreversibility and recovery options are left unstated.
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 coverage is 50%, and the one parameter the description touches (confirm) is already documented in the schema at length, so the description largely restates it. webhookId has no description anywhere, though its meaning is self-evident from the name. Baseline 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?
States a specific verb and resource ('Deletes one of the account's webhooks') and adds the consequence ('nothing more is sent to its address'), which makes the effect unambiguous. It doesn't explicitly contrast with siblings like update_webhook or test_webhook, but the verb+resource pairing is specific enough to select correctly.
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 an operational rule (confirm: true required, otherwise preview) but never says when to prefer this over update_webhook to merely disable a webhook, nor when deletion is appropriate versus leaving it inactive. Usage is implied rather than contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_boardDuplicate boardADestructiveInspect
Copies a board the user can see into a new board the user owns: lists, cards (content, dates, checklists, labels) and look. Members, comments and attachments are not copied. Counts toward the free plan's 5 owned boards.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=true, openWorldHint=false; the description goes beyond them by disclosing what is excluded (members, comments, attachments) and the quota side-effect on owned-board limits. It does not describe the output (new board id/name) or permission-failure behavior, and the destructiveHint is left unexplained for an operation that arguably only creates.
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 sentences: the core behaviour first, then the omission list, then the quota caveat. No filler, no repetition of the tool title, and the most decision-relevant information leads.
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 single-parameter mutation with no output schema and annotations covering the safety profile, the description covers copy scope, omissions and side-effects. The remaining gap is the result of the call (new board's identifier) and error conditions, which are not documented anywhere.
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 single boardId parameter carries no documented format in the schema. The description partially compensates by constraining valid inputs to boards the user can see, but it never states whether boardId is an id, slug or name, nor what happens if the board is not visible. Partial coverage of a one-parameter tool.
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 a specific verb+resource ('Copies a board ... into a new board') and enumerates exactly which sub-entities travel with the copy (lists, cards, content, dates, checklists, labels, look). This distinguishes it cleanly from create_board (blank board), duplicate_list and duplicate_task (sub-board scope) among the many board-mutating siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition that selects this tool ('a board the user can see' → 'a new board the user owns') and a consumption caveat ('counts toward the free plan's 5 owned boards'). It does not explicitly route the agent away from alternatives like create_board or export_data, so it stops short of full 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.
duplicate_invoiceDuplicate invoiceADestructiveInspect
Creates a new draft with the same client, lines, tax, notes and terms as an invoice or estimate, dated today and without a number until it is sent; no work, no payments. Counts toward the free plan's 2 documents per month.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it specifies what is copied (client, lines, tax, notes, terms), that the draft is dated today, has no number until sent, creates no work or payments, and counts toward the free plan limit. However, it does not address the destructiveHint: true annotation, which could confuse an agent expecting a destructive operation; the description implies a purely additive creation.
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 action and packs all necessary details into two compact clauses. Every phrase adds value, and there is no redundant or filler text.
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 single-parameter tool with no output schema, the description covers the essential behavior, creation details, and a notable side effect (free plan limit). It could be slightly more complete by explicitly stating that the original invoice/estimate remains unchanged, but it is largely sufficient.
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 coverage is 100% and the sole parameter invoiceId is already documented as 'The invoice or estimate.' The description reinforces this by referencing 'an invoice or estimate', but adds no new meaning beyond the schema, so the baseline 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 states a specific verb ('Creates a new draft') and resource ('with the same client, lines, tax, notes and terms as an invoice or estimate'), clearly distinguishing it from sibling tools like create_invoice or convert_estimate_to_invoice. An agent can immediately tell this is for duplicating an existing document.
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 it (to copy an invoice or estimate) but does not explicitly say when to choose this over alternatives like create_invoice or create_invoice_from_work. No exclusions or alternatives are named, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_listDuplicate listADestructiveInspect
Copies a list with its open cards (content, dates, labels, checklists) to the end of the same board.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real value beyond annotations by disclosing scope: only open cards are copied (implying archived cards are excluded) and it explicitly names the copied fields. It also states placement (end of the same board). It does not explain what happens to the new list's name or the return value, but with annotations covering the mutation/destructive profile this is solid 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?
A single front-loaded sentence that states the action, the copied contents, and the placement with zero filler. 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 one-parameter duplication tool with no output schema, the description covers what is copied and where it lands, which is most of what an agent needs. It leaves minor gaps around the resulting list's naming and whether the copy is a full clone, but is broadly 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% for the single listId parameter, so the description must carry meaning, and it only implies listId as the source list via 'Copies a list' and 'same board'. It never names or clarifies the parameter, though for a single obvious identifier the gap is minor.
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 a specific verb (Copies) and resource (a list with its open cards), and the parenthetical enumerates exactly what is carried over (content, dates, labels, checklists). This clearly distinguishes it from duplicate_board and duplicate_task by resource scope, though it does not name those siblings directly.
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?
There is no guidance on when to use this tool versus create_list, duplicate_board, duplicate_task, or manually adding cards. No prerequisites or exclusions are given, so the agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_taskDuplicate taskADestructiveInspect
Copies a task right below the original: title, description, dates, labels, cover, field values and checklists (not comments, assignees or attachments).
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it precisely lists what is duplicated and, crucially, what is not (comments, assignees, attachments) — a real gotcha for an agent. It does not contradict destructiveHint=true, though it also says nothing about permissions or the returned object.
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?
One front-loaded sentence, verb first, with the inclusion/exclusion lists compressed into a tight trailing clause. No redundant or filler text.
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 single-parameter duplication tool with no output schema, the description covers the operation's scope well, but omits what the call returns (e.g., the new task's id) and gives no hint about the required identifier. Annotations cover the safety profile, so the remaining gap is moderate.
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?
Only one parameter (cardId, required) with 0% schema description coverage, and the description never explains it. The meaning is strongly inferable (the task to copy), so it's minimally adequate, but the description does not compensate 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?
States a specific verb (copies) plus resource (a task) and even the placement (right below the original), then enumerates the exact fields duplicated. An agent can distinguish this from duplicate_board, duplicate_list, and create_task without opening any schema.
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 copy scope is clear, but there is no explicit when-to-use guidance or reference to alternatives (create_task, save_task_as_template, duplicate_board/list). Usage is only implied by the tool name and the sibling family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_commentEdit commentBDestructiveInspect
Edits a comment's text (the user's own, or any on a board the user owns). It shows as edited.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| commentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=false; the description adds a genuinely useful non-schema fact, that the edit is visible to others ('It shows as edited'). It does not explain that the prior text is replaced/lost, which is the behavior behind the destructive hint, nor anything about permissions enforcement or notifications.
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-loaded with the action and followed by the permission scope and the visible side effect. No filler, though the parenthetical scope sits before the more useful side-effect 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 2-parameter mutation with no output schema, the description covers purpose, permission scope, and one side effect. It omits where commentId comes from and what happens to the previous text, leaving an agent to infer the mechanics of a destructive edit.
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 both parameters, so the description must carry the meaning. It only implies what 'text' is; 'commentId' is never mentioned, and there is no guidance on where to obtain a valid comment ID or whether text is plain/Markdown. The description does not compensate 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?
States a specific verb and resource ('Edits a comment's text') and adds an authorization scope ('the user's own, or any on a board the user owns'). It does not name a sibling, but the verb+resource pairing (vs. add_comment, delete_comment, react_to_comment) 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 ownership constraint ('own comment, or any on a board the user owns') implicitly tells the agent when the call will succeed, which is useful precondition guidance. However, it never states when to prefer this over delete_comment/react_to_comment or what to do when the ownership condition is not met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_page_commentEdit page commentADestructiveInspect
Changes the text of one of the user's own page comments. Not on an archived page. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Up to 5000 characters. | |
| commentId | Yes | A page comment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is known. The description adds valuable behavioral context beyond annotations: the comment must belong to the user, the page cannot be archived, and the editor role is required. It does not explain what happens to the prior text or the returned result, but the added constraints are meaningful.
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 sentences, each carrying distinct information: the action, the archived-page exclusion, and the permission requirement. It is front-loaded and has 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 two-parameter mutation tool with full schema coverage and useful annotations, the description covers the essential target, restriction, and authorization requirements. It does not discuss failure cases such as a missing comment or insufficient role, but the core invocation context is 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 100%, and the schema already documents both text and commentId. The description clarifies that the operation changes text on an existing page comment, which gives some implicit meaning to both parameters. This is the baseline case where the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it changes the text of a page comment. It also scopes the target to the user's own page comments. It stops short of explicitly naming a sibling such as edit_comment or delete_page_comment, so it is clear but lacks direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context and prerequisites: the page must not be archived, and the caller needs the editor role on the project. It does not, however, name an alternative tool for cases where those conditions are not met. The guidance is therefore useful but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_invoiceEmail invoiceADestructiveInspect
Emails the document to the client from Decknote on the user's behalf (replies go to the user), with a link to it; a draft takes the next number, becomes sent and its link is published. One plain address: the document's or to. Limited to 20 emails an hour per person and one email per document every 10 minutes. A new address beyond the plan's allowance (2 addresses in all on the free plan, 25 new ones a day on Pro) must first confirm that it wants the user's emails: it gets a link from Decknote and the call fails with code unconfirmed until it confirms. On the free plan the message cannot carry links or web addresses. Needs confirm: true and amount equal to the total; without them the result is a preview with the exact email.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Another address than the one on the document. | |
| amount | No | The document's total in the currency's main unit, repeated from the preview (e.g. 220 or "220.00"). Must equal the total or nothing is done. | |
| locale | No | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| message | No | A few personal lines at the top, up to 2000 characters. | |
| reminder | No | A reminder for a sent invoice with a balance. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing rate limits (20 emails/hour per person, one per document per 10 minutes), plan allowance caps, the unconfirmed-address failure code, and free-plan restrictions on links. The destructive, non-read-only nature implied by annotations is reinforced with concrete consequences.
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?
Dense but front-loaded with the core action and side effects, then constraints. Every sentence carries operational information (limits, confirm rule, plan restrictions) with little filler, though the block is long.
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 7-param mutation tool with no output schema, the description covers the action, side effects, rate limits, plan gating, confirmation flow, and failure mode. An agent has everything needed to call 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?
Schema coverage is already 86%, but the description adds real meaning: `to` must be a single plain address, `amount` must equal the total or nothing happens, and `confirm: true` is what distinguishes preview from execution. Adds value beyond the 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?
States a specific verb and resource (emails the document to the client on the user's behalf, replies go to the user) plus the concrete side effects (draft takes next number, becomes sent, link published). This distinguishes it from a plain send_invoice status change and clearly identifies the email action.
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 two-step workflow is spelled out: needs confirm: true and an amount equal to the total, otherwise you get a preview. It also explains when to use the document's own address versus `to`. It does not explicitly contrast with siblings like send_invoice or get_invoice_email_draft, so it falls short of a full routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_dataExport dataARead-onlyInspect
Exports everything the user can read in Decknote as one JSON document (boards, lists, cards, checklists, comments, attachment metadata), the same export as Settings → Your data. Up to 5 per hour.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the per-hour rate limit ('Up to 5 per hour') and the exact payload scope. It stops short of noting output size or handling for very large accounts.
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?
One sentence, front-loaded with the verb and scope, followed by the concrete contents list, the equivalence hint, and the rate limit. Nothing is padded or repeated.
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 carries the burden of describing the return payload, and it does so precisely (single JSON doc plus enumerated entity types). Rate limit and read-only nature round out what an agent needs before invoking 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?
The tool takes zero parameters, so the schema carries nothing to document and the baseline is 4. The description correctly implies no filtering is possible—it exports everything—which is the relevant semantic fact.
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 a specific verb+resource ('Exports everything the user can read in Decknote as one JSON document') and enumerates the included entities (boards, lists, cards, checklists, comments, attachment metadata). This is clearly distinct from the single-entity siblings like get_board or list_boards.
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?
Frames the use case by equating it with 'Settings → Your data', which tells the agent this is the full-account bulk export rather than a targeted query. No explicit when-not or named alternative, but among the siblings there is no competing export tool, so the context is adequately clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_invoices_csvExport invoices CSVARead-onlyInspect
Exports the matching invoices and estimates as CSV text for an accountant: number, type, status, dates, client, currency, subtotal, discount, tax, total, paid and balance. Same filters as the list. Cells that start with = + - or @ are escaped so a spreadsheet does not run them. A Pro feature; large exports are cut at 400,000 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the number or the client's name. | |
| to | No | Issued up to this day, YYYY-MM-DD. | |
| from | No | Issued from this day on, YYYY-MM-DD. | |
| kind | No | ||
| status | No | overdue: sent and past its due date. open: sent and not paid. | |
| boardId | No | Only the documents of this project (one the user owns). | |
| clientId | No | Only this client's documents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, the description discloses three non-obvious behavioral traits: spreadsheet-injection escaping for cells starting with = + - @, the Pro entitlement requirement, and a 400,000-character truncation limit on large exports. These are exactly the operational facts an agent could not infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core action and output columns, followed by filter parity, escaping, and the entitlement/size constraints. No sentence is redundant with structured 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?
There is no output schema, and the description compensates by naming the returned columns and the output medium (CSV text). Combined with the escaping and truncation notes, an agent has everything needed to call and interpret the result.
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 coverage is 86%, so the schema already documents nearly all seven filters including the enum meanings. The description contributes only 'Same filters as the list', which usefully signals parity with list_invoices but adds no per-parameter meaning. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Exports the matching invoices and estimates as CSV text') and even enumerates the exact column set, so an agent knows precisely what it produces. It does not, however, name or contrast itself against the nearest siblings such as export_data or list_invoices, leaving differentiation to inference.
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?
'for an accountant' and 'Same filters as the list' imply the context and that it is the tabular counterpart to list_invoices, but there is no explicit when-to-use or when-not statement, and no routing away from export_data or export_time_report. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_time_reportExport time reportARead-onlyInspect
Exports the detail lines of a date range as CSV text (date, project, client, task, person, hours, billable, rate per hour), with the same filters and visibility as the time report. Cells that start with = + - or @ are escaped so a spreadsheet does not run them. A Pro feature; large exports are cut at 400,000 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | What to group the rows by. Default project. | |
| to | No | Last day of the range, YYYY-MM-DD. Default: today in the user's time zone. At most 400 days from `from`. | |
| from | No | First day of the range, YYYY-MM-DD. Default: 29 days before `to`. | |
| userId | No | Only the time logged by this person. | |
| boardId | No | Only this project. | |
| billable | No | true: only billable time. false: only non-billable time. | |
| clientId | No | Only the projects of this client (one of the user's own). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses three non-obvious behaviors: CSV formula-injection escaping for cells starting with = + - or @, a Pro-plan requirement, and a hard truncation cap at 400,000 characters (a real data-loss risk). These are exactly the operational facts annotations cannot 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?
Three sentences, front-loaded with what the tool produces, followed by the security behavior and the gating/limit facts. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description enumerates the returned columns and format, plus the escaping and truncation behavior. Combined with complete parameter docs and read-only annotations, an agent has everything needed 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?
Schema description coverage is 100%, so every one of the 7 parameters is already documented, including enum values and defaults. The description adds no filter syntax or format detail beyond that, so the baseline of 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?
States a specific verb (exports), a specific resource (detail lines of a date range), and the exact output format and column set (CSV: date, project, client, task, person, hours, billable, rate per hour). This clearly separates it from siblings like export_data, export_invoices_csv, and get_time_report without opening any schema.
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 'with the same filters and visibility as the time report' implies a relationship to get_time_report, but never states when to export versus call that report, nor when to prefer export_data/export_invoices_csv. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch cardBRead-onlyInspect
Reads one card by id as a document: title, board and list, due date, labels, description, checklists and comments.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The card id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds that the result is a full document with the enumerated sections, but says nothing about behavior for a missing/invalid id (error vs empty) or any rate limits.
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 tight sentence with the action and resource front-loaded; the enumerated fields earn their place because no output schema exists to document the return shape.
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 carries the return-value burden and does so by listing the document sections; annotations cover safety. Only minor gaps remain, such as error behavior on an unknown id, which is low-stakes for a read 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 100% and there is only one parameter ('id'), which the schema already documents as 'The card id.' The description's 'by id' phrasing adds no syntax, format, or constraint detail beyond the schema, so 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?
States a specific verb ('Reads') and resource ('one card by id') and enumerates the returned document's fields, so the agent knows exactly what it gets back. However it does not distinguish itself from the sibling get_task, leaving it ambiguous which single-card read tool to pick.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as get_task or search_tasks for locating a card. The agent must infer usage purely from the name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet accountARead-onlyInspect
Reads the user's account and settings: name, email, language, time zone, notification preferences, plan with its limits and usage, upgrade prices, API tokens and connected apps (names and dates only; secrets are not included).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context beyond that: the exact data surface returned and the explicit security boundary that secrets are excluded ('names and dates only; secrets are not included'). It stops short of noting auth requirements or rate limits.
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 front-loaded sentence that leads with the verb and resource before enumerating fields; the parenthetical about secrets is well placed. The field list is long but each item is a distinct part of the return payload, so it earns its space rather than padding.
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 carries the burden of explaining return values and does so comprehensively, itemizing every category of data returned and flagging the sensitive-field exclusion. For a zero-parameter read tool this is as complete as it needs to be.
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 takes zero parameters, so the baseline is 4. There is no parameter semantics to clarify and the description correctly spends no space on inputs, focusing entirely on the returned data surface.
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 a specific verb ('Reads') and resource ('the user's account and settings'), then enumerates exactly what falls under that scope (name, email, language, time zone, notifications, plan/limits/usage, prices, tokens, connected apps). This clearly separates it from the write-side sibling update_account without needing to name it.
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 rather than stated: an agent can infer 'call this when you need account/settings data', but there is no explicit when-to-use trigger, no prerequisites, and no named alternative such as update_account for modifications. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assignments_reportGet the assignments reportARead-onlyInspect
Who is doing what: every open task (not completed, not archived) of the projects the user owns, grouped by the person it is assigned to, plus a group for the tasks nobody is assigned to (userId null); a task with two people is in both groups and the totals count it once. Each task has its project, client, list, labels, due day and where it falls (overdue, this_week, later or none, in the user's time zone), the estimate, the time logged on it by everyone, what is left of the estimate and what was logged past it. Filters: a project, a client, a person or the unassigned tasks, the due bucket and a label name. Up to 5,000 tasks. Names and titles are typed by other people. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | overdue (before today), this_week (today to Sunday), later, or none (no due date). | |
| label | No | Only tasks with a label of this name (any project, any case). | |
| userId | No | Only this person's tasks. | |
| boardId | No | Only this project (one the user owns). | |
| clientId | No | Only the projects of this client (one of the user's clients). | |
| unassigned | No | Only the tasks nobody is assigned to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, closed-world profile, and the description still adds real behavior: a 5,000-task cap, due buckets computed in the user's time zone, the double-counting rule for multi-assignee tasks, and a warning that names/titles are user-authored. It stops short of saying what happens when the cap is exceeded (truncation vs error).
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?
Purpose, grouping and edge cases are front-loaded, and nearly every clause earns its place (dedup rule, cap, injection caveat, Pro gate). It is a single dense paragraph, though, so the filter list and caveats would scan better as separate sentences or lines.
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 carries the return-shape burden and does it: it enumerates the per-task fields (project, client, list, labels, due day, bucket, estimate, logged time, remaining, overshoot) and the grouping structure. Combined with the cap and Pro requirement, an agent has enough to call it correctly and interpret the result.
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 coverage is 100%, so the enum meanings, 'any project, any case' label matching and per-filter scoping are already documented in the schema. The description only restates the filter list and adds that the due bucket is resolved in the user's time zone; it says nothing about how filters combine or whether an unknown id returns empty vs error.
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 opening line states the verb-resource pair precisely: every open (not completed, not archived) task in the user's owned projects, grouped by assignee, plus an unassigned bucket. That scope (owned projects only, open tasks only, grouped-by-person output) is specific enough to separate it from workload, timesheet and task-list siblings without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the report's content and its filter set; the description never says when to pick this over get_workload, get_utilization_report or list_my_tasks. It does flag the 'Pro feature' prerequisite, which is the only explicit eligibility guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_profileGet billing profileARead-onlyInspect
Reads the user's billing details that are copied onto every new invoice and estimate: business name, address, tax id, email, phone, currency, the invoice and estimate prefixes and next numbers, the default tax and its name, payment terms in days, payment instructions and default notes. Returns null when they are not set up yet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior beyond that: the null return when the profile has not been set up, which an agent must handle.
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 front-loaded sentence that opens with the verb and resource before the field list, plus a short null-handling clause. The long comma-separated enumeration is dense but each item is informative 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?
With no output schema and no parameters, the description carries the full burden of describing what comes back, and it does so comprehensively, including the null case. Nothing an agent needs to invoke and interpret this tool is missing.
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 takes zero parameters, so the baseline is 4 and there is nothing further for the description to disambiguate. The field enumeration describes outputs rather than inputs and is not misapplied as 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?
States a specific verb ('Reads') plus resource ('the user's billing details') and then enumerates the exact fields returned (business name, address, tax id, prefixes, payment terms, etc.). This scope is distinguishable from siblings like get_billing_report or update_billing_profile without opening any schema.
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 the read-only nature and the field list, but the description never says when to call this versus get_billing_report, nor that update_billing_profile is the write counterpart. No explicit exclusions or conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_reportGet billing reportARead-onlyInspect
A studio's numbers for a date range (default: the last 12 months): invoiced and collected by month, by client and what each client owes, expenses by project and category, and the profitability of each project (revenue, expenses, profit and revenue per hour). Per currency, not mixed across currencies; amounts in cents. The range is at most 1100 days.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day. Default today in the user's time zone, YYYY-MM-DD. | |
| from | No | First day. Default 364 days before `to`, YYYY-MM-DD. | |
| boardId | No | Only this project (one the user owns). | |
| clientId | No | Only this client. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint true, destructiveHint false, openWorldHint false), so the bar is lower. The description still adds real behavioral context: results are separated per currency and never mixed, all amounts are in cents, and the date range is capped at 1100 days. Those are non-obvious conventions an agent must know to interpret or request the report correctly.
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 report contents are front-loaded in one dense clause, followed by the interpretation constraints (currency, cents, range cap). Almost every phrase carries information and there is no filler, though the opening sentence is long and could be broken for scanability.
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 carries the burden of describing the return value, and it does so thoroughly — the report's sections, grouping dimensions, and profitability metrics are all enumerated. Combined with the currency, units and range-cap notes, an agent has enough to call it and interpret the result without further discovery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by supplying conventions that affect how from/to are used (1100-day maximum) and how returned values must be read (per-currency partitioning, cents). It adds no additional semantics for boardId/clientId, but the added conventions are materially useful.
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 a specific resource ("a studio's numbers for a date range") and enumerates the exact report contents — invoiced/collected by month, per-client owed amounts, expenses by project and category, project profitability. An agent knows precisely what comes back. It does not, however, differentiate itself from near-neighbour reporting siblings such as get_receivables_aging, get_time_report, or overview.
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 default window (last 12 months) and the 1100-day cap imply when the tool is appropriate, and the scope statement narrows its use to billing/financial rollups. But there is no explicit when-to-use versus alternatives, and no guidance on choosing between this and the other report/export tools that appear in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boardGet boardARead-onlyInspect
Reads one board in full, like opening it in the app: lists with their cards (dates, labels, assignees, checklist progress, custom field values), labels, members and the user's role, custom fields, rules, card templates, the user's saved views, recently archived cards, the public link and pending invitations (owner only) and the plan limits that apply, with every id.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ||
| cardsPerList | No | Max cards per list, 1–500. Default 100. | |
| includeCards | No | Default true. False returns only the structure. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so safety needs no restating. The description goes further by disclosing an authorization conditional ('the public link and pending invitations (owner only)') and by itemizing the returned data surface, which helps an agent gauge payload size and content. It stops short of stating truncation or pagination 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?
It is one long sentence, but a well-constructed one: the purpose is front-loaded and the enumerated contents are dense with signal rather than filler. A bulleted or clause-separated structure would read better, but nothing is 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?
With no output schema, the description carries the burden of describing returns and does so thoroughly, including the owner-only caveat. The main gap is that a full-board read can be large and no guidance is given on truncation, pagination, or when to prefer a narrower 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 coverage is 67%: cardsPerList and includeCards are already documented in the schema, while boardId has no description at all. The description adds no parameter-level detail (no mention of pagination limits, the 1–500 range, or how includeCards=false changes the payload) beyond what the schema states.
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 ('Reads one board in full') and then enumerates exactly what the read encompasses — lists, cards, labels, members, custom fields, rules, templates, saved views, archived cards, public link, invitations. This distinguishes it clearly from list_boards (collection-level) and get_task (single card).
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?
'Like opening it in the app' implies the intended use — retrieving a complete board view rather than a summary — but there is no explicit when-to-use guidance and no named alternative (e.g., overview or list_boards) for lighter-weight needs. Sibling routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_live_urlGet board live updates addressARead-onlyInspect
Returns a short-lived address (2 minutes to connect) of a board's live event stream: a Server-Sent Events URL that announces every change to the board and who is viewing it. Used by the board view to update itself.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a safe read, but the description adds crucial behavioral detail beyond structured fields: the address is short-lived (2 minutes to connect), uses SSE, and announces every change and viewer. This directly informs how and when the agent should call it.
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, front-loaded with the return value, then lifetime and format, then the use case. Every clause earns its place with no repetition 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 read-only tool with no output schema, the description covers what is returned, its lifetime, and its purpose. It omits any mention of the boardId parameter or error conditions, but the overall picture 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 coverage is 0% and the description never mentions boardId, so no extra meaning is added. However, with only one required parameter whose name is self-explanatory, the gap is minor; the description neither compensates nor misleads.
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 ('Returns') with a precise resource ('a board's live event stream'), and further names the payload type ('Server-Sent Events URL') and its role. An agent can distinguish this from get_board or show_board without inspecting schemas.
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 use: 'Used by the board view to update itself.' This tells the agent the intended scenario (live UI updates). No explicit exclusions or alternative tools are named, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_client_portalGet client portalARead-onlyInspect
Reads a project's client portal settings: whether it exists and is on, its link (anyone who has the link can read the page), what it shows (tasks, hours, documents), whether clients can comment, the welcome text and studio name, how many tasks are marked visible, how many client comments are unread, and the latest eight comments with their author, email and text. The comments are written by the client, who needs no account. Only the project owner; the portal is a Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context beyond them: the link is publicly readable by anyone holding it, comments come from an account-less client, and access is owner-only and Pro-gated.
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?
Front-loaded with the verb and resource, then a compact enumeration of returned fields, with the access constraints in a final sentence. The long return-field list is somewhat sprawling but is justified because there is no output schema to carry it.
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 carries the return-value burden and does so thoroughly, and it adds the owner/Pro gating an agent needs before invoking. Nothing material is missing for a single-parameter read 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 coverage is 100% for the single boardId parameter, so the baseline is 3. The description only ties boardId implicitly to 'a project' and adds no format or syntax detail beyond the schema's own 'The 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?
States a specific verb ('Reads') and resource ('a project's client portal settings') and then enumerates exactly what is returned, making it immediately distinguishable from the update_client_portal sibling. An agent can tell what this does without opening the schema.
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 real preconditions: 'Only the project owner; the portal is a Pro feature' tells the agent who may call it and under what plan. It does not explicitly route between read vs write portal tools (update_client_portal, regenerate_client_portal_link, get_task_portal), so it stops 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.
get_invoiceGet invoiceARead-onlyInspect
Reads one invoice or estimate in full: status, dates, the sender and the client copied onto it, every line, tax, discount, totals, payments, balance, the public link (null if none), when it was sent, viewed and paid, the estimate it came from or became, the work attached, and which changes are open in its status. The name typed by whoever answered an estimate from the link is text written by the client.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is already covered. The description still adds real context beyond that: it enumerates the returned surface, notes the public link can be null, and warns that the name typed by a client answering from the link is client-authored text — a meaningful trust caveat for an agent.
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 verb and resource are front-loaded in the first clause, and the long field enumeration is justified because no output schema exists to convey return shape. The sentence is run-on and the field list could be grouped, but no sentence is 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?
With no output schema, the description carries the return-value burden and does so thoroughly, including the estimate/invoice cross-reference and the client-authored name note. It omits error behavior for an invalid ID and does not point to list_invoices, which a read-only fetch of this complexity would ideally include.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's schema text ('The invoice or estimate.') already defines its meaning. The description merely restates that the target is an invoice or estimate, adding no format, ID-source, or ambiguity guidance. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource ('Reads one invoice or estimate in full'), which immediately separates it from mutating siblings like update_invoice and from the collection tool list_invoices. An agent can select it without opening the schema.
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?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as list_invoices to discover an ID. The description never explains how an agent should obtain a valid invoiceId or what distinguishes this fetch from get_invoice_email_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_email_draftGet invoice email draftARead-onlyInspect
Shows the email that would go to the client for a draft or sent document: the address, the subject and the text, with the personal message and the language if given; a reminder reads differently for a sent invoice with a balance. Sends nothing and changes nothing; says whether this server can send email at all.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Another address than the one on the document. | |
| locale | No | Language of the email. Default: the user's. | |
| message | No | A few personal lines at the top, up to 2000 characters. | |
| reminder | No | A reminder for a sent invoice with a balance. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces rather than contradicts them. It goes beyond the annotations by disclosing that the response includes whether this server can send email at all, and that reminder rendering is conditional on sent status plus an outstanding balance.
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 preview nature and the returned fields are front-loaded, and the no-side-effects claim closes the description. The middle semicolon chain ('with the personal message and the language if given; a reminder reads differently...') is dense but each clause carries distinct 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?
With no output schema, the description carries the burden of describing the return value and does so: address, subject, text, and a server email-capability flag. For a 5-parameter read-only preview it gives the agent everything needed to call it and interpret the result.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning: it links 'the personal message' to message, 'the language if given' to locale, and explains the conditional semantics of reminder. That is useful cross-parameter context the schema's one-line descriptions do not supply.
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 a specific verb ('Shows') and resource (the client email for a draft or sent document) and enumerates what it returns: address, subject, text. The clause 'Sends nothing and changes nothing' separates it from the send_invoice/email_invoice siblings without the agent needing to open a schema.
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 rather than stated: the agent can infer this is the preview to run before sending, and the note that 'a reminder reads differently for a sent invoice with a balance' hints at the sent-vs-draft condition. However there is no explicit 'use this before send_invoice' or 'do not use to actually send' instruction naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoice_pdfGet invoice PDFARead-onlyInspect
Returns one invoice or estimate as a PDF file, base64-encoded (contentBase64), with its file name and size: the A4 sheet its client gets by mail and from the link, in English or Spanish (default: the account's language). A draft or a voided document is printed saying what it is. The PDF holds what is printed on the document: the sender and the client, the lines, totals, payments received and balance, payment instructions and notes.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | The PDF's language. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/destructiveHint annotations by disclosing the return envelope (base64 content, file name, size), the language default (account language when omitted), and the non-obvious behavior that drafts and voided documents render with a marking rather than failing. With no output schema present, these details carry real weight for an agent that must handle the payload.
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?
Front-loaded with the return type and encoding, then the caveats. Slightly redundant: the 'A4 sheet its client gets by mail and from the link' clause and the following 'The PDF holds what is printed on the document...' sentence both describe page contents and could be merged without losing 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?
With no output schema, the description must explain the return value, and it does: contentBase64, file name, size, language, plus draft/void handling. For a two-parameter read tool whose annotations already declare safety, nothing an agent needs in order to call and interpret it is missing.
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 coverage is 100% and the enum is documented, so the baseline is 3; the description earns an extra point by adding the default rule for language (account's language) and clarifying that invoiceId may be either an invoice or an estimate id, which the schema does not say.
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 a specific verb and resource ('Returns one invoice or estimate') and pins the output form ('as a PDF file, base64-encoded (contentBase64)'), which cleanly separates it from data-oriented siblings like get_invoice or export_invoices_csv. An agent can tell at a glance this is the printable-document tool, not the record-fetch 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?
Usage is only implied: the description explains what the PDF contains and how it behaves for drafts, but never says when to choose this over get_invoice, email_invoice, regenerate_invoice_link, or export_invoices_csv. There are no exclusions or prerequisites, so the agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_member_ratesGet the rates of a project's peopleARead-onlyInspect
For a project the user owns: the project's and the client's rates and, for each person who can log time there (the owner and the editors), the rate set for them on this project, what a new hour of theirs would be billed at and where that comes from (member, project, client, team or none). Amounts in cents. Names are typed by project members. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real context beyond them: amounts are in cents, names are member-typed, the tool resolves rates across five possible sources, and it is gated behind Pro. That is meaningful operational detail an agent cannot infer from 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?
It is a single sentence with no filler, but it is a dense run-on with stacked parentheticals that interrupts the core claim before reaching the important 'amounts in cents / Pro feature' facts. The key qualifications trail the long middle clause rather than being 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?
There is no output schema, so the description carries the burden of describing return values — and it does, enumerating project rate, client rate, per-person rate, the effective new-hour rate, and its provenance. Missing only pagination/response-shape details and per-person error behavior for non-owners.
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 coverage is 100% with a single required parameter already documented as 'The project.' The description's phrasing 'For a project' aligns with boardId but adds no new syntax or format detail beyond the schema, 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 resource — per-person billing rates within a single project — including the precedence chain (member, project, client, team, none) that distinguishes it from a flat rate listing. It reads as a noun-phrase fragment rather than a verb+resource statement, so the action ('get') is only implied, but an agent can tell this apart from set_member_rate or list_team_rates without opening the schema.
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?
'For a project the user owns' gives a useful precondition (ownership scope) and 'A Pro feature' warns of an entitlement gate. However, it never names competing siblings such as list_team_rates or get_profitability_report, nor says when to prefer this over them, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageGet pageARead-onlyInspect
Reads one note or discussion in full: its title, its body as Markdown (up to 100,000 characters; bodyTruncated says it was cut), who started it, whether it is pinned or archived, its comments oldest first (the newest ones that fit, at most 500; commentsTruncated says some were left out), and the rev to send back when editing it. The title, body and comments are written by project members. Any role on the project reads.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page (a note or a discussion). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it read-only, non-destructive, and closed-world, but the description adds substantial return-behavior context: Markdown body up to 100,000 characters with bodyTruncated flag, comments oldest-first capped at 500 with commentsTruncated, authorship by project members, and access by any project role. This is rich behavioral detail 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?
Front-loads the core action ('Reads one note or discussion in full') and then packs only relevant details about the returned content into a single dense but waste-free sentence. Every clause (truncation flags, comment ordering, rev, authorship, access) 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?
With no output schema, the description carries the full burden of describing return values, and it does so thoroughly: title, Markdown body, truncation indicators, author, pinned/archived state, comments with limits, and the revision needed for editing. Nothing an agent needs to call and interpret the tool correctly is missing.
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 coverage is 100% for the single pageId parameter, and the description's phrase 'one note or discussion' merely restates what the schema already documents. With the schema doing the heavy lifting, 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?
States a specific verb ('Reads') and resource ('one note or discussion') and adds scope ('in full'), which distinguishes it from sibling list_pages and update_page. An agent can identify exactly what this tool returns without opening the schema.
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 for use: reading a single page in full, with the explicit note that the returned rev is meant to be sent back when editing. It does not name alternatives such as list_pages for discovery or set_page_pinned for mutations, so it falls short of 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.
get_profitability_reportGet the profitability reportARead-onlyInspect
What the hours were worth, what they cost and what is left, for a range of at most 400 days, by project (default), client, person or task (each task with its project; the hours of a project logged without a task are one row whose key is none: followed by the project id). value = billable minutes at the rate frozen on each entry; cost = all minutes at the cost frozen on each entry (hours logged before a cost was set are counted in minutesWithoutCost and have none); margin = value + billable expenses recovered with their markup - cost - expenses. Money is per currency and is not added across them; a project in a currency other than costCurrency (the user's billing currency) has marginCents null. Amounts in cents. Only the user's own projects. Names are typed by other people. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Default project. | |
| to | Yes | Last day as YYYY-MM-DD. | |
| from | Yes | First day as YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/non-destructive, and the description still adds substantial behavior: the value/cost/margin formulas, rate freezing per entry, expenses with markup, per-currency separation with marginCents null when currency != costCurrency, minutesWithoutCost handling, and a Pro gating requirement. Missing only return-shape/pagination detail, which is acceptable for a computed read.
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?
Every clause carries information — no filler — and the core question is front-loaded. The dense parenthetical/semicolon chain makes it a wall of text, so structure is adequate rather than clean.
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 3-parameter computed report with no output schema, the description covers the metric definitions, currency pitfall, edge cases, and access limits, which is most of what an agent needs. It leaves the actual response field set only partially named (marginCents, minutesWithoutCost) rather than fully documented.
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 coverage is 100%, so baseline is 3, but the description adds real semantics beyond the schema: what each 'by' value yields as a row, that task rows carry their project, the 'none:<project id>' key for task-less hours, and the 400-day cap on from/to. It stops short of restating date format or error behavior for out-of-range ranges.
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?
Opens with a concrete framing of the resource: 'What the hours were worth, what they cost and what is left' i.e. a profitability report, plus the grouping dimensions. It is clearly distinct from list-style siblings, though it never names get_billing_report or get_utilization_report to differentiate explicitly.
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 context is implied (compute margin/value/cost over a date range) and constraints are given (max 400 days, Pro feature, own projects only, by=project default). But there is no explicit statement of when to pick this over the sibling billing or utilization reports, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_settingsGet project settingsARead-onlyInspect
Reads a board's project settings: client, status (active, on hold, completed, cancelled), budget (none, hours or money), default hourly rate in cents, whether time is billable by default, and start and due dates. A board without settings is not a project yet. Only the project owner reads the rate and the money budget.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the permission nuance ('Only the project owner reads the rate and the money budget') and the domain constraint that a settings-less board is not yet a project.
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 tightly packed sentences: the returned fields are front-loaded, followed by the domain constraint and the permission caveat. No redundant restatement of the name or title, and every sentence carries information an agent can act on.
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, single-parameter tool with no output schema, the description covers the essential ground by enumerating the returned fields and disclosing the owner-only visibility rule. The only meaningful gap is the absence of any description of boardId semantics.
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 the one parameter, and it does not: boardId is never mentioned, described, or given format expectations. The phrase 'a board's project settings' faintly implies boardId identifies the board, but that is minimal and the coverage gap goes unfilled.
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 names a specific verb ('Reads') and resource ('a board's project settings') and then enumerates the exact fields returned (client, status, budget, hourly rate, billable flag, dates), which is highly specific. However, it never differentiates itself from closely named siblings like get_project_summary or get_board, leaving some ambiguity about which read tool to pick.
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 rather than stated: the note 'A board without settings is not a project yet' hints at a precondition for meaningful results, and the owner-only clause implies a permission gate. But there is no explicit when-to-use guidance and no mention of alternatives such as get_project_summary or get_board.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_summaryGet project summaryARead-onlyInspect
Summarizes a project: time tracked, billable time, the billable amount in cents, how much of the budget is used (ok, warning from 80%, over) and the hours of each person. The project owner reads all of it; any other member reads the project's totals and their own hours, without money.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/non-destructive/closed-world safety, but the description adds substantive behavioral context: output is redacted by role, with money fields hidden from non-owners. That access-dependent disclosure goes beyond structured data. It stops short of pagination, caching, 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?
Two tight sentences, front-loaded with the summarized fields and ending on the permission distinction. The budget thresholds (ok, warning from 80%, over) are embedded without padding, and no sentence is 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?
With no output schema, the description must carry the return-value burden, and it does so well by enumerating the metrics and the role-based view differences. The remaining gap is that it never ties the boardId input to the project concept.
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 coverage is 0% and the single parameter boardId has no description. The description says 'project' but never clarifies that boardId identifies the project being summarized, so it fails to compensate for the schema gap on the only input the agent must supply.
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 a specific verb ('Summarizes') and resource ('a project') and enumerates the exact content returned: tracked time, billable time, billable amount, budget usage, per-person hours. An agent can distinguish it from generic project readers like get_board or get_project_settings.
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 the role-dependent context (owner sees everything, other members see totals plus own hours) but never states when to choose this over siblings such as get_billing_report, get_workload, or get_time_report. Usage is implied rather than routed, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receivables_agingGet receivables agingARead-onlyInspect
Shows what clients still owe on sent invoices, by how late it is: not yet due, 1-30 days, 31-60 and 61 or more days past due, per currency and per client (the biggest debt first), in cents.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | No | Only this project (one the user owns). | |
| clientId | No | Only this client. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, non-open-world), and the description adds real behavioral detail: only sent invoices are counted, the bucket boundaries, the per-currency/per-client grouping, descending sort by debt, and cent units. It stops short of stating default scope (all boards/clients) or any pagination/limit 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?
A single dense sentence, front-loaded with the resource and followed immediately by the bucket definitions, grouping, ordering, and units. 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?
With no output schema, the description usefully explains the return shape (buckets, per-currency, per-client, sorted, cents) and the schema covers filters. Minor gaps remain: default scope when no filter is passed and whether results are row-per-client or aggregated totals.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so boardId and clientId are already documented as filters, giving the baseline of 3. The description adds nothing about the parameters themselves (e.g., scope defaults when neither is supplied), so it neither compensates nor detracts.
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 a specific verb and resource (aging of what clients owe on sent invoices) and enumerates the exact buckets (not yet due, 1-30, 31-60, 61+), which clearly separates it from siblings like get_billing_report or list_invoices. An agent can identify the output shape without opening anything else.
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 report's purpose and audience (outstanding receivables), so usage is inferable, but it never states when to pick this over get_billing_report, list_invoices, or list_unbilled_work, and names no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_running_timerGet running timerARead-onlyInspect
Returns the user's running timer, if any: the project, the task, the note, when it started and how long it has run.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered externally. The description adds real behavioral value beyond that: the 'if any' phrasing discloses the empty/null case, and the field list tells the agent the shape of a successful read despite there being no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core purpose and then enumerates the payload. Zero filler, no restatement of the title, and every clause carries 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?
With no output schema and no parameters, the description has to carry the return-value burden, and it does so by listing the returned fields and the null case. What is missing is an explicit note that the result is scoped to the authenticated user's single active timer and how it relates to the reporting/time-entry tools, but for a zero-argument read this is largely sufficient.
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 takes zero parameters, so per the baseline there is nothing for the description to disambiguate and 4 is appropriate. The schema is empty and 100% covered; no argument syntax or defaults are missing.
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 a specific verb and resource ('Returns the user's running timer') and enumerates exactly what is surfaced: project, task, note, start time, elapsed duration. This distinguishes it in practice from the time-history siblings (get_week_timesheet, get_task_time, list_time_entries), though it never names those siblings explicitly.
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 only implied: an agent can infer this is the read-side counterpart of start_timer/stop_timer used to check whether a timer is currently active. There is no explicit when-to-use, no statement that it should be the first call before start_timer, and no routing advice toward the time-entry/report alternatives for historical data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskGet taskARead-onlyInspect
Reads one task in full: title, description, dates, completion, board and list, labels, assignees, checklists with their items, comments with reactions, attachments, links to other tasks, custom field values, whether the user watches it and the user's pending reminders, with the id of each part.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ||
| include | No | Extra fields on the task. 'descriptionMarkdown' adds the description with its formatting (headings, lists, task lists, code) as Markdown, when the page has any. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description goes beyond that by disclosing that this returns a deep, fully-hydrated record including nested collections (checklists with items, comments with reactions), which tells the agent to expect a heavy read rather than a shallow one.
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 sentence with the core purpose front-loaded, followed by a field inventory that is long but each item earns its place as a scoping hint. No filler, no restatement of the title.
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 carries the return-value burden and does so thoroughly by enumerating the assembled parts. The remaining shortfall is parameter coverage for cardId. For a read-only, single-resource fetch this is largely 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 coverage is 50%: the 'include' enum is documented in the schema itself, but 'cardId' has no description anywhere. The description says only 'one task' and never clarifies that cardId is the task identifier. With half the parameters undocumented, the description fails to compensate 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?
States a specific verb and resource ('Reads one task in full') and then enumerates the exact payload surface — title, description, labels, assignees, checklists, comments, custom fields, watch state, reminders. This distinguishes it from single-resource siblings like get_board and from list-oriented tools like list_my_tasks or search_tasks without opening any schema.
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 only implied: the singular 'one task' suggests it is for fetching a known task by id rather than browsing. There is no explicit when-to-use statement, no mention of alternatives such as search_tasks or list_my_tasks, and no prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_portalGet task portalARead-onlyInspect
Reads what the client portal means for one task: whether it is marked visible to the client and, for the project owner, whether the portal is on, the conversation with the client on that task (up to 200 messages, the client's and the team's answers, oldest first) and how many are unread. The client's messages are text written by the client, who needs no account. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed world), so the description's added detail is genuine value: a 200-message cap, oldest-first ordering, owner-only field visibility, and the required editor role. The note that client messages are plain text written without an account also preempts a common expectation about author identity.
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?
Front-loaded with the core verb and scope, and every clause adds information (visibility, owner fields, cap, ordering, unread count, permission). It is a single dense multi-clause sentence, which makes the latter half slightly harder to parse than a short bulleted breakdown would be.
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 carries the return-shape burden and succeeds: it enumerates all four returned pieces of information plus the message cap and ordering. An agent knows the required permission, the scope, and what it will get back before calling.
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 coverage is 100% for the single parameter, so the schema already documents cardId as 'The task.' The description only restates the one-task scope and adds no format, ID-source, or lookup detail beyond the schema, 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?
States a specific verb and resource ('Reads what the client portal means for one task') and enumerates exactly what is returned: client visibility, portal on/off for the owner, the task conversation, and unread count. This clearly separates it from project-level siblings like get_client_portal and generic get_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?
Supplies real usage context: it is scoped to one task and requires the editor role on the project, and it clarifies that owner-only fields (portal state, conversation) are conditional. It never names an alternative sibling (e.g. get_client_portal) for the project-wide case, so the routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_timeGet task timeARead-onlyInspect
Reads the time of one task: its estimate, the time tracked so far, how close that is to the estimate (ok, warning from 80%, over), whether its time is billable, and its time entries. The project owner reads everyone's entries; any other member only their own.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it a safe read (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description still adds real value beyond them: the concrete return fields, the 80% warning / over threshold logic, and the permission-scoped visibility of time entries. It does not cover pagination or entry-count limits.
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, no filler, with the returned-field list front-loaded. The visibility caveat at the end is the least prominent placement for a constraint an agent must respect, but nothing is 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?
For a read-only tool with no output schema, the description covers the shape of the response, the pace threshold semantics, and the access-scoping rule. Only the unexplained cardId parameter and absent pagination/limit details keep it from being 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% for the single required parameter cardId, and the description never explains it or states that the tool operates on a task id. With only one parameter the gap is small, but the description does not compensate for the missing schema documentation as it should at 0% 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?
States a specific verb ('Reads') and resource ('the time of one task') and then enumerates exactly what is returned: estimate, tracked time, pace status, billable flag, and time entries. This clearly separates it from get_task (task fields) and get_time_report (aggregate reporting), though it never names a sibling explicitly.
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 when-to-use guidance against get_task, list_time_entries, or get_time_report. The only usage context is a visibility rule ('project owner reads everyone's entries; any other member only their own'), which informs behavior but not tool selection. Usage is only implied by the single-task scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timer_alertGet timer alertARead-onlyInspect
Reads the user's alert for a timer left running: how many hours a timer may run before Decknote sends a notification (and a push to their devices), once per timer; 0 means off. The default is 8 hours. It does not stop the timer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, non-destructive, closed-world operation. The description adds useful behavioral context beyond the annotations: the default is 8 hours, 0 disables alerts, notifications are sent once per timer, and the call does not stop the timer.
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, defining the resource first and then adding only the details that matter: units, notification behavior, 0/off, default, and the non-stopping guarantee. No sentence is redundant.
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 zero-parameter getter with annotations covering safety and no output schema, the description supplies everything an agent needs: what the value represents, units, the 0 default/off convention, the 8-hour default, and what the operation does not do.
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, so the baseline is 4. The description correctly does not invent parameter details; its explanation of the returned setting's semantics compensates for what a bare getter description might otherwise lack.
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 ("Reads") and a clearly defined resource: the user's timer-alert setting. It explains exactly what the setting means, including units, notification behavior, and default value, making it easy to distinguish from siblings like set_timer_alert or get_running_timer.
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: call this to inspect the current timer-alert threshold. The negative clause "It does not stop the timer" helps distinguish it from stop_timer, but the description never explicitly says when to use set_timer_alert instead or names any alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_reportGet time reportARead-onlyInspect
Adds up the time logged in a date range, grouped by project, client, person, task or day: minutes, billable minutes and the billable amount in cents (hours times the rate each entry was logged with; clients in different currencies add up as plain numbers). The user's own projects count everyone's time and money; projects the user only belongs to count the user's own hours, with no amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | What to group the rows by. Default project. | |
| to | No | Last day of the range, YYYY-MM-DD. Default: today in the user's time zone. At most 400 days from `from`. | |
| from | No | First day of the range, YYYY-MM-DD. Default: 29 days before `to`. | |
| userId | No | Only the time logged by this person. | |
| boardId | No | Only this project. | |
| billable | No | true: only billable time. false: only non-billable time. | |
| clientId | No | Only the projects of this client (one of the user's own). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only safety (readOnly, non-destructive). The description adds genuinely non-obvious behavior: the billable amount is computed as hours times the rate each entry was logged with, mixed currencies are summed as plain numbers, own projects roll up everyone's time and money while shared projects expose only the user's own hours and no amounts. These are exactly the semantics an agent needs to interpret results correctly.
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?
Front-loaded with what gets computed, then the grouping dimensions, then output units, then the caveats. Two dense sentences with virtually no filler, though the long parenthetical about rates and currency does slow the read 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?
With no output schema, the description carries the return-shape burden and does so well by naming the three output fields and the currency edge case. Remaining gaps are minor: no mention of row limits, pagination, or empty-date-range behavior for a seven-parameter report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters and their defaults. The description restates the `by` enum values ('project, client, person, task or day') without adding format or constraint detail beyond the schema, 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?
States a precise verb (adds up) and resource (time logged in a date range) plus the exact aggregation dimensions and output fields (minutes, billable minutes, billable amount in cents). An agent can distinguish this aggregated report from list_time_entries or get_week_timesheet without opening a schema.
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 rather than stated: the aggregation output makes clear this is an analytics/reporting call, and the note about which projects count whose time is useful scoping context. But it never names alternatives such as export_time_report, get_week_timesheet or get_billing_report, nor the conditions that would select one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_rulesGet time rulesARead-onlyInspect
Reads the rules that close logged hours. Without boardId: the rules the user has set for the projects they own: lockedUntil (the last closed day: nobody, the owner included, can add, edit, move or delete hours dated on or before it, and a timer cannot start while it reaches today) and editWindowDays (how many days back people other than the owner can fix their own hours; 0 = only today; null = no limit), with today in the user's time zone and whether the plan lets them set rules. With boardId: the rules that govern that project, from where the user stands (any member can read them): whether the user owns it, the earliest day the window lets them change, and whether a timer can start there today. Closed days refuse writes with the code closed.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | No | A project the user belongs to. Omit it for the user's own rules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/destructive annotations: it explains that closed days refuse writes with the code `closed`, that no one including the owner can add/edit/move/delete hours on or before lockedUntil, that a timer cannot start when the lock reaches today, and that any project member can read the rules. That downstream-effect and permission context is exactly what annotations cannot 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 scope statement is correctly front-loaded, but the body is one very long sentence with heavily nested parentheticals ('...the last closed day: nobody, the owner included, can add, edit, move or delete hours dated on or before it, and a timer cannot start while it reaches today'), which makes it dense to parse. The content earns its place but the packaging does not.
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 must carry the return contract, and it does: per-mode it enumerates lockedUntil, editWindowDays with sentinel semantics (0 = only today, null = no limit), today in the user's time zone, plan entitlement, and for boardId ownership, earliest editable day, and timer-start eligibility. Nothing an agent needs to interpret the result is missing.
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 coverage is 100% and already documents boardId as a project the user belongs to with 'omit for own rules,' so the description cannot add much on the parameter itself. Its value lies in describing what each mode returns rather than the parameter's syntax, so it sits at the baseline.
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?
Opens with a specific verb and resource ('Reads the rules that close logged hours') and immediately splits the tool into two distinct modes keyed on boardId, so an agent can tell exactly which behavior it will get. The named fields (lockedUntil, editWindowDays) further pin down what 'rules' means here versus other read tools like get_project_settings.
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?
Gives explicit conditional guidance: 'Without boardId: ... With boardId: ...' and 'Omit it for the user's own rules,' which is enough for an agent to pick the right mode. It does not name the mutation counterpart (set_time_rules) or state when to prefer other tools, so the routing 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.
get_utilization_reportGet the utilization reportARead-onlyInspect
For each person on the user's team: what they could work in a range of at most 400 days (their weekly capacity over Monday to Friday, less the user's holidays and their own time off), their hours on the user's projects, their billable hours, and billable over capacity in percent (utilizationPct, null with no capacity). Only the hours on the user's own projects are counted. Names are typed by other people. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day as YYYY-MM-DD. | |
| from | Yes | First day as YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real behavior: capacity is Mon-Fri weekly capacity minus the user's holidays and the person's own time off, only hours on the user's own projects are counted, utilizationPct is null when capacity is zero, and a Pro plan is required. It stops short of noting ordering, inclusion of people with zero hours, or response shape.
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 front-loaded sentence that lists the returned metrics before the caveats, with no filler. It is dense and parenthesis-heavy, and the clause 'Names are typed by other people' is cryptic without explanation, which keeps it from a 5.
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 must carry the return values, and it does: the per-person fields, the meaning of utilizationPct, and its null case. Gaps remain around which people are included, ordering, and how partial weeks or days without capacity are handled.
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 coverage is 100%, so the from/to format is already documented; the description adds the non-obvious constraint that the range may be at most 400 days and that holiday/time-off exclusions affect the computed capacity for that window. That is genuine meaning beyond the schema, though it does not discuss inclusive/exclusive boundaries or timezone handling.
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 enumerates exactly what the report contains per team member: capacity for a range, hours on the user's projects, billable hours, and utilizationPct. That is far more specific than the title, and it implicitly separates this from hour-listing siblings like get_time_report, though it never names an alternative report tool (get_workload, get_billing_report) to contrast with.
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 rather than stated: the 400-day range cap tells the agent to keep windows bounded, and 'A Pro feature' signals an entitlement prerequisite. There is no explicit when-to-use versus get_workload or get_time_report, and no statement of what happens outside the range limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_week_timesheetGet week timesheetARead-onlyInspect
Returns the user's own timesheet for one week, Monday to Sunday: a row per project and task with the minutes of each day, the totals per day and the week's total.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | Any day of the week wanted, YYYY-MM-DD. Default: today in the user's time zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already confirm read-only, non-destructive, and closed-world behavior, so the description doesn't need to restate safety. It adds useful behavioral context by specifying the returned shape: one row per project/task with daily minutes and daily/weekly totals, which is not in annotations or an output schema. It does not cover pagination or empty-state behavior, but for a simple read that is minor.
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-formed sentence that front-loads the main purpose and then enumerates the return structure. 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?
For a simple read-only tool with annotations and full parameter documentation, the description covers what is needed: scope, grouping, and totals. With no output schema, explaining the return rows and totals fills the main 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 100%, and the single parameter ('day') is fully documented there with format and default. The description adds no additional meaning about the parameter, 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?
Specific verb ('Returns') and resource ('user's own timesheet'), with explicit scope ('one week, Monday to Sunday') and return structure. The phrasing 'user's own' and 'week' differentiates it from siblings such as get_time_report or list_time_entries without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, alternatives, or exclusions are given. Usage is implied by the scope ('one week, Monday to Sunday'), but the agent must infer that this is for a personal weekly view rather than project/task time reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workloadGet workloadARead-onlyInspect
Plans the team's work: for each person, the time left on their open tasks with an estimate (the estimate minus the time tracked), placed in the week of each task's due date for the next six weeks, against that week's capacity (their weekly capacity less the user's holidays and their own time off: each week has capacityMinutes and offMinutes); overdue, later and undated work are listed apart. Says per week whether it is empty, ok, near (from 80%) or over capacity. The user sees the people on the projects they own and themselves. A Pro feature. Names and task titles are text typed by project members.
| Name | Required | Description | Default |
|---|---|---|---|
| personId | No | Only this person's row. | |
| includeTasks | No | Add the tasks behind each week's number. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive, and the description still adds real behavioral context: the calculation itself (estimate minus tracked time), how capacity is reduced by holidays and personal time off with the capacityMinutes/offMinutes fields, the 80% 'near' threshold, the separate overdue/later/undated buckets, and visibility scoping to owned projects plus the user. The note that names and task titles are user-typed text is a useful provenance flag.
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 dense paragraph that front-loads the core computation before layering on capacity math, status thresholds, scoping and the Pro caveat. Every clause carries information, though the middle section reads as a run-on and could be split for scanning.
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 must carry the return shape, and it does: per-person rows, per-week entries exposing capacityMinutes and offMinutes, a status value from empty/ok/near/over, and separate lists for overdue, later and undated work. Nothing an agent needs to interpret the result is missing.
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 coverage is 100%, so the baseline is 3, but the description reinforces the semantics: 'for each person' clarifies that personId narrows an otherwise all-people result set, and 'the tasks behind each week's number' gives includeTasks a concrete meaning beyond 'Add the tasks'. No syntax or format detail is added, so it stays short of a 5.
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 a specific computed resource with its exact scope: per-person, time-left-on-open-tasks bucketed into the week of each due date for the next six weeks, measured against weekly capacity. That forward-looking six-week capacity model is distinct enough from other reporting tools (time report, utilization) that an agent can tell what it will get without opening the schema.
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 context is implied by the opening phrase 'Plans the team's work' and constrained by 'A Pro feature', but there is no explicit when-to-use/when-not guidance and no named alternative among the many report siblings (get_utilization_report, get_assignments_report, get_week_timesheet). The agent must infer selection from the scope description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_time_csvImport time CSVADestructiveInspect
Imports a CSV of hours: creates the clients and projects it names (when createClients is on), a task for each task name, and one time entry per row, logged as the user unless the file names a project member's email. Rows already imported before are skipped, and the whole import can be taken back. The plan is made again from the file and the account at that moment. Same arguments as the preview; the CSV travels as text, up to 200,000 characters (bigger files go through the Import page of the app). Names from the file are text written by others. Needs confirm: true; without it the result is the preview.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | The CSV file's text, up to 200,000 characters. A Toggl, Harvest or Clockify export or any CSV with a date column and a duration (or start and end times). | |
| source | No | Which tool exported it. Default: guessed from the columns. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| mapping | No | Which column holds each field, as the column's header text or its position (0 is the first). Fields: date, startTime, endDate, endTime, duration, project, client, task, person, firstName, lastName, email, billable, note, rate, currency. Default: guessed from the headers. | |
| fileName | No | The file's name, for the history. Default import.csv. | |
| dateOrder | No | How 03/04/2026 reads when the file does not settle it. Default: month first in English, day first in Spanish. | |
| durationUnit | No | What a bare number in the duration column means. Default auto: hours. | |
| createClients | No | Create the clients named in the file and link the projects to them. Default true. | |
| excludeProjects | No | Projects to leave out, by their key in the preview. | |
| fallbackProject | No | The project for rows that name none. Default "Imported time". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true with no reversibility detail; the description adds idempotency (previously imported rows are skipped), reversibility (the whole import can be taken back), re-planning against the account state at import time, the untrusted nature of file names, and the confirm gate. This is exactly the extra behavioral context annotations cannot carry.
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?
Front-loaded with the action and packed with useful detail, no filler sentences. It is a single run-on paragraph though, and the oblique line "Names from the file are text written by others" is easy to misread, which costs a point on 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?
For a destructive, 10-parameter write tool with no output schema, it covers side effects, dedupe, undo, size limits, and the preview/execute distinction. What's missing is any statement of required permissions or the shape of the returned plan/summary, so the agent can't fully predict the response.
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 coverage is 100% so the baseline is 3, but the description adds cross-parameter semantics the schema does not: rows are attributed to the user unless the file names a project member's email, and client/project creation is conditional on createClients. It doesn't explain mapping, dateOrder, or durationUnit beyond what the schema already says.
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 a specific verb and resource ("Imports a CSV of hours") and then enumerates the side effects: creates clients/projects, a task per task name, and one time entry per row. It also distinguishes itself from the sibling preview path by noting the same arguments with a confirm flag flip the behavior from preview to execution.
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?
Explains the when-to-use mechanics clearly: needs confirm: true or you get a preview, and files over 200,000 characters must go through the app's Import page. It never explicitly names preview_time_import as the tool to run first, which is the natural alternative an agent would need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_trello_boardImport Trello boardADestructiveInspect
Creates a board from a Trello JSON export (in Trello: Menu → Print, export and share → Export as JSON): lists, cards with Markdown descriptions, dates, labels, checklists, comments and links. Counts toward the free plan's 5 owned boards.
| Name | Required | Description | Default |
|---|---|---|---|
| trelloJson | Yes | The whole Trello export, as JSON text (max 20 MB). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds meaningful context beyond that: it counts against the free plan's 5-owned-board limit, a side effect an agent cannot infer from structured fields. It does not discuss permission requirements or failure modes, so it is useful but not exhaustive.
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, action first, usage detail second; no filler. The inline export-path parenthetical is dense but load-bearing rather than decorative.
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 single-parameter import with no output schema and annotations covering the safety profile, the description supplies the payload composition, the input-acquisition path, and the quota side effect. Return value details are not needed since no output schema exists.
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 one parameter at 100% schema coverage, the baseline is 3. The description earns the bump by explaining what the JSON should contain and where to get it, going beyond the schema's 'whole Trello export, as JSON text (max 20 MB)'.
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?
Specific verb+resource: 'Creates a board from a Trello JSON export,' which unambiguously separates it from create_board, duplicate_board, and import-style siblings. It further enumerates the imported payload (lists, cards, dates, labels, checklists, comments, links), so an agent understands the scope of the 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?
Tells the agent exactly how to obtain the required input ('Menu → Print, export and share → Export as JSON') and notes the free-plan quota of 5 owned boards, which is a real selection constraint. It stops short of explicitly contrasting with create_board or duplicate_board for the case where no Trello export exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leave_boardLeave boardADestructiveInspect
Removes the user from a board someone else shared with them; only the owner can add them back. The owner can't leave their own board. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm destructiveHint=true and readOnlyHint=false, so the safety profile is already known; the description adds genuinely new behavior: a default preview mode unless confirm:true is passed, and the re-admission constraint tied to the owner. It does not describe what happens to the user's access to board contents afterward.
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 clauses, front-loaded with the action and its main precondition, no filler or repetition of the title/name.
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 destructive mutation with no output schema, the description covers the action, the confirm gate, and key eligibility constraints. Minor omissions are post-action consequences and whether the action is reversible by the user themselves.
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 coverage is 50% (boardId undocumented, confirm documented). The description reinforces the confirm semantics ('Needs confirm: true; without it the result is a preview'), which is the only non-obvious parameter, and boardId is self-explanatory from its name and required status.
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 a specific verb and resource ('Removes the user from a board') plus the scope qualifier that it is a board shared with them, which implicitly separates it from remove_member. It does not name the sibling tool explicitly, so differentiation is inferred rather than stated.
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?
Gives a clear precondition ('someone else shared with them') and an explicit when-not case ('The owner can't leave their own board'), and notes the owner is the one who must re-add them. It stops short of naming alternative tools such as remove_member or revoke_access for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_tasksLink tasksCDestructiveInspect
Relates two tasks on the same board: 'blocks' (from blocks to) or 'relates' (both ways).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| toCardId | Yes | ||
| fromCardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readOnly and destructiveHint=true, so the agent knows this mutates state. The description adds nothing about whether a link is reversible, what happens if the link already exists, or required permissions. Given destructiveHint, the silence on reversibility is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One efficient sentence covering both relation kinds and directionality. Minimal but not under-specified for the core action.
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?
No output schema exists, and annotations cover safety, so the main missing pieces are return behavior and permission/error context for a destructive operation. Adequate but clearly leaving gaps for a mutating 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%, so the description must compensate. It explains the 'kind' enum semantics ('blocks' from->to versus 'relates' bidirectional) but says nothing about fromCardId/toCardId formats or constraints. Partial compensation for a major 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?
States a specific verb (relates) and resource (two tasks), and explains the two relation kinds with directionality. Sibling unlink_tasks exists but is not named, so differentiation relies on the agent inferring the inverse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to link vs not, no mention of the unlink counterpart, and no prerequisites. The 'same board' constraint is the only usage signal, delivered as a scoping note rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_activityList board activityARead-onlyInspect
Lists a board's activity history, newest first: who did what, and when. How far back it goes follows the board owner's plan (Free: 40 entries, Pro: 200), as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50. | |
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: results are newest-first and how far back they reach is capped by the board owner's plan (40 vs 200 entries), which the agent cannot learn from annotations or schema 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?
Two tight sentences, front-loaded with what the tool returns before the constraint. Every clause carries information and nothing is repeated from the title or annotations.
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 read-only listing with annotations covering safety and no output schema, the description supplies the important missing context (ordering, plan-based depth). The remaining gap is the interplay between the limit parameter and the plan caps, which is left 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?
Schema coverage is only 50% (limit says just 'Default 50.', boardId has no description) and the description never mentions either parameter. Worse, it introduces an unresolved question: the plan-based retention caps appear to truncate the list independently of the limit parameter, and the description does not clarify whether limit can exceed or is overridden by those caps.
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?
Names a specific verb and resource ('Lists a board's activity history') and adds useful detail about ordering ('newest first') and content ('who did what, and when'). It does not explicitly distinguish itself from nearby siblings like get_board or list_notifications, so an agent must infer the boundary.
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 context is implied: the retention note (Free: 40 entries, Pro: 200) tells the agent this is a historical audit-style read bounded by plan. However, there is no explicit when-to-use guidance or contrast with alternatives such as list_notifications or get_board, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsList boardsARead-onlyInspect
Lists the boards the user can access, each with its lists (ids and titles), the user's role on it (OWNER, EDITOR or VIEWER), whether it is archived and whether it is a favorite. These board and list ids identify boards and lists everywhere else in this server.
| Name | Required | Description | Default |
|---|---|---|---|
| includeArchived | No | Include archived boards. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it is scoped to boards the user can access, returns the user's role, and reports archived/favorite status. It does not cover pagination or ordering, so it falls short of a 5.
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 tightly written sentences, front-loaded with the verb and resource, then the returned fields and ID utility. 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?
For a simple read-only list operation whose annotations cover safety and whose sole parameter is fully documented in the schema, the description supplies the crucial missing return-shape information. An agent knows what it will get and why the IDs matter; nothing needed to call it correctly is absent.
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 fully documents the single optional includeArchived parameter, including its default. The description does not add any further parameter meaning; mentioning 'whether it is archived' describes output, not the filter. With 100% schema coverage, the baseline 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?
States a specific verb ('Lists') and resource ('boards the user can access'), and its enumeration of returned fields (lists, role, archived/favorite) makes it distinguishable from single-board tools like get_board. The scope 'user can access' further separates it from any admin or global listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives clear context for why an agent would call this tool: the returned board and list IDs are used everywhere else in the server. It does not name alternatives or state exclusions, but the implied discovery use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsList clientsBRead-onlyInspect
Lists the user's clients (the companies or people projects are done for) with their contact details, currency, default hourly rate in cents and how many projects use each. The free plan includes 2 active clients.
| Name | Required | Description | Default |
|---|---|---|---|
| includeArchived | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds some genuine context beyond that: the exact fields returned and the free-plan client cap. It does not disclose pagination behavior or whether archived clients appear in the default result, so it is a modest addition rather than a rich one.
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 with the core purpose front-loaded and no redundant filler. The plan-limit sentence is slightly tangential to listing but earns its place as an operational constraint.
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 carries the burden of describing the return payload, and it does so by naming the fields returned (contact details, currency, hourly rate in cents, per-client project count). Combined with annotations that cover safety, this is nearly complete; only pagination and archived-inclusion behavior are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single includeArchived param is documented with its default), so the schema does the heavy lifting and the baseline is 3. The description does not mention archiving at all, adding no semantics beyond the structured field.
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 gives a specific verb and resource ('Lists the user's clients') and even clarifies the domain concept ('the companies or people projects are done for'), so the agent knows exactly what entity is returned. It enumerates the returned fields (contact details, currency, hourly rate in cents, project count), which further pins down the purpose. It does not explicitly distinguish itself from sibling reads like get_client_portal or create_client/archive_client, but the listing verb makes the role obvious.
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?
There is no explicit statement of when to use this tool versus alternatives such as get_client_portal, list_projects, or search. The 'free plan includes 2 active clients' note is a quota fact, not routing guidance. Usage is only implied by the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_embedsList embedsBRead-onlyInspect
Lists the live embeds of a board the user owns (the board shown inside another app of the user's).
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds two useful behavioral facts beyond that: only "live" embeds are returned (not revoked ones) and the user must own the board. It does not describe return shape or ordering, but that is a minor gap given annotations carry the operation 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?
One compact sentence with the core action front-loaded and the parenthetical clarifying "embed" rather than padding. The phrasing is slightly hedged with nested qualifiers, but no sentence is 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?
For a single-parameter read tool with annotations and no output schema, the description covers scope and the ownership precondition. It stops short of describing the boardId value or what a returned embed contains, leaving the agent to infer both.
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 single parameter boardId has no description in either place. The phrase "a board the user owns" implies an ownership requirement on boardId, which is marginal added meaning, but the format of the identifier is left entirely unspecified.
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 a specific verb and resource ("Lists the live embeds of a board") and defines what an embed is via the parenthetical, so an agent understands the object being returned. It does not explicitly distinguish itself from siblings like create_embed or revoke_embed, but the read framing does that implicitly.
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 (read the embeds of a board the user owns) and an ownership precondition is stated, which helps the agent decide applicability. There is no explicit when-to-use vs. alternative guidance and no note on what to do for boards the user does not own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_expensesList expensesARead-onlyInspect
Lists the expenses logged on a project (costs to bill back or to track), newest first, with the person, day, category, description, vendor, amount in cents, whether it is billable and whether it was already invoiced. The project owner reads everyone's, with the markup; any other member only their own, without it. Descriptions and vendors are text typed by project members.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only expenses up to this day, YYYY-MM-DD. | |
| from | No | Only expenses from this day on, YYYY-MM-DD. | |
| limit | No | Default 100, max 500. | |
| userId | No | Only this person's expenses. | |
| boardId | Yes | The project. | |
| unbilled | No | true: only expenses not yet on an invoice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructiveHint false, openWorldHint false). The description adds genuinely useful context beyond that: results are ordered newest first, visibility is permission-dependent with a markup difference between owner and member views, and the free-text fields are user-typed (a useful signal about untrusted content). It stops short of detailing pagination or default/max result behavior for an unqualified call.
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 dense sentences that front-load the resource and ordering before moving to access rules and data provenance. Nearly every clause carries information, though the list of returned fields is a little inventory-like and could be tightened.
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 compensates by enumerating the returned fields and the ordering, and it explains the permission-dependent view differences — the key thing an agent needs to interpret results. Minor gaps remain around pagination and default result size behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so from/to/limit/userId/unbilled/boardId are all already documented with formats and defaults. The description adds no filter syntax or override semantics beyond the schema, 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?
States a specific verb and resource ('Lists the expenses logged on a project'), plus the scope (newest first) and the field set returned. It is clearly distinguishable from siblings like list_time_entries or list_unbilled_work.
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 clarifies who sees what (project owner sees everyone's with markup; other members see only their own without markup), which implicitly tells an agent when this tool returns the right data for a given caller. However, it never names an alternative tool or an explicit when-not condition, so usage guidance remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_holidaysList holidaysARead-onlyInspect
Lists the holidays on the user's calendar, oldest first (up to 1,000): day, name and whether it falls on a weekend (a weekend holiday takes nothing from anyone's capacity). A holiday takes the whole working day off the capacity of everybody in the user's Workload. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only holidays on or before this day, YYYY-MM-DD. | |
| from | No | Only holidays on or after this day, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/non-destructive, so the bar is lower, and the description still adds real behavior: results are oldest-first and capped at 1,000, and a holiday removes the whole working day from everyone's capacity while a weekend holiday removes nothing. It does not explain pagination past the cap, but the cap itself is 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?
Front-loaded with what is listed and in what order, with the limit and returned fields immediately after. The capacity parentheticals are slightly chatty but they carry genuine meaning about what the data implies.
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 usefully enumerates the returned fields and the result cap, and the Pro requirement is noted. Only the default range behavior when from/to are omitted is unaddressed, a minor gap for a two-param read 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 coverage is 100% and both from/to are fully documented in the schema with date format. The description adds no additional parameter semantics such as default range behavior when neither bound is supplied, so 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?
Specific verb+resource: 'Lists the holidays on the user's calendar', plus ordering ('oldest first') and returned fields (day, name, weekend flag). It distinguishes itself from siblings like list_time_off by framing holidays as capacity-affecting, though the differentiation is implicit rather than by name.
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?
'A Pro feature' is an explicit prerequisite, and the capacity framing makes the context of use clear (Workload planning). It stops short of naming alternatives such as list_time_off or stating 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.
list_invoicesList invoicesARead-onlyInspect
Lists the user's invoices and estimates, newest first, 25 per page (up to 100): number, kind, status (draft, sent, paid, overdue, void, accepted, declined), client, project, dates, and total, paid and balance in cents. Also returns, per currency, what the matching invoices add up to, what was paid and what is still owed. Only the account's owner has invoices; other project members do not read them.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the number or the client's name. | |
| to | No | Issued up to this day, YYYY-MM-DD. | |
| from | No | Issued from this day on, YYYY-MM-DD. | |
| kind | No | ||
| page | No | Default 1. | |
| status | No | overdue: sent and past its due date. open: sent and not paid. | |
| boardId | No | Only the documents of this project (one the user owns). | |
| clientId | No | Only this client's documents. | |
| pageSize | No | Default 25, max 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description earns credit for adding what they don't: default and max page size, sort order, the returned field set, the per-currency aggregation of totals/paid/owed, and an ownership/permission boundary. It stops short of stating pagination termination behavior or whether totals reflect the full filtered set or just the current page.
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 dense sentences, front-loaded with what the tool returns before the access caveat, with no filler. It is longer than strictly necessary because the return-field enumeration is packed in, but each clause carries 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?
With no output schema and 9 optional parameters, the description compensates by describing the return payload (fields, sort, page size) and the aggregate totals per currency, plus the permission boundary. An agent has enough to call this correctly and interpret the result.
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 89%, so the schema already documents q, to, from, kind, page, status, boardId, clientId and pageSize. The description adds only the cents unit on monetary values and restates status names (even omitting 'open', which the schema supplies). Baseline 3 is correct when the schema carries the parameter 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?
States a specific verb and resource ('Lists the user's invoices and estimates') and pins down scope: newest first, 25 per page up to 100, with the exact fields returned. This clearly separates it from single-document siblings like get_invoice and from export_invoices_csv.
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 the enumeration scope rather than stated. The one real routing signal is the access constraint ('Only the account's owner has invoices; other project members do not read them'), which tells an agent when this call is authorized. No alternatives such as get_invoice, export_invoices_csv or list_unbilled_work are named or contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_tasksList my tasksARead-onlyInspect
Lists the user's tasks across every board, like the app's My tasks page: open cards assigned to the user plus dated cards on the user's own boards that nobody is assigned to, grouped as overdue, today, next 7 days, later and no date.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 100, max 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real behavioral substance: exactly which cards are included (assigned and open, or dated and unassigned on owned boards) and the fixed ordering of result groups. It does not mention any default cap or pagination behavior, which is the one remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence, front-loaded with the verb and scope before the inclusion rules and group ordering. Every clause earns its place, though the single-sentence form packs a lot of nested criteria that could be marginally easier to scan if split.
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?
No output schema exists, so the description correctly compensates by describing the return shape — the five ordered buckets (overdue, today, next 7 days, later, no date). With annotations covering the read-only safety profile and the limit param documented in the schema, an agent has what it needs; only pagination/truncation behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single 'limit' parameter documents its default (100) and max (500). The description adds nothing about parameters. Baseline 3 is correct when the schema carries the full 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?
Specific verb ('Lists') plus resource ('the user's tasks across every board') with an explicit analog ('like the app's My tasks page'). The inclusion rules (open cards assigned to the user, plus dated unassigned cards on the user's own boards) and the grouping buckets make it unmistakable versus siblings like search_tasks or get_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?
Usage is strongly implied — this is the 'my tasks' view — but the description never states when to prefer it over search_tasks or list_boards, nor any exclusions. An agent can infer the context but gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsList notificationsARead-onlyInspect
Lists the user's notifications (mentions, assignments, comments on watched cards, due-date digests), newest first, with the unread count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 30, max 100. | |
| unreadOnly | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: results are ordered newest first, and an unread count is returned alongside the list, which is not derivable from the schema or 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?
A single front-loaded sentence with no filler; the parenthetical enumeration is dense but every element carries selection value (categories covered) or behavioral value (ordering, unread count). Nothing could be cut without losing 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 full schema coverage, no output schema, and complete annotations, the description covers scope, ordering, and the unread-count return. It does not address pagination behavior beyond the limit parameter, which is a minor gap in an otherwise sufficient definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (limit with default 30/max 100, unreadOnly with default false) are already documented in the schema. The description adds no syntax or behavioral detail about how these parameters interact with the returned unread count, 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?
States a specific verb and resource ('Lists the user's notifications') and enumerates the notification categories covered (mentions, assignments, comments on watched cards, due-date digests), which lets an agent distinguish it from list_activity and list_reminders. It stops short of explicitly naming those siblings, so it is clear but not fully 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?
Usage is only implied by the enumerated content: an agent can infer this is the tool for viewing personal notifications, and the mention/assignment/comment/digest list implicitly separates it from list_activity. There is no explicit when-to-use, when-not-to-use, or reference to mark_notifications_read for the read/unread workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesList pagesARead-onlyInspect
Lists a project's notes or discussions, pinned first and then the most recently touched (a reply counts), up to 200: title, a snippet, who started it, comment count, pinned and archived. Searches titles and bodies. Titles and snippets are written by project members. Any role on the project reads.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the title or the body. | |
| kind | Yes | ||
| boardId | Yes | The project. | |
| archived | No | true: the archived ones. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), yet the description adds real behavioral context: pinned-first then most-recent (reply counts) ordering, a 200-item cap, which fields are searched, and the trust note that titles/snippets are member-authored. It does not explain how to page beyond 200, but the disclosure is well 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?
Front-loaded with the core action in the first clause, followed by ordering, return fields, search scope, and permission. Dense but each sentence carries a distinct fact; the trust note and permission line are short and load-bearing.
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 readOnly annotations already present, the description supplies the missing return shape (title, snippet, starter, comment count, pinned/archived), ordering, and the cap. Only pagination beyond the 200 limit and any offset semantics are left unaddressed.
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 coverage is 75%, so the schema documents most parameters. The description clarifies that q searches both titles and bodies and that kind selects notes vs discussions, but adds little on boardId or the archived filter (which the schema already explains as default-false). Baseline 3 fits when the schema does most of the lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists a project's notes or discussions') and even enumerates the return fields, so the agent knows exactly what this produces. The kind enum (note/discussion) is reflected in the description, distinguishing it from sibling tools like get_page or list_boards.
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 the verb-plus-resource framing, but the description never says when to choose this over get_page or other list_* siblings, nor does it name any alternative. It gives a permission note ('Any role on the project reads') but no exclusions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_filesList project filesARead-onlyInspect
Lists every file and link attached to a project's tasks, newest first (up to 200): name, type (image, pdf, document, sheet, archive, media, link, other), MIME type, size, the task and list it is on, and for a link its address. Narrow by type or by text in the file or task name; also returns how many there are of each type. Names and addresses are typed by project members. Any role on the project reads.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the file name or the task title. | |
| type | No | ||
| boardId | Yes | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/destructive/openWorld, but the description adds genuinely useful context beyond them: results are newest-first, capped at 200, include per-type counts, and carry a data-provenance note ('Names and addresses are typed by project members') plus a permission statement ('Any role on the project reads'). Pagination/truncation semantics are not fully detailed, but the added context is substantial.
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?
Front-loads the core purpose ('Lists every file and link...') before diving into returned fields, filters, and access notes. The single dense sentence is information-rich but slightly run-on, packing many clauses together.
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 carries the return-value burden and does so well, enumerating returned fields (name, type, MIME type, size, task/list, link address) and the per-type counts. Combined with permission and ordering notes, an agent has nearly everything needed to call and interpret 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?
Schema coverage is 67%, and the description adds meaning on top: it enumerates the type values, clarifies that 'q' matches file name or task title text, and indicates boardId is the project. This maps the sparse schema descriptions to concrete filtering behavior.
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 a specific verb ('Lists') and resource ('every file and link attached to a project's tasks') with scope and ordering, which cleanly distinguishes it from siblings like list_embeds, list_pages, and list_activity. An agent can identify the tool's function without opening the schema.
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 how to narrow results ('by type or by text in the file or task name') and notes that any project role can read, which implies usage. However, it never states when to choose this over alternatives such as list_embeds or search, so the guidance remains implied 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_projectsList projectsBRead-onlyInspect
Lists the projects the user can see (boards with project settings): client, status (active, on hold, completed, cancelled), dates, hours tracked, the budget and how much of it is used (ok, warning from 80%, over), and who worked on it. On a project the user owns the hours are everyone's and the amounts count; on one the user only belongs to, only their own hours and no money. Also lists the boards the user owns that could become projects, and the sample project if there is one.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the project, client or owner name. | |
| sort | No | Default status. | |
| status | No | open: active and on hold. Default all. | |
| clientId | No | Only this client's projects; none: projects without a client. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only profile, and the description adds genuinely useful behavior beyond them: data visibility differs by ownership (owner sees everyone's hours and monetary amounts; members see only their own hours and no money), budget thresholds are flagged (ok, warning from 80%, over), and the result also includes owner boards that could become projects plus any sample project. This is substantive disclosure an agent could not infer from 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 leading sentence front-loads the verb and resource well, but the middle sentence on ownership semantics is dense and slightly overstuffed, and the returned-field enumeration is heavy for one sentence. No sentence is pure waste, but the description runs longer than its core message needs.
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 carries the return-value burden and does so by enumerating the fields returned and the ownership-dependent visibility rules. Combined with annotations covering safety, an agent has enough to call and interpret the result, though sibling differentiation is still absent.
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 coverage is 100%, so q, sort, status, and clientId are fully documented in the schema, making 3 the baseline. The description repeats some status values but adds no syntax, default, or filtering semantics beyond what the schema already provides (e.g., the 'open = active and on hold' nuance lives only 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?
States a specific verb (Lists) and resource (projects), and clarifies the resource as 'boards with project settings', which disambiguates from raw boards. It enumerates the returned fields (client, status, dates, hours, budget), giving a precise picture of the payload. However, it never names or contrasts with the closest siblings such as list_boards or get_project_summary.
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?
There is no explicit when-to-use guidance or any named alternative. The description explains visibility semantics (owned vs member projects) but that is behavioral context, not a selection rule. An agent gets no help deciding between this and list_boards, get_project_summary, or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_templatesList project templatesARead-onlyInspect
Lists the templates a new project can start from: the starters that come with Decknote (website project, marketing campaign, monthly retainer) and the ones the user saved, each with its lists, number of tasks, total estimate, whether its tasks carry relative due dates, and a note when a saved one cannot be used. The free plan keeps 1 saved template; the starters cost no place.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing plan-quota behavior and that saved templates can be listed with a note explaining when they 'cannot be used', which is meaningful behavioral context an agent cannot get from 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?
One dense but well-ordered sentence that front-loads the resource and scope, then enumerates the returned fields. Every clause carries information, though the parenthetical starter examples and the trailing quota sentence make it slightly long for a zero-arg list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the full burden and does so: it enumerates the returned fields (lists, task count, total estimate, relative due-date flag, unusable-saved-template note) and the two template categories. Nothing an agent needs to call or interpret this tool is missing.
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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. No parameter semantics are claimed or 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?
States a specific verb (lists) and resource (project templates) and immediately scopes it as 'the templates a new project can start from', which separates it from list_projects and from the mutation siblings create_project_from_template / save_project_as_template. An agent can identify the tool without opening the schema.
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 rather than stated: the tool is the discovery step before create_project_from_template, but the description never names that alternative or says when to call it. It does surface a real constraint (free plan keeps 1 saved template, starters cost no place) which is useful context but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recurring_invoicesList recurring invoicesARead-onlyInspect
Lists the user's recurring invoices: for each, the client, the total of each invoice, how often (every N weeks, months or years), the next date, how many are left (null = no end), what happens to each new invoice (draft, sent, or emailed to the client), whether it is paused, the last invoice it made and the reason its last run could not finish, if any. Client names and line descriptions are text typed by the user and their clients.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description goes beyond that by explaining return-field semantics, including the meaningful edge case that a remaining-count of null means no end date and that a last-run failure reason may be present. It omits any statement about pagination, ordering, or result volume.
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 dense sentence that front-loads the verb and resource, then lists fields in a logical order. It is on the long side and slightly run-on with its parentheticals, but no sentence is wasted. The trailing note about user-typed text is useful and compact.
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 carries the burden of describing returns and does so thoroughly, field by field, including the null-means-unbounded convention and the pause state. The only gap is absence of pagination or ordering behavior, which matters for a potentially long 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?
There are zero parameters, so the baseline of 4 applies; the description correctly does not invent parameter guidance. Nothing is required to compensate for, and the schema is empty and fully described by omission.
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 a specific verb and resource ('Lists the user's recurring invoices') and then enumerates the exact fields returned, which distinguishes it cleanly from siblings like list_invoices and get_invoice. An agent can tell what it retrieves without opening any schema.
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 only implied by the name and the zero-parameter schema; there is no explicit statement of when to call this versus list_invoices, get_invoice, or update_recurring_invoice. For a simple list-all tool that may be sufficient, but no alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remindersList remindersARead-onlyInspect
Lists the user's pending reminders, soonest first, optionally on one board, with each task's title and due date.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200. | |
| boardId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description goes beyond them by disclosing the filtering behavior (pending only, so completed reminders are excluded), the sort order (soonest first), and the shape of each returned item (task title and due date). No auth or rate-limit caveats, but the added behavioral context is substantive.
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?
One sentence, front-loaded with the primary action and resource, then progressively narrowing with ordering, optional filter, and return fields. 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?
With no output schema, the description usefully summarizes the return payload (each task's title and due date), and the whole tool is a simple two-param read. The main gap is that it doesn't say whether results are capped, paginated, or how the limit interacts with the ordering, but that is minor for a read-only 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?
Schema coverage is 50%: limit is documented in the schema ('Default 50, max 200') while boardId has no schema description. The description compensates for boardId only by implication ('optionally on one board'), with no format, default, or behavior for invalid/multi-board values. Baseline 3 is appropriate for this mixed 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?
Specific verb (Lists) plus resource (user's pending reminders), with added scope detail: pending only, soonest first, optionally scoped to one board. It is clearly distinct from add_reminder/remove_reminder and from task-list siblings, though it does not name the nearest alternative (e.g. list_my_tasks) to sharpen the boundary.
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 'optionally on one board' implies when to use boardId, which is useful implied guidance. However, there is no explicit when-to-use framing, no statement of what it excludes relative to list_my_tasks or list_notifications, and no guidance on when to raise the limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_ratesList team rates and costsARead-onlyInspect
Lists the user's team (themselves, the people on their projects and whoever logged time on them) with each person's default hourly rate, what an hour of theirs costs the user, their weekly capacity and on how many projects they are. Amounts in cents. The cost is only the user's: nobody else reads it. Names and emails are typed by other people. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/non-destructive annotations, it adds real operational context: amounts are in cents (a unit convention the agent must not misread), the cost figure is visible only to the requesting user, and 'A Pro feature' signals a plan-gated failure mode. The caveat that names and emails are user-entered warns against treating them as authoritative identifiers.
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 payload sentence is front-loaded and dense with exactly the fields an agent needs; the trailing sentences are short clarifications that each carry a distinct fact (units, privacy, plan gate, data provenance). Slightly fragmentary, but no sentence is 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 no parameters and no output schema, the description carries the return-shape burden and largely discharges it by naming each field. Gaps remain minor: ordering of the list and whether inactive or removed members and archived projects are included are not stated.
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 takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly spends no words on input arguments.
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?
Specific verb ('Lists') plus a precisely defined resource (the user's team, with membership spelled out as themselves, people on their projects, and anyone who logged time). It enumerates the returned fields — default hourly rate, cost of an hour to the user, weekly capacity, project count — so the agent can distinguish it from set_team_rate/get_member_rates without opening a schema.
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 rather than stated: an agent can infer this is the read-side counterpart to set_team_rate and set_member_rate, but no sibling is named and there is no explicit when/when-not guidance. The 'Pro feature' note is the only conditional, and it is a plan gate rather than an invocation guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_time_entriesList time entriesARead-onlyInspect
Lists the time entries of a project, newest first, with who logged each, the task, the day, the minutes and whether it is billable. The project owner reads everyone's entries, with their hourly rates in cents; any other member reads only their own, without rates. Also returns the total minutes of everything the filters match.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only entries up to this day, YYYY-MM-DD. | |
| from | No | Only entries from this day on, YYYY-MM-DD. | |
| limit | No | Default 100, max 500. | |
| cardId | No | Only this task. | |
| userId | No | Only this person's entries. | |
| boardId | Yes | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, closed-world), but the description adds genuinely non-obvious behavior the annotations cannot convey: default sort order (newest first), permission-dependent result shape (owner sees all entries with hourly rates in cents; other members see only their own without rates), and an aggregate total-minutes value computed over the filtered set. That is substantial extra context for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler. The core purpose and ordering are front-loaded, then access semantics, then the aggregate return, each sentence carrying distinct 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?
There is no output schema, so the description must carry return-value information, and it does: it names the fields returned, the sort order, the rate visibility rule, and the extra total-minutes aggregate. Combined with full-schema parameter coverage and read-only annotations, an agent has everything needed to call and interpret this 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 100%, so each of the six parameters (from, to, limit, cardId, userId, boardId) is already documented with format and constraints. The description only alludes to filtering generically ('everything the filters match') without adding syntax, defaults, or edge cases beyond the schema, so the baseline of 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 states a specific verb ('Lists') and resource ('time entries of a project') and even enumerates the returned fields (who logged each, the task, the day, the minutes, billable flag), which is far more than a tautology. It does not, however, name or distinguish itself from nearby siblings like get_time_report, get_week_timesheet, get_task_time, or list_unbilled_work, so the agent must infer the boundary.
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 rather than prescribed: the agent can infer this is the per-project time-entry listing, and the role-dependent behavior tells it what a given caller will see. But there is no explicit when-to-use-this-vs-alternatives guidance against the several other time-reporting tools in the sibling list, and no stated prerequisites beyond an implicit projectId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_time_importsList time importsARead-onlyInspect
Lists the user's time imports, newest first (the last 30): the source (toggl, harvest, clockify, generic), the file name, whether it is done or was undone, how many entries and how many minutes it brought, how many rows were skipped as duplicates or failed, and when. The sample project is not listed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavior: newest-first ordering, a hard limit of the last 30 imports, and the exclusion of the sample project.
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 front-loaded sentence with the operation and ordering first, followed by the returned fields. No filler, and every clause maps to something the agent actually needs.
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 no parameters, the description must explain what comes back, and it enumerates source, file name, done/undone status, entry/minute counts, skipped/failed rows, and timestamp. Nothing essential is missing.
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?
Zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The description instead documents implicit behavior (the 30-item cap), which is its own form of parameter-like constraint.
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?
Specific verb ('Lists') plus a precisely scoped resource ('the user's time imports'), with sort order and result window stated up front. It is clearly distinguishable from siblings like list_time_entries and preview_time_import.
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 the contents described (status of imports suggests undo_time_import is the mutation counterpart), but there is no explicit when-to-use or routing to preview_time_import/undo_time_import. Only the sample-project exclusion is stated as a scope rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_time_offList time offARead-onlyInspect
Lists time off (vacation, sick leave, other), soonest first (up to 500): the user's own and, on Pro, that of the editors of the projects the user owns. Each has the person, the kind, the first and last day, the minutes off each day (null is the whole working day), the number of days and its status: pending (asked for and waiting for an owner of the person's projects), approved (it lowers the capacity) or rejected, with who decided, when and their note, and whether the user can approve or reject it. The person's own note comes only with the user's own time off. Person names and notes are typed by people. Optionally one person's, one status, or what overlaps a range of days.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only time off that starts on or before this day, YYYY-MM-DD. | |
| from | No | Only time off that reaches this day or later, YYYY-MM-DD. | |
| status | No | Only time off in this status (pending: waiting for approval). | |
| userId | No | Only this person's time off: the user's own or an editor of one of the user's projects (Pro). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/destructiveHint/openWorldHint annotations: discloses a 500-record cap, result ordering, Pro plan gating, visibility limits (the person's own note only appears for the user's own time off), the semantic effect of 'approved' (lowers capacity), the approval workflow and who decides, and a data-quality caveat that names and notes are human-typed.
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?
Front-loads the essential scope and ordering in the first clause, and the long field enumeration earns its place because no output schema exists. It is still a single run-on sentence mixing return-field inventory with filtering, which makes it harder to scan than it needs to be.
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 compensates fully by enumerating every returned field (person, kind, first/last day, minutes off per day with null meaning full working day, day count, status, decision metadata, approvability). Combined with the visibility and plan constraints, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description restates the same semantics (overlap on a day range, person filter scoped to self or editors, status filter) without adding new syntax, defaults, or edge-case behavior, 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?
States a specific verb and resource ('Lists time off (vacation, sick leave, other)') plus ordering ('soonest first') and a cap ('up to 500'). The scope sentence distinguishes it clearly from list_time_entries, list_timesheets and list_holidays by being about time-off records and their approval state.
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?
Scope rules (own time off plus, on Pro, editors of the user's projects; optional filters by person, status, or overlapping date range) imply when the tool applies. However, no sibling is named — an agent gets no explicit guidance on when to prefer list_timesheets or list_time_entries instead, or when to chain into approve_time_off/reject_time_off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_timesheetsList weeks under reviewARead-onlyInspect
Lists the weeks of hours handed in for approval, newest week first (up to 100 of each): toReview, the weeks the people on the user's projects submitted to the user, and mine, the weeks the user submitted to the owners of the projects they work on. Each week has its status (submitted: waiting; approved; rejected: open again), the hours when it was submitted and now, the owner's note, and the hours by project and task for each day from Monday to Sunday. While a week is submitted or approved its hours are closed to the person who submitted it; the project owner can still change them. Names, titles and notes are typed by other people.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only weeks that start on or before this day, YYYY-MM-DD. | |
| from | No | Only weeks that start on or after the week of this day, YYYY-MM-DD. | |
| status | No | Only weeks in this status. Default: all. | |
| userId | No | Only this person's weeks, among those handed to the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile, and the description adds substantial behavior beyond them: newest-first ordering, a 100-per-collection cap, status lifecycle meanings, and the lock rule that submitted/approved hours are closed to the submitter while the project owner can still edit. The note that names and notes are user-typed flags data-quality risk, which is genuinely useful 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?
Front-loads what is listed and the two collections, with no filler sentences. However, it is a dense run-on with awkward phrasing ('the hours when it was submitted and now'), which slightly hurts scanability.
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 carries the return-shape burden well: it names the two collections, the per-week fields (status, hours submitted/current, owner note, per-day project/task hours), and the status semantics. Combined with annotations covering safety and the 100-cap disclosure, an agent has what it needs to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all four filters (to, from, status, userId) are fully documented in the schema, so baseline 3 applies. The description adds no per-parameter meaning beyond the schema, only return-shape context.
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 a specific verb and resource (lists weeks of hours handed in for approval) and defines the two collections it returns, toReview and mine, which distinguishes it from sibling single-week (get_week_timesheet) and time-entry (list_time_entries) tools. An agent can identify scope without opening the schema.
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?
Gives clear context for when this tool applies: reviewing submitted/approved/rejected weeks awaiting the user's action. It does not name alternatives or exclusions (e.g., use get_week_timesheet for one week's detail), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_unbilled_workList unbilled workARead-onlyInspect
Lists what a project could still bill: its finished billable time entries (person, task, day, minutes and the rate each will be priced at, in cents) and its billable expenses not yet on an invoice. Only the project owner. Expense descriptions and task titles are text typed by project members.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Up to this day, YYYY-MM-DD. | |
| from | No | From this day on, YYYY-MM-DD. | |
| boardId | Yes | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful beyond-annotation context: owner-only access, the specific returned fields (person, task, day, minutes, rate in cents), and a note that expense descriptions and task titles are user-typed text.
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 adds only the necessary access and data-provenance details. It is dense but appropriately sized, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description adequately explains what is returned, including important field units and a caution about user-typed text. It does not describe pagination or ordering behavior, but the essential call semantics are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters and both optional date filters documented in the schema itself. The description does not add syntax, format, or filtering semantics beyond what the schema already provides, so the baseline of 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 states a specific verb and resource — what a project can still bill — and enumerates the two returned categories: finished billable time entries and billable expenses not yet invoiced. This distinguishes it from general listing siblings such as list_time_entries or list_expenses and from invoice-preview/creation 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?
Usage is implied by 'what a project could still bill,' and there is a clear access precondition ('Only the project owner'). However, it does not explicitly say when to choose this over preview_invoice_from_work, create_invoice_from_work, or the other list_* siblings, so routing guidance remains incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList webhooksARead-onlyInspect
Lists the account's webhooks and Slack channels: kind (slack or json), a shortened address, the board it listens to (null: every board the user owns, plus invoices and estimates), the event types it sends, whether it is on, and how its last delivery went (lastStatus, lastError, lastSentAt; it turns itself off after 20 failures in a row). Signing secrets are not listed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/non-destructive annotations, the description discloses meaningful behavior: the board scope semantics when null, that webhooks auto-disable after 20 consecutive failures, and that signing secrets are deliberately omitted. These are valuable operational details an agent could not infer from 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 a single front-loaded sentence that immediately states the resource, then unpacks returned fields efficiently. It is dense but every clause carries useful information; a slight readability cost comes from packing all return details into one long sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values and does so thoroughly: kind, shortened address, board scope, event types, enabled state, last delivery status/error/time, auto-disable behavior, and secret omission. This is complete enough for an agent to call and interpret the result 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 tool takes zero parameters, so the baseline is 4. The description does not need to explain parameter syntax, and none is present.
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 begins with a specific verb and resource: 'Lists the account's webhooks and Slack channels.' This clearly distinguishes this read-only listing tool from sibling mutation tools like create_webhook, update_webhook, and delete_webhook.
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 is the tool for inspecting webhooks by detailing what it returns, but it never explicitly states when to use it versus alternatives such as test_webhook or update_webhook. No when-not guidance or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_timeLog timeADestructiveInspect
Adds hours by hand to a project, or to one of its tasks. The entry takes the project's hourly rate (or the client's) and is billable according to the task's setting, else the project's, unless billable is given. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | The day worked, YYYY-MM-DD. Default: today in the user's time zone. | |
| note | No | What was done, up to 500 characters. | |
| cardId | No | The task the time was spent on. | |
| boardId | No | The project. Optional when cardId is given. | |
| billable | No | Default: the task's setting, else the project's. | |
| duration | Yes | A duration the way a person writes it: 90, 90m, 1h, 1h30, 1:30 or 1.5h. A bare number is minutes. Up to 24 hours per entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare write/destructive flags; the description adds real behavioral context beyond them: rate resolution (project's hourly rate, else the client's), the billable inheritance chain, and the required editor role. It does not describe the response, but for a create tool this is solid added 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?
Two sentences, front-loaded with the core action before the billing/role details. The billing sentence is dense but each clause earns its place; nothing is 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?
For a 6-param create tool with no output schema, the description covers purpose, billing behavior, defaults, and the permission requirement. An agent has enough to invoke it correctly; only the returned entry/identity is unspecified, which the absence of an output schema makes 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?
Schema coverage is 100%, so the schema already documents every parameter including the duration formats. The description adds marginal meaning by clarifying the billable precedence ('unless billable is given') and the rate source, but most parameter semantics remain in the schema. Baseline 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?
States a specific verb+resource: adds a time entry 'by hand to a project, or to one of its tasks.' The phrase 'by hand' implicitly distinguishes it from start_timer and import_time_csv, but it never names those siblings, so differentiation is inferred rather than 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 manual-entry framing implies when to use this over a timer or CSV import, and it states the editor-role prerequisite. However, there is no explicit when-not guidance or named alternative, so the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_client_comments_readMark client comments readADestructiveInspect
Marks the client's portal comments as read, and clears the bell notices about them: those of one task (cardId) or every one of the project (boardId). Give exactly one of the two. Only the project owner.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | No | The task. | |
| boardId | No | The project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description is consistent with them (marking read clears bell notices). Beyond the annotations it adds the authorization constraint ("Only the project owner") and the exact scope of what is cleared, though it does not say what happens on repeat calls or whether an error is returned for non-owners.
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 compact clauses: the effect is front-loaded, then the parameter choice, then the permission gate. Every sentence carries load with 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?
For a no-output-schema mutation tool, the description covers effect, target scoping, parameter exclusivity, and authorization. The only gaps are return behavior and idempotency/failure cases, which are minor given both parameters are optional-by-construction and the side effect is disclosed.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: the mutual-exclusivity rule ("Give exactly one of the two") and the semantic contrast between cardId (one task) and boardId (every one of the project), which the terse schema descriptions ("The task." / "The project.") do not convey.
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 a specific verb (marks as read) and a specific resource (the client's portal comments), plus the secondary effect of clearing the associated bell notices. An agent can distinguish this from generic notification tools because the scope is tied to client portal comments on a task or project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operating conditions: pass exactly one of cardId (one task) or boardId (every comment in the project), and requires the caller to be the project owner. It does not, however, differentiate from the neighboring mark_notifications_read tool, leaving that disambiguation to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_notifications_readMark notifications readADestructiveInspect
Marks notifications as read: one (notificationId, which also marks the others about the same card, as opening it in the app does), every one about a card (cardId), or all of them (all: true).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| cardId | No | ||
| notificationId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation profile is covered. The description adds genuinely non-obvious behavior beyond that: marking one notificationId also marks the other notifications about the same card, mirroring in-app behavior. It does not state reversibility or auth requirements, so 4 rather than 5.
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 dense sentence with the primary behavior front-loaded and zero filler. The nested parentheticals around notificationId make it slightly harder to parse at a glance, keeping it from a 5.
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 three-optional-parameter mutation with no output schema, the description covers all invocation modes plus the important cascade side effect. Missing only secondary details such as return value and reversibility, which the annotations do not cover either.
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 carry the full semantic burden, and it does: it explains what each of the three parameters means and the scope it selects. It does not state that all parameters are optional or what happens if several are supplied at once, 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?
States a specific verb ('Marks ... as read') and resource ('notifications'), and immediately enumerates the three distinct scopes the tool can act on. An agent can tell exactly what this tool does without opening the schema.
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 for choosing among the three invocation modes (single notificationId, all-for-a-card cardId, or all:true), which is effectively usage guidance. It stops short of routing against alternatives such as list_notifications or stating any exclusions, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_taskMove taskADestructiveInspect
Moves a task to another list: on the same board, optionally to a position (index 0 = top), or on another board the user can edit (it lands at the end). Moving to another board drops the old board's labels and the assignees and watchers who can't see the new board, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Position in the target list, 0 = top. Default: the end. | |
| cardId | Yes | ||
| listId | Yes | Target list id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already flagging destructiveHint=true, the description adds critical behavioral details beyond structured fields: moving to another board drops the old board's labels and removes assignees/watchers who cannot see the new board. It also clarifies positioning behavior (index 0 = top, default end). This is exactly the kind of destructive side-effect disclosure an agent needs.
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, front-loaded sentence that begins with the core action and then layers on scoping, positioning, and destructive consequences. Every clause earns its place with 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?
For a destructive move operation with no output schema, the description covers the essential behaviors: same-board vs cross-board moves, position handling, and the label/assignee/watcher fallout. Annotations already confirm the destructive nature, and the description supplies the 'what gets destroyed' detail that annotations alone cannot.
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 coverage is 67% (index and listId have descriptions; cardId does not). The description mirrors the schema's index semantics ('index 0 = top') and implies cardId is the task being moved, but adds little meaning beyond what the schema already provides. Baseline 3 is appropriate for this coverage 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 states a specific verb and resource ('Moves a task to another list') and immediately scopes the operation into two clear modes: same board with optional position, or another board. This is precise enough to distinguish it from sibling tools like update_task or sort_list without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool: moving a task to another list, either within the same board or to another board the user can edit. However, it does not explicitly state when not to use it or name alternative tools (e.g., update_task for field edits), 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.
open_billing_portalOpen billing portalADestructiveInspect
Creates a link to Stripe's billing portal, where the user manages their Pro subscription: payment card, invoices, monthly or yearly billing, cancellation. Changes happen there, made by the user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, but the description usefully reframes this: the tool itself only mints a link, and 'Changes happen there, made by the user' clarifies that mutation is external and user-initiated rather than performed by the call. That is real added context beyond the annotations, though it stops short of stating auth or expiry behavior for the generated 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?
Two short sentences, front-loaded with the action and outcome. The trailing 'Changes happen there, made by the user' partially restates the earlier 'where the user manages their Pro subscription', but the emphasis on user-driven external change 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 zero-parameter, open-world tool with no output schema, the description covers what it does, what the resulting portal contains, and who performs the changes. It could be stronger by noting that it returns a URL to hand to the user, but nothing essential for invoking it correctly is missing.
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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline applies. The description correctly avoids inventing arguments and instead spends its words on scope and outcome.
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?
Specific verb + resource: 'Creates a link to Stripe's billing portal', scoped to Pro subscription management (payment card, invoices, billing cycle, cancellation). An agent knows exactly what the tool does. It does not, however, distinguish itself from the sibling start_pro_checkout, which is the nearest competing billing 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?
Usage is implied by the enumerated portal capabilities (card, invoices, billing frequency, cancellation), so an agent can infer this is the 'manage existing subscription' path. But there is no explicit when-to-use vs. when-not, and no routing to start_pro_checkout for the new-subscription case, leaving the primary ambiguity unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overviewAccount overviewARead-onlyInspect
Snapshot of the user's Decknote account: plan and limits, recent boards, what needs attention (overdue and due-today tasks, unread notifications, upcoming reminders), sharing (pending invitations, shared boards, public links, live embeds) and suggested next steps. Useful at the start of a conversation about the user's work.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds meaning by disclosing the data categories returned (overdue/due-today tasks, unread notifications, upcoming reminders, public links, live embeds), which annotations cannot convey. No output schema exists, but the enumeration of return contents compensates well.
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?
Front-loaded with "Snapshot of the user's Decknote account" before the parenthetical enumeration, and capped with a one-line use case. The middle parenthetical is dense but every listed category maps to distinct returned data, so little is 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?
With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly across all five content areas. An agent knows both what it will get back and when to reach for 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?
The tool takes zero parameters, so there is nothing for the description to clarify beyond what the empty schema shows. Baseline of 4 applies for a no-parameter tool.
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?
Names the resource (the user's Decknote account) and enumerates exactly what the snapshot contains — plan/limits, boards, attention items, sharing, next steps. This clearly sets it apart from sibling tools like get_account or list_boards, which return one slice of the same data.
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?
"Useful at the start of a conversation about the user's work" gives a concrete trigger condition. It doesn't explicitly name the alternative aggregate calls it replaces (e.g. list_boards + list_notifications), so it stops short of a full when/when-not routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_invoice_from_workPreview invoice from workARead-onlyInspect
Shows the lines and totals an invoice made from a project's unbilled work would have, without creating anything or taking any hours: finished billable time and billable expenses, grouped per task (default), person, day or one line in total, priced at the rate each entry was logged with (an entry with no rate at all is priced at zero and counted). Only the project owner.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only work up to this day, YYYY-MM-DD. | |
| from | No | Only work from this day on, YYYY-MM-DD. | |
| notes | No | Up to 4000 characters. Default: the profile's default notes. | |
| terms | No | Up to 4000 characters. Default: the profile's payment instructions. | |
| toName | No | Who it is for. Default: the client's name. | |
| boardId | Yes | The project. | |
| dueDate | No | YYYY-MM-DD. Default: the profile's payment terms (invoice) or 30 days (estimate). | |
| groupBy | No | How the work becomes lines. Default task. | |
| toEmail | No | ||
| toTaxId | No | ||
| clientId | No | One of the user's clients; its name, email, address, tax id and currency are copied onto the document. | |
| currency | No | Three-letter code. Default: the client's, else the profile's. | |
| discount | No | A fixed amount off the whole document. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). null clears it. | |
| taxLabel | No | What the tax is called, up to 30 characters. | |
| issueDate | No | The issue date. Default today, YYYY-MM-DD. | |
| toAddress | No | ||
| expenseIds | No | Only these expenses. | |
| taxPercent | No | Tax as a percentage, e.g. 21 or "10,5". Default: the profile's. | |
| includeTime | No | Default true. | |
| taxableTime | No | Whether tax applies to the time lines. Default true. | |
| timeEntryIds | No | Only these time entries (from the unbilled list). | |
| includeExpenses | No | Default true. | |
| taxableExpenses | No | Whether tax applies to the expense lines. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive annotations by disclosing the pricing rule (each entry at its logged rate, zero-rate entries counted at zero), the inclusion criteria (finished billable time and billable expenses), the default grouping, and the owner-only authorization requirement. An agent knows what happens to unpriced entries and who can call it.
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?
Front-loads the core 'preview, does not create' claim and packs useful detail into a single dense sentence. It reads slightly as a run-on with nested parentheses, but 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 23-parameter preview tool with no output schema, the description adequately characterizes the returned content (lines and totals, grouped) and the pricing/authorization behavior. Some parameter-level nuance (date filters, expense/time inclusion flags) is left entirely to the schema, but nothing critical for correct invocation is missing.
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 87%, so the schema already documents nearly all 23 parameters including defaults. The description adds only the groupBy enum values and default, which slightly overlaps the schema field description. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (shows/previews), a specific resource (the lines and totals of an invoice from a project's unbilled work), and explicitly negates the write behavior ('without creating anything or taking any hours'), which cleanly separates it from the sibling create_invoice_from_work.
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 'without creating anything or taking any hours' tells the agent exactly when this preview is appropriate versus the create counterpart, and 'Only the project owner' adds a permission precondition. It stops short of naming create_invoice_from_work as the alternative, so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_time_importPreview time importARead-onlyInspect
Reads a CSV of hours (Toggl, Harvest, Clockify or any CSV with a date and a duration or start and end times) and says what importing it would do, without writing anything: the rows that can be imported and their total time, the clients, projects and tasks that would be created, duplicates of an earlier import that would be skipped, the rows that cannot be read with their row numbers, who the time would be logged as, and whether the free plan's limits block it. Also returns the settings it used (guessed from the headers unless given) and the file's columns. The CSV travels as text, up to 200,000 characters; the Import page of the app takes files up to 8 MB. Names and cells from the file are text written by others.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | The CSV file's text, up to 200,000 characters. A Toggl, Harvest or Clockify export or any CSV with a date column and a duration (or start and end times). | |
| source | No | Which tool exported it. Default: guessed from the columns. | |
| mapping | No | Which column holds each field, as the column's header text or its position (0 is the first). Fields: date, startTime, endDate, endTime, duration, project, client, task, person, firstName, lastName, email, billable, note, rate, currency. Default: guessed from the headers. | |
| fileName | No | The file's name, for the history. Default import.csv. | |
| dateOrder | No | How 03/04/2026 reads when the file does not settle it. Default: month first in English, day first in Spanish. | |
| durationUnit | No | What a bare number in the duration column means. Default auto: hours. | |
| createClients | No | Create the clients named in the file and link the projects to them. Default true. | |
| excludeProjects | No | Projects to leave out, by their key in the preview. | |
| fallbackProject | No | The project for rows that name none. Default "Imported time". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint/destructiveHint false), which only confirm it is a safe read. The description enumerates exactly what the preview returns (importable rows and totals, clients/projects/tasks to be created, skipped duplicates, unreadable rows with numbers, plan-limit blocking, settings used, columns), discloses the 200,000-character input limit versus the 8 MB Import page, and warns that file names/cells are untrusted text written by others.
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?
Front-loads the core action and its no-write guarantee, then layers return content, limits and the trust warning. It is somewhat run-on and includes several return-value items, but each clause carries information — especially given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description covers the critical missing pieces: the shape of the response, the input size ceiling, default-guessing behavior, free-plan blocking, and the prompt-injection caution about CSV-authored text.
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 coverage is 100%, so the schema already documents all nine parameters including defaults, enums and the mapping field list; the baseline is 3. The description adds only marginal semantics ('guessed from the headers unless given') and repeats the size limit, so it does not meaningfully exceed what the schema provides.
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 a specific verb+resource (preview a time-import CSV) and immediately distinguishes itself from the write sibling with 'without writing anything: the rows that can be imported.' An agent can tell this apart from import_time_csv without opening either schema.
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 dry-run framing ('says what importing it would do, without writing anything') strongly implies when to use it — before committing an import. However, it never explicitly names import_time_csv as the commit counterpart or states when/when-not to preview, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
react_to_commentReact to commentADestructiveInspect
Adds or removes the user's emoji reaction on a comment. Emojis: 👍 ❤️ 🎉 😄 👀 🚀.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | Default true (add). false removes it. | |
| emoji | Yes | ||
| commentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description usefully adds that the toggle is scoped to the user's own reaction (not other users'), but says nothing about idempotency, what happens when removing a reaction that doesn't exist, or required permissions.
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, zero filler, and the core add/remove behavior is front-loaded before the enumeration. Nothing is padded or repeated for its own sake.
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 three-parameter tool with annotations and no output schema, the description covers the essential add/remove duality and the allowed value set. Only minor gaps remain, such as return shape and error behavior on removing a non-existent reaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: the `on` flag is documented in the schema and `commentId` is self-explanatory, while the description spends its words re-listing the emoji enum that the schema already enumerates. It adds no meaning beyond the structured fields, so a baseline 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?
States a specific verb pair (adds or removes) and a precise resource (the user's emoji reaction on a comment), which is clearly separable from siblings like add_comment, edit_comment, and delete_comment. An agent can tell what this tool does without opening the schema.
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 the verb but never stated: there is no explicit when-to-use, no mention of the commenting siblings it complements, and no condition that would steer an agent away from it. For a narrow, self-evident tool this is adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_estimate_answerRecord estimate answerADestructiveInspect
Records that the client accepted or declined a sent estimate (by phone or email), with the name of who answered. The estimate leaves the sent state; an accepted one can become an invoice. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Who answered, up to 120 characters. | |
| answer | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The sent estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, and the description adds real behavioral context beyond them: the estimate leaves the 'sent' state, an accepted one can later become an invoice, and confirm=false yields a preview rather than a change. It does not describe permissions or what the preview contains, which keeps it out of the top band.
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 sentences, the core action and its state effect are front-loaded, and the confirm requirement is called out last where it belongs. 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?
For a 4-param mutation tool with no output schema but strong annotation coverage, the description covers the state transition, the preview behavior, and the domain outcome. It leaves minor gaps (permissions, preview contents) but nothing critical to invoking 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?
Schema description coverage is 75%, so the schema already documents 'by', 'confirm', and 'invoiceId' in detail. The description reinforces the confirm-preview semantics and names the accepted/declined values, but adds little beyond what the schema and enum already convey. A baseline 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?
States a specific verb and resource: records a client's accept/decline answer on a sent estimate, with the responder's name. It also hints at the downstream relationship ('an accepted one can become an invoice'), which helps separate it from siblings like convert_estimate_to_invoice. It stops short of naming a sibling directly, so it is clear but not maximally 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?
Gives clear context: the answer is captured from a phone or email response, and it explicitly states the operational requirement ('Needs confirm: true; without it the result is a preview'). It does not name alternative tools or state when NOT to use this one, but the when-to-use context is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_invoice_paymentRecord invoice paymentADestructiveInspect
Records that the client paid, fully or in part, on a sent invoice: the amount, the day (default today, not in the future), the method (bank, card, cash, paypal, other) and a note. It records that the client paid; it does not charge or move money. The invoice becomes paid when the payments cover the total. A payment above the balance needs confirmOverpay. Needs confirm: true; without it the result is a preview with the balance.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | The day it was received. Default today, YYYY-MM-DD. | |
| note | No | Up to 500 characters. | |
| amount | Yes | What the client paid. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. | |
| paymentMethod | No | How it was received. Default other. | |
| confirmOverpay | No | Record it even though it is more than the balance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=true; the description adds substantial behavioral context beyond them, including that it does not move money, that the invoice flips to paid when payments cover the total, that overpayment requires confirmOverpay, and that without confirm:true the call is a preview. This is exactly the mutation-safety detail the annotations cannot 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?
Front-loads the core action, then layers scope, payment-application logic, and confirm semantics in tight sentences with zero filler. 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 destructive mutation with no output schema, the description covers the crucial points: what changes, the confirm gate, and the preview result with the balance. Return details for the success case are only lightly implied, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters, making 3 the baseline. The description adds only a small increment ('day... not in the future') and otherwise restates the amount, method options, and note that the schema already covers.
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 a specific verb and resource ('Records that the client paid... on a sent invoice') and immediately scopes it against payment-processing ('it does not charge or move money'). An agent can distinguish this from create_invoice, send_invoice, or a charge action without opening any schema.
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?
Clear context for recording full or partial payments, plus explicit conditions for confirm:true and confirmOverpay when over the balance. It does not name alternatives like remove_invoice_payment, but the when-to-use and preconditions are well established.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_client_portal_linkRegenerate client portal linkADestructiveInspect
Replaces the secret in a project's client portal link: the old link stops working at once, for anyone who has it, and the new link lets whoever holds it read the portal. The portal's settings, tasks and comments stay. The portal has to exist. Only the project owner. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | The project. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description goes well beyond them: the old link dies instantly for every holder, the new link grants read access to anyone who holds it, and portal settings/tasks/comments are preserved. It also discloses the confirm-gating behavior explicitly.
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?
Four short sentences with no padding, and the most consequential fact (old link immediately breaks for everyone) is front-loaded before the caveats.
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 destructive mutation with no output schema, the description supplies the effect on the old and new link, what survives, the ownership requirement, and the preview-vs-execute flag. An agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description's confirm explanation largely restates the schema. The only added nuance is the ownership constraint tied to boardId, 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 names a precise verb and resource ('Replaces the secret in a project's client portal link') and immediately clarifies the consequence of that action. It is clearly distinguishable from siblings like get_client_portal, update_client_portal, and regenerate_invoice_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?
It states two concrete preconditions: the portal must exist and only the project owner may call it, which tells the agent when the tool is invocable. It does not, however, explicitly contrast this with alternatives such as update_client_portal or set_public_link, so the routing guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_invoice_linkRegenerate invoice linkADestructiveInspect
Replaces the public link of a document with a new one: the old link stops working at once for anyone who has it, and the new one lets anyone who holds it read the document. Not for a voided document. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds the concrete consequence: the old link stops working immediately for anyone holding it, and the new link grants read access to anyone who has it. It also discloses that a missing confirm yields only a preview rather than a change - rich, non-obvious 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?
Three tight sentences with the core action and its effects front-loaded, followed by the exclusion and the prerequisite. 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?
No output schema exists, and the description covers the mutation effect, the irreversibility for the old link, the access implication of the new link, the voided-document exclusion, and the confirm/preview distinction. Nothing an agent needs to call this correctly is missing.
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 coverage is 100%, so both parameters are already documented. The prose restates the confirm semantics rather than adding syntax or format detail beyond the schema, which is the baseline case for well-covered schemas.
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 a specific verb and resource - 'Replaces the public link of a document with a new one' - and immediately characterizes the effect on the old and new links. It does not name the obvious alternative (revoke_invoice_link) or clarify it against regenerate_client_portal_link, so sibling differentiation is left implicit.
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 exclusion ('Not for a voided document') and a hard prerequisite ('Needs confirm: true'), which tells the agent when not to call it and what is required to actually perform it. It stops short of naming the alternative tool for cases where replacement rather than revocation is wrong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_time_offReject time offADestructiveInspect
Rejects a time off an editor of a project the user owns asked for, or one approved before: it no longer lowers that person's capacity. The note is read by the person, who gets a notification. A Pro feature (the team calendar). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Up to 300 characters for the person (why it was rejected). The person and the owners read it. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| timeOffId | Yes | A time off of the user or of an editor of one of the user's projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is covered; the description goes further by disclosing real side effects: capacity is lowered, the person is notified, the note is read by both the person and owners, and a Pro/team-calendar requirement gates the call. It falls short of stating reversibility (whether a rejection can be undone) or what happens on error, which would be needed for a 5.
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, front-loaded with the verb and effect, and each subsequent sentence carries distinct information (side effect, Pro prerequisite, confirm requirement). The opening clause is grammatically tangled ('Rejects a time off an editor of a project the user owns asked for'), costing a bit of readability.
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 three-parameter mutation with no output schema, the description covers the capacity effect, notification behavior, licensing prerequisite, and the confirm-gated preview, which is what an agent needs to call it safely. Missing only the reversibility/undo path and how conflicts with already-processed requests are surfaced.
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 coverage is 100%, so all three parameters including the 300-character note limit and the confirm-preview semantics are already documented in the schema. The description only restates the notify/read-by behavior and the confirm requirement rather than adding format or edge-case detail beyond it, so the baseline of 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?
States a specific verb (rejects) and resource (time off) and narrows scope to requests from an editor of a project the user owns, or already-approved requests. An agent can tell it is a state-changing decision on an existing time off request. It does not name how it differs from adjacent siblings like remove_time_off, update_time_off, or approve_time_off, so the differentiation is inferred rather than 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?
Conveys when the tool applies (pending or previously approved requests) and a critical invocation rule: confirm: true is required or you get a preview. However, it never says when to prefer reject_time_off over remove_time_off or update_time_off, nor does it state what preconditions (e.g. request must still be pending) block the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_timesheetReject a week of hoursADestructiveInspect
Sends back a week of hours a person submitted to the user, or reopens one the user approved: its hours open again for that person, who can change them and submit the week again. The note goes to the person with the notification. Available on every plan. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Up to 500 characters, sent to the person with the notification. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| timesheetId | Yes | A week handed in for approval (the user's own, or one handed to the user). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already present in annotations, the description adds substantial behavioral context: hours are reopened for the person, they can change and resubmit, the note is delivered with the notification, and confirm:true is required or the result is only a preview. No annotation contradiction is 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 front-loaded with purpose and effect, then covers note delivery, plan availability, and confirmation semantics. It is efficient overall, though the note-delivery sentence duplicates schema wording and the first sentence is somewhat dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with full schema coverage, safety annotations, and no output schema, the definition is complete enough: it explains the state change, notification side effect, plan availability, and preview behavior. Nothing critical for correct invocation is missing.
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 coverage is 100%, so the schema already documents timesheetId, note, and confirm. The description restates the note delivery and confirm/preview behavior but does not add syntax or meaning beyond what the schema provides; baseline 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 gives a specific verb and resource: it sends back a submitted week of hours or reopens an approved one. It distinguishes the action from approval implicitly by describing the opposite effect: the hours reopen for the person to change and resubmit.
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 a clear usage scenario: rejecting a week a person submitted to the user, or reopening one the user approved. It does not explicitly name alternatives such as approve_timesheet or withdraw_timesheet, so it stops short of full when-to-use versus-alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_holidayRemove holidayADestructiveInspect
Removes a holiday from the user's calendar: that day counts as a working day again in everybody's capacity. Needs confirm: true; without it the result is a preview. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| holidayId | Yes | A holiday of the user's calendar. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known; the description adds real context on top: the capacity-wide effect of the removal, the preview-vs-apply gate, and the Pro plan requirement. It does not say whether the removal is reversible or how an invalid holidayId is handled, which keeps it off a 5.
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 compact clauses, front-loaded with the action and its effect, then the confirm gate, then the plan requirement. No filler or restatement of the title.
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, but the description explains that a preview is returned when confirm is absent, so the agent knows what to expect. For a two-parameter destructive mutation with full annotations, this is nearly complete; only reversibility/error behavior is left implicit.
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 coverage is 100%, so both parameters are already documented. The description still reinforces the confirm semantics ('without it the result is a preview') and frames holidayId as a holiday of the user's calendar, adding modest but genuine meaning over the schema text.
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 a specific verb and resource ('Removes a holiday') and goes further by explaining the domain consequence: the day counts as a working day again in everybody's capacity. That distinguishes it cleanly from add_holiday and list_holidays without needing the schema.
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?
Gives the operative call condition clearly: 'Needs confirm: true; without it the result is a preview.' It does not explicitly name an alternative tool or state when not to use it, but the usage context (undo a holiday on the user's calendar) is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_invoice_paymentRemove invoice paymentADestructiveInspect
Deletes a recorded payment from an invoice, as if it had not been written down; a paid invoice that is no longer covered goes back to sent. It undoes a note in the books; no money moves. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| paymentId | Yes | A payment of one of the user's invoices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation: it discloses the state transition (paid invoice returns to sent), that no money moves (no refund implications), and the confirm/preview behavior. Rich behavioral context for a mutation.
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 clauses front-load the core action and consequence, then the confirm requirement. Every sentence earns its place with 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?
For a destructive mutation with no output schema, it covers the effect, the state change, the no-money-movement clarification, and the safety gate. An agent has everything needed to call 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?
Schema coverage is 100%, so the schema already documents both paymentId and the confirm preview semantics. The description restates the confirm behavior but adds no syntax or meaning beyond the schema, so baseline 3 is correct.
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?
Specific verb+resource: "Deletes a recorded payment from an invoice," and it clarifies the scope (reverses a bookkeeping note, not a money movement). This clearly distinguishes it from record_invoice_payment, void_invoice, and delete_expense.
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?
Explains the scenario (undoing a recorded payment so a paid invoice reverts to sent) and the confirm:true requirement. It stops short of naming an explicit alternative tool for a related need, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove memberADestructiveInspect
Removes someone from a board the user owns: they lose access, and their assignments, watches and reactions on it are removed (their comments stay). Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| boardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes well beyond them by enumerating exactly what is destroyed (access, assignments, watches, reactions) and what is preserved (comments). It also discloses the safe-preview mode when confirm is absent, which is precisely the kind of behavioral context an agent needs before a destructive call.
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 compact sentences with the effects front-loaded and the confirm/preview rule second; no filler, no restatement of the title, and every clause carries information the agent needs.
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 three-parameter destructive mutation with no output schema, the description covers effects, side effects, and the preview return behavior adequately. It omits error/edge cases (e.g., what happens when the user is not a member), which keeps it short of 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 coverage is 33% (only confirm is documented), and the description repeats the schema's preview wording rather than adding new syntax. boardId and userId are self-describing names, and the 'board the user owns' note implies required ownership of boardId, so the gap is modest but real.
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 a specific verb and resource ('Removes someone from a board') and scopes it with a precondition ('the user owns'), which helps separate it from siblings like leave_board (self-removal) and revoke_access. It does not explicitly name or rule out any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition (only for boards the user owns) and a required invocation mode ('Needs confirm: true'), which prevents accidental mutation. It does not say when to prefer a different tool or what happens if the target is not a member, so no exclusion guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_reminderRemove reminderCDestructiveInspect
Deletes one of the user's reminders.
| Name | Required | Description | Default |
|---|---|---|---|
| reminderId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is conveyed structurally. The description adds nothing beyond that: no note on irreversibility, confirmation, or whether removing a reminder affects the underlying task or due date.
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 short sentence with the verb and resource front-loaded and no filler. It is efficient but arguably too sparse to earn a top score given the gaps it leaves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, irreversible operation with no output schema and one fully undocumented parameter, the description omits critical context: whether action is recoverable and how to source the reminderId. It is not adequate 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?
Schema coverage is 0% for the single required reminderId parameter, so the description must compensate and does not. It gives no hint about ID format or where to obtain a valid reminderId, leaving the parameter entirely opaque.
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 a specific verb (Deletes) and resource (reminders) scoped to the user's own reminders. It distinguishes itself from the many delete_* siblings by resource, but never explicitly contrasts with add_reminder/list_reminders or explains any nuance beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, nor any prerequisite such as needing a reminderId from list_reminders. The agent must infer the workflow entirely from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_time_offRemove time offADestructiveInspect
Deletes a time off (the user's own, or on Pro one of an editor of the user's projects): those days count as working days again in the Workload. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| timeOffId | Yes | A time off of the user or of an editor of one of the user's projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: the downstream effect (those days count as working days again in the Workload) and the confirm gate with a preview fallback for any non-true value. That tells the agent the blast radius and the safe dry-run pattern, which destructiveHint alone does 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?
A single compact sentence that front-loads the action, then the effect, then the required flag. No filler or repetition of the title.
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 2-parameter destructive tool with no output schema, it covers everything an agent needs: what gets removed, whose record it can be, the system consequence, and the mandatory confirm semantics including the preview outcome.
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 coverage is 100%, so baseline is 3; the description still adds meaning by framing confirm as a safety interlock (preview vs. commit) rather than a plain boolean, and by restating the entitlement scope of timeOffId.
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 a specific verb (Deletes) and resource (a time off), and scopes whose time off can be removed (the user's own, or on Pro an editor's). It doesn't explicitly name the closest sibling (update_time_off / delete_time_entry), but the destructive verb makes the distinction reasonably self-evident.
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?
Gives the operative condition — call with confirm: true to actually delete; without it you only get a preview — which effectively tells an agent both when to call and how to probe safely first. It does not mention alternatives such as update_time_off for modification instead of deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_attachmentRename attachmentBDestructiveInspect
Renames an attachment; a file keeps its extension.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| attachmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered structurally. The description adds one genuine behavioral nuance — that the file extension is preserved on rename — but does not state that the previous name is discarded or what authorization is required.
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 compact sentence with the core action front-loaded. The extension clause earns its place, though the semicolon phrasing is slightly awkward rather than maximally crisp.
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 rename with no output schema, the description is minimally adequate, given annotations already convey the destructive nature. It omits any return-value expectation and any identifier semantics, leaving notable gaps for the required attachmentId.
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 both parameters. The clause 'a file keeps its extension' weakly clarifies that `name` is the new name and that the extension is retained, but the required `attachmentId` is left entirely undefined by both schema and 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 names a specific verb and resource ('Renames an attachment'), which is unambiguous and distinct from add_attachment and delete_attachment. It stops short of any explicit sibling differentiation, but the operation is clearly identifiable.
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?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no mention of the related rename/update surface (e.g., update_task). Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_project_templateRename project templateADestructiveInspect
Changes the name and description of a saved template (also one that is damaged and cannot be used). The description is cleared when not given.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Up to 100 characters. | |
| templateId | Yes | A saved template of the user. | |
| description | No | Up to 300 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already declared, the description adds real value by explaining the destructive mechanism: the description field is cleared when omitted, so callers know a rename can silently wipe existing description text. It also discloses that damaged templates are accepted. It does not cover permission requirements or behavior on an invalid templateId.
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, zero filler, with the core action front-loaded and the destructive side effect immediately following. 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 3-parameter mutation with full schema coverage, no output schema, and annotations covering the safety profile, the description supplies the one non-obvious behavior (implicit clearing of description). Minor omissions remain, such as handling of an unknown templateId or shared/multi-user templates.
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 coverage is 100%, so the baseline is 3, but the description adds a semantic rule the schema lacks: omitting 'description' clears it rather than leaving it unchanged. That is a crucial parameter behavior (and optionality implication) not derivable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action (changing the name and description) on a specific resource (a saved project template), which cleanly differentiates it from save_project_as_template, delete_project_template, and list_project_templates. It does not explicitly name or contrast with any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over siblings such as save_project_as_template or the various update_* tools. The only contextual hint is that damaged/unusable templates can also be renamed, which is an edge case rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_taskReopen taskCDestructiveInspect
Marks a completed task as not done again.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, which is the key safety signal for a state-mutating tool. The description adds nothing beyond the name: it doesn't disclose whether completion dates, checklists, or activity entries are affected, what happens if the task isn't completed, or whether the action is reversible.
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 short sentence with no filler, front-loaded with the verb and the target. It is lean, though leaner than the tool's semantics warrant.
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 an undocumented required parameter, no output schema, and side effects implied by destructiveHint=true, the description should explain the resulting task state and any preconditions. It covers only the bare state flip.
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 sole parameter cardId is undocumented in both the schema and the description. The description offers no meaning, format, or example for it, leaving the agent to guess what identifier is expected.
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 a specific verb+resource+state transition: a 'completed task' becomes 'not done again'. The mention of 'completed' implicitly distinguishes it from its inverse sibling complete_task, but it never names that sibling or any constraint.
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 when-to-use guidance, no prerequisites (e.g., the task must currently be completed), and no reference to the obvious alternative complete_task. The agent must infer the usage context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_clientReply to clientADestructiveInspect
Posts an answer from the team under a task on the client portal, shown to anyone who has the portal link under the studio name (not the user's own name) and marking the client's comments on that task as read. It is not emailed. Up to 2000 characters. The portal has to exist. Only the project owner. Needs confirm: true; without it the result is a preview with the exact text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The answer, up to 2000 characters. | |
| cardId | Yes | The task. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already covering readOnly/destructive/openWorld, the description adds substantial behavior: visibility to anyone with the portal link, attribution under the studio name rather than the user, side effect of marking client comments read, no email, and the confirm-gated preview. This is exactly the extra context annotations cannot 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?
Telegraphic but front-loaded and free of filler; each sentence carries a distinct fact (visibility, non-email, length, portal existence, owner restriction, confirm). The clipped style is dense rather than padded.
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 confirm-gated mutation tool with full schema coverage and annotations, the description covers prerequisites, side effects, and the preview behavior. Nothing an agent needs to call it safely is missing.
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 coverage is 100%, so cardId, text, and confirm are already documented, and the description largely restates the 2000-character limit and confirm:true semantics. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (posts) and resource (answer under a task on the client portal) with scope. It clearly distinguishes itself from sibling comment tools by specifying the client-facing portal, studio-name attribution, and that it is not emailed.
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?
Gives clear preconditions and context: portal must exist, only the project owner, and confirm:true is required. It stops short of naming an explicit alternative (e.g. add_comment for internal replies vs reply_to_client), so the when-to-use routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reprice_timeApply today's rates and costs to logged hoursADestructiveInspect
A rate or a cost is frozen on each hour when it is logged, so one set today does not reach last month's hours. This gives the hours logged on or after from (not invoiced, not running, not on a closed day) the rate and cost a new hour would get now: only the empty ones unless overwrite is true, and it does not clear a value. It changes numbers in the user's reports, so it needs confirm: true; without it the result is a preview with the counts. Only the user's own projects and team. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The first day to re-price as YYYY-MM-DD. | |
| userId | No | Only this person's hours. | |
| boardId | No | Only this project (one the user owns). | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| overwrite | No | Also replace rates and costs that are already there. Default false: only fill the empty ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description adds exactly the right context on top: which entries are skipped, that existing values are not cleared, that overwrite is required to replace populated fields, that it mutates report numbers, and that omitting confirm yields a non-mutating preview with counts. It also discloses the Pro-plan and ownership boundary.
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?
Front-loaded with the key mental model (rates freeze at log time) followed by scope, then the safety gate, then access limits. Dense but nearly every clause carries a fact; the sentences are long and could be split for scanability.
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 5-parameter destructive mutation with no output schema, the description covers scope, side effects, preview behavior, and entitlement. The main omission is what the actual (non-preview) run returns versus the preview counts, which the agent must infer.
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 coverage is 100% and each parameter is documented, but the description still adds meaning: `from` defines the retroactive window rather than a single day, `overwrite` is explicitly contrasted with 'does not clear a value', and `confirm` is framed as preview-vs-apply rather than a mere boolean. It doesn't clarify how userId and boardId compose (AND vs. override).
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 on a specific resource: applying today's rate/cost to hours already logged on or after `from`. The 'frozen at log time' framing makes clear this is a bulk retroactive re-pricing pass rather than a rate-setting tool like set_member_rate or set_team_rate, though no sibling is named explicitly.
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 gives concrete inclusion/exclusion rules: hours on or after `from` that are not invoiced, not running, not on a closed day, and only empty values unless overwrite is true. It also states the confirm: true precondition and that it is a Pro feature limited to the user's own projects/team. It stops short of naming an alternative for single-entry corrections (e.g. update_time_entry).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_boardRestore boardADestructiveInspect
Restores an archived board the user owns to everyone's dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds genuinely useful scope information beyond that: restoration makes the board visible on everyone's dashboard, not just the owner's. It still omits failure behavior for boards that are not archived or not owned.
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?
One sentence, front-loaded with the verb and effect, and every clause carries information (what is restored, prerequisite, visibility consequence). No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema and no nested objects, the description covers the effect and the ownership prerequisite, and annotations cover the destructive profile. Minor gaps remain around non-archived boards and permission failures, but nothing essential is missing.
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 coverage is 0% for the single boardId parameter, so the description must compensate. It contributes the ownership constraint ('the user owns') and the archived-state constraint, but adds no format or identification guidance beyond that, leaving partial compensation only.
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 a specific verb (restores) and resource (archived board) plus the ownership precondition, which cleanly distinguishes it from the inverse archive_board and from delete_board. It does not name a sibling explicitly, so it falls just short of the top band.
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 'archived board' (use this to undo an archive), but there is no explicit when-to-use/when-not or guidance on alternatives such as duplicate_board or get_board if the board is not archived. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_clientRestore clientADestructiveInspect
Brings an archived client back to the active list. The free plan's limit of 2 active clients applies.
| Name | Required | Description | Default |
|---|---|---|---|
| clientId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered by structured data. The description adds genuine context beyond those annotations: a plan-based cap on active clients that can cause the call to fail. It does not describe auth requirements or exact failure behavior, keeping it out of 5 territory.
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-loaded with the action and followed by the operative constraint. No filler, nothing to trim.
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 restore tool with no output schema and annotations covering the safety profile, the description covers purpose and the key business constraint. What is missing is failure/limit-exceeded behavior and any note on the target identifier, which are minor for a 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?
Schema description coverage is 0% and the single required parameter clientId is never mentioned or explained in the description. The name is largely self-evident, but with no schema coverage the description was obliged to compensate and does not, so it provides no added parameter 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 names a specific verb-action and resource: bringing an archived client back to the active list, which is unambiguous about the operation and clearly the inverse of archive_client in the sibling set. It stops short of explicitly naming the sibling it contrasts with, so it clears the bar without earning a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied (a client is archived and must be reactivated), and the description adds a real precondition via the free-plan limit of 2 active clients. There is no explicit when-not guidance or named alternative such as add_attachment-style routing, so guidance remains implied rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_taskRestore taskCDestructiveInspect
Puts an archived task back on its list.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description does not reconcile this with a seemingly lossless restore operation. It does not disclose whether the archived task state, list position, or other data is changed or lost. With annotations present, the description should add context, but here it adds very little.
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?
One short, front-loaded sentence with no wasted words. It is concise but too sparse to be fully useful.
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, zero parameter documentation, and no annotations explaining behavior, the description is too thin. It omits preconditions, side effects, and return behavior.
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 cardId, its format, or what happens if the task is not archived. The single parameter is left entirely undocumented.
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 a specific verb (restore) and resource (archived task), and implies scope by saying it returns the task to its list. It is reasonably distinguishable from archive_task and delete_task but does not name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus reopen_task, archive_task, or delete_task. The description implies the task must be archived but never states this precondition explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_accessRevoke accessADestructiveInspect
Revokes one of the user's API tokens (apiTokenId) or disconnects a connected app (appClientId), as listed in the account. Whatever used it stops working at once, including this connection if it is the one in use. Needs confirm: true; without it the result is a preview. New tokens are only created by the user, in Settings.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| apiTokenId | No | ||
| appClientId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation: it discloses immediate effect ('stops working at once'), the self-destruction risk ('including this connection if it is the one in use'), and that omitting confirm yields a preview rather than a mutation. These are exactly the behavioral traits an agent needs before an irreversible action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and its two targets, then layers the destructive consequence, the confirm gate, and the token-creation note. Every sentence carries weight, though the confirm behavior is restated from the schema description.
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 or rich annotations, the description carries the burden well by covering effects, the preview/confirm mechanism, and the self-revocation caveat. The main omission is the relationship/format of the two ID 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?
Schema coverage is only 33% (only confirm is documented), so the description must compensate. It does clarify that apiTokenId targets an API token and appClientId targets a connected app, but it gives no format, sourcing, or mutual-exclusivity guidance for these two IDs, leaving the gap only partly closed.
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 a specific verb (revokes/disconnects) and the exact resources involved (API token via apiTokenId, connected app via appClientId). No sibling tool overlaps with credential/app revocation, so it is clearly distinguishable.
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?
Explains the two revocation modes and the confirm:true requirement, and the closing line that new tokens are only created in Settings steers the agent away from misusing this for creation. It does not explicitly name an alternative tool, but no sibling competes for this job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_embedRevoke embedADestructiveInspect
Turns off one of a board's embeds: the app showing it loses access at its next request. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| embedId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so safety is covered. The description adds real behavioral value beyond them: the embed is turned off lazily (access lost at the next request, not immediately) and the confirm:true gate with a preview fallback. Auth/permission and reversibility details are still unstated.
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, front-loaded with the action and effect, with no wasted wording. It loses a point only because the confirm/preview sentence largely duplicates the schema's own description of the confirm parameter.
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 destructive mutation with no output schema, the combination of annotations (destructive, not read-only) and the description (lazy revocation, confirm gate, preview behavior) gives an agent enough to call it safely. Minor gaps around permissions/scope of the affected app 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?
Schema description coverage is 50%: confirm is fully documented in the schema, embedId is not. The description restates the confirm requirement ("Needs confirm: true; without it the result is a preview") rather than adding new meaning, and says nothing extra about embedId. Baseline 3 fits since the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ("Turns off one of a board's embeds") and even the consequence, so an agent immediately knows the action. It does not, however, distinguish this from the sibling revoke_access, which could plausibly be confused with revoking embed access.
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?
There is implied usage – you call this to disable an existing embed, and the confirm:true gate is explained – but no explicit when-to-use vs alternatives (e.g., revoke_access vs revoke_embed, or how this relates to list_embeds/create_embed). Guidance is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_invoice_linkRevoke invoice linkADestructiveInspect
Turns a document's public link off: the client can no longer open the document until a new link is made. The document itself is unchanged. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true. The description adds valuable context beyond annotations: the client can no longer open the document, the document itself is unchanged, and without confirm=true the result is only a preview. It does not contradict annotations and meaningfully clarifies the destructive effect.
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, front-loaded with the main effect, then the key caveat that the document is unchanged, then the confirm requirement. Every sentence earns its place 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?
Given no output schema and rich annotations, the description is nearly complete: it explains the action, its effect, and the confirm-preview behavior. It could be slightly more complete by mentioning authentication or rate limits, but for a simple two-parameter tool it covers what an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description repeats the confirm behavior already documented in the schema and adds no additional meaning to invoiceId beyond what the schema provides.
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 effect: it turns a document's public link off so the client can no longer open it, and clarifies the document itself is unchanged. This distinguishes it from deletion tools, but it does not explicitly differentiate from siblings like regenerate_invoice_link or revoke_access.
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 gives clear context for the confirm parameter (true performs the action, otherwise a preview), but does not say when to use this tool versus alternatives such as regenerate_invoice_link or set_public_link. Usage is implied by the purpose but no explicit alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_project_as_templateSave project as templateADestructiveInspect
Saves a project's shape as a template: its lists, open tasks (title, estimate, billable, labels, checklists with the items unticked, due dates as days from the start), labels and billable default. Its people, comments, logged time, descriptions, attachments and client are left out. The budget and the hourly rate are saved only with includeMoney. Only the project owner. The free plan keeps 1 saved template; Pro has no limit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Up to 100 characters. | |
| boardId | Yes | The project. | |
| description | No | Up to 300 characters. | |
| includeMoney | No | Keep the budget and the hourly rate. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: precisely which data is persisted vs. left out, the owner-only requirement, and the plan-based quota — all non-obvious operational facts.
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 dense paragraph that front-loads the core action before listing inclusions, exclusions, and constraints. Efficient, though the enumeration of excluded fields is long; every clause still carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers persistence scope, side-effect exclusions, permissions, and quota limits, which is what an agent needs to call it correctly. It omits what the response returns, but that gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented. The description restates the includeMoney effect (budget and hourly rate) which the schema also states, adding little new semantics for the parameters themselves. 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?
States a specific verb+resource ('Saves a project's shape as a template') and goes on to enumerate exactly what the template captures. An agent can distinguish this from create_project_from_template, save_task_as_template, and rename_project_template purely from the text.
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 concrete gating conditions — 'Only the project owner' and the free/Pro template limit (1 vs unlimited) — which tell the agent whether the call can succeed. It does not explicitly contrast when to prefer this over create_project_from_template, 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.
save_task_as_templateSave task as templateBDestructiveInspect
Saves a task's description and labels as a reusable card template on its board.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| cardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this mutates state. The description adds the useful scope detail that only the description and labels are captured, but it never explains the destructive side – whether the task itself is altered, whether existing templates are overwritten, or whether a name collision fails.
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 front-loaded sentence with no filler; the scope of what is saved comes first and nothing is repeated.
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 two required, entirely undocumented parameters, no output schema, and a destructive mutation, the description leaves too much unstated: what name means, whether the saved template is durable or overwrites anything, and what the caller gets back. It is underspecified 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?
Schema description coverage is 0%, so the description must carry both parameters. It instead describes the task's description and labels, which are not parameters at all; cardId (which task) and name (the template's name, uniqueness, length limits) are never explained.
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?
Names a specific verb (saves ... as a reusable card template) and resource (a task's description and labels plus the board it lives on), and even specifies what content is captured. It is clear what the tool produces, though it does not name the related siblings create_task_from_template or delete_card_template to sharpen the boundary.
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 statement of when to use this versus creating a task from a template, deleting a template, or simply duplicating a task. The agent gets no preconditions, no exclusions, and no alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch cardsARead-onlyInspect
Searches the open and completed cards of every board the user can access by text in title and description. Returns card ids, titles (with the board) and links.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to look for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine value by disclosing the return payload (card ids, titles with board, links), which matters because no output schema exists. It omits result limits, pagination, and match semantics, keeping it from a 5.
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, zero filler, with the search scope front-loaded before the return-value summary. 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 single-parameter read tool with annotations covering safety and no output schema, the description is nearly self-sufficient: it covers scope, match fields, and return shape. Only pagination/result-cap behavior and differentiation from search_tasks are missing.
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 coverage is 100% and the schema only says 'What to look for.', so the description meaningfully extends it by specifying that the query matches text in card title and description. That is real added semantics beyond the schema's vague phrasing.
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 a specific verb (searches) and resource (cards), and pins the scope precisely: open and completed cards across every board the user can access, matching text in title and description. It falls short of 5 because it never distinguishes itself from the very similar sibling search_tasks, leaving the agent to guess which search tool applies.
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 says what is searched but not when to choose this tool over search_tasks or list_my_tasks, and lists no prerequisites or exclusions. Scope information is present, but there is no explicit when-to-use guidance and no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tasksSearch tasksARead-onlyInspect
Searches the user's tasks (cards) across boards by free text in title and description, and by board, list, status (open, completed, all or archived) and due date. Answers questions like what is still open, what was noted about something, or what is due soon.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, 1–100. Default 20. | |
| query | No | Free text; matches card title and description. | |
| listId | No | ||
| status | No | Default 'open'. 'archived' finds archived tasks. | |
| boardId | No | ||
| include | No | Extra fields on each task. 'location' adds the names of its board (board) and list (list). | |
| dueBefore | No | ISO 8601; only tasks due before this instant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds search scope and filter semantics but does not disclose return behavior such as pagination, result ordering, default limits, or empty-result handling. The added context is useful but limited 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 two sentences and front-loads the core purpose before adding usage examples. Every clause earns its place by specifying the search dimensions or answering what questions the tool can resolve.
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 seven optional parameters, no output schema, and annotations that cover safety, the description covers the main search inputs and use cases well. It omits minor operational details such as the default limit and pagination behavior, but those are either in the schema or less critical for selecting 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 coverage is 71%, and the description adds meaning for key filters: 'free text in title and description', 'by board, list, status (open, completed, all or archived) and due date'. This compensates for the undescribed boardId and listId parameters. It does not discuss limit or include, but those are documented 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 gives a specific verb and resource: 'Searches the user's tasks (cards) across boards'. It also enumerates the search dimensions (free text, board, list, status, due date). It does not explicitly name a sibling tool or explain how it differs from `search` or `list_my_tasks`, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context through examples: 'Answers questions like what is still open, what was noted about something, or what is due soon.' This tells an agent when the tool is appropriate. However, it does not name alternatives or state 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.
send_invoiceSend invoiceADestructiveInspect
Marks a draft as sent, gives it the next number and publishes its link: anyone who has the link can read the document (lines, amounts, the user's business details), and for an estimate answer it. Nothing is emailed. After that only the notes and the due date change. The draft needs a client name, at least one line and a total above zero. Needs confirm: true and amount equal to the total; without them the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | The document's total in the currency's main unit, repeated from the preview (e.g. 220 or "220.00"). Must equal the total or nothing is done. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Substantially exceeds the annotations: it discloses that a public link is published and anyone with it can read lines, amounts and business details, that nothing is emailed, that for an estimate it answers, and that only notes and due date remain editable afterward. This is exactly the mutation/public-exposure context destructiveHint+openWorldHint only hint at.
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?
Dense colon-separated clauses but front-loaded with the core action first, then effects, then preconditions. Slightly run-on but every sentence carries distinct information; nothing is 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 3-param mutation tool with no output schema, the description covers preconditions, side effects, the preview fallback result, and post-conditions, which is everything an agent needs to call 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?
Schema coverage is already 100%, so baseline is 3, but the description adds the interplay semantics: confirm must be the boolean true and amount must equal the total or nothing happens (preview otherwise). That reinforces the fields with behavioral meaning beyond their schema text.
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 a precise verb and resource ('marks a draft as sent, gives it the next number and publishes its link') and contrasts with the obvious sibling behaviors: 'Nothing is emailed' rules out email_invoice, and 'After that only the notes and the due date change' bounds it against update_invoice.
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?
Gives clear preconditions (client name, at least one line, total above zero) and the confirm:true + amount requirement, plus the fallback that without them the result is a preview. It implies alternatives ('Nothing is emailed') but never explicitly routes to email_invoice or preview_invoice_from_work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_automation_enabledEnable or disable automationBDestructiveInspect
Turns a board rule on or off without deleting it.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| automationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=false), so the bar is lower. The description adds one genuinely useful fact beyond them: toggling preserves the rule rather than removing it. It does not explain what disabling a rule affects, whether the change is immediate or reversible, or what permissions are required.
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 efficiently front-loaded sentence with zero filler; the non-destructive constraint is the headline point. It is arguably too terse for the information it needs to carry, but nothing written is 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?
For a simple two-required-parameter toggle with informative annotations and no output schema, the description is close to sufficient, but it omits parameter meaning and any error/permission context, leaving gaps that annotations do not fill.
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 carries the full burden and fails to mention either parameter. It never states that 'enabled' is the boolean target state or what form an 'automationId' takes (opaque ID from list/get calls), leaving an agent to infer semantics from bare property 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 gives a specific verb pair (turn on/off) and resource ('board rule'), and the clause 'without deleting it' implicitly separates it from delete_automation and create_automation in the sibling list. The only weakness is terminology drift between 'board rule' and the tool's own 'automation' naming, which could momentarily confuse an agent scanning for automation 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?
Usage is only implied: the phrase 'without deleting it' hints that this is the non-destructive alternative to delete_automation, but the description never states when to toggle versus recreate a rule, nor what prerequisites (ownership, board access) are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_board_preferencesSet board preferencesADestructiveInspect
Sets the user's own preferences for a board: favorite (starred) and muted (no notifications from it). Affects only the user.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | No | ||
| boardId | Yes | ||
| favorite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=true, so the safety profile is carried structurally. The description adds real context the annotations lack: the per-user scope and the meaning of the two flags. It does not address the surprising destructiveHint, nor whether unset flags are left unchanged or whether the change is reversible.
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?
One sentence, front-loaded with the action and resource, then the two flags and the scope. No filler, nothing that needs to be read twice.
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?
No output schema and no return-value burden, and the core semantics are covered. However, for a mutation tool the description omits whether unspecified flags remain unchanged, whether boardId must be valid/accessible, and what the call returns, leaving gaps an agent must guess at.
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 defines 'favorite (starred)' and 'muted (no notifications)' but leaves boardId unexplained and never says which parameters are optional or how omitted ones behave. Partial compensation for a 3-parameter tool.
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 a specific verb (Sets) plus resource (board preferences) and immediately scopes it as the user's own, which separates it from update_board (board-wide settings) and watch_task. An agent can route correctly without opening the schema.
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 'Affects only the user' implies this is a personal-view operation rather than a board mutation, but no alternative is named and no when/when-not condition is given. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_member_rateSet a person's rate on a projectADestructiveInspect
Sets what one person is billed at on one project the user owns, over the project's, the client's and their default. null goes back to those. It applies to hours logged from then on. The person must be able to log time there. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | A person on the user's team. | |
| boardId | Yes | The project. | |
| hourlyRate | Yes | In the currency's main unit: 85, "85.50", "1.250,50". null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it discloses the precedence it overrides, that null reverts to the fallback chain, and that the change is forward-looking only (not retroactive on already-logged hours). That is substantive mutation context. It stops short of saying whether an invalid rate or non-logging member produces an error versus silent no-op.
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?
Five very short sentences, front-loaded with the core action, then fallback behavior, temporal scope, prerequisite, and plan requirement. No filler, and each clause carries decision-relevant 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 3-parameter mutation with a destructiveHint annotation and full schema coverage, the description covers effect scope, reset semantics, prerequisites, and plan gating. Only the error/failure surface is missing, which is minor given no 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 coverage is 100%, so baseline is 3, and the description earns an extra point by explaining the semantic relationship of hourlyRate to project/client/member defaults and restating that null clears the override back to them. The currency-format examples live in the schema and need not be repeated.
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 a precise verb and resource with scope: it sets what ONE person is billed at on ONE project, which implicitly separates it from team-wide rates (set_team_rate) and from rate lookups (get_member_rates). The fallback chain ('over the project's, the client's and their default') further nails down what the value means.
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 gives real preconditions — the person must be able to log time on the project, and it is a Pro feature — but never names an alternative or an exclusion. It says the new rate 'applies to hours logged from then on', which hints that a different tool handles retroactive repricing (reprice_time), yet that inference is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_my_weekly_capacitySet my weekly capacityADestructiveInspect
Sets how many hours a week the user can work, which the workload view compares their planned work with: 40, 37.5 or 37:30; 0 for someone who is away, at most 168. Only the user's own: there is no way to set another person's.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | Yes | Hours a week, e.g. 40 or "37:30". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the overwrite semantics are partly conveyed structurally. The description adds scope ('only the user's own') and bounds (at most 168), but does not state that it replaces any prior capacity, whether the change is reversible, or auth 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?
A single dense sentence with the core action front-loaded and constraints following; 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 one-parameter tool whose annotations already cover the safety profile, the description supplies scope, valid values and limits. No output schema exists so return-value explanation is not required; only minor gaps like invalid-input behavior 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?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: canonical example values (40, 37.5, 37:30), the special case 0 meaning away, and the upper bound of 168. This enriches the single 'hours' parameter meaningfully.
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 a precise verb+resource: setting the user's own weekly capacity hours, and explains its downstream purpose (comparison against planned work in the workload view). The line 'Only the user's own: there is no way to set another person's' effectively carves it out from team/member-management siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides value-context guidance ('0 for someone who is away, at most 168') that helps an agent pick an appropriate input, and ties the field to the workload view. However, it never states when to call this versus alternatives such as update_member, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_archivedSet page archivedADestructiveInspect
Archives a page (it leaves the list, becomes read-only and loses its pin) or restores it. Only the project owner.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page (a note or a discussion). | |
| archived | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and destructive, so the safety profile is covered. The description adds real value beyond that: archiving removes the page from the list, makes it read-only, and drops its pin, and it discloses the owner-only restriction.
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 compact sentences with the core behavior front-loaded and the authorization note last. 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?
No output schema exists, but the description needn't explain returns. It covers intent, side effects, and permission scope; only the explicit true/false parameter mapping is missing for a two-parameter toggle 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 coverage is 50%: pageId is documented as 'a note or a discussion' but the archived boolean has no schema description. The toggle wording ('archives... or restores it') implicitly maps archived=true/false, but this mapping is never stated explicitly.
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 a specific verb pair (archives/restores) and resource (page), plus the concrete effects of archiving. An agent can distinguish this from delete_page or update_page by the reversible state toggle, though no sibling is named explicitly.
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?
'Only the project owner' gives an authorization precondition, which is useful context. However, it does not state when to prefer archiving over deleting (delete_page) or how it relates to set_page_pinned, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_pinnedSet page pinnedADestructiveInspect
Pins a page to the top of its list, or unpins it. Only the project owner; an archived page cannot be pinned.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page (a note or a discussion). | |
| pinned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true; the description adds non-schema behavior: the ownership requirement and the archived-page preclusion, plus the toggle semantics. It could go further on how to un-pin or what a permission failure looks like, but it meaningfully extends 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 short sentences: the action first, then the constraints. No filler and nothing buried.
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 toggle with no output schema and annotations covering the mutation profile, the description supplies the key preconditions (owner-only, non-archived). Minor remaining gaps, such as the effect of un-pinning or error behavior, are low-impact.
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 coverage is 50% — pageId is documented ('a note or a discussion') but the boolean 'pinned' has no schema description. The description conveys its meaning via 'pins ... or unpins it', which is adequate but adds little beyond the toggle framing.
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 a specific verb and resource ('Pins a page to the top of its list, or unpins it') and implicitly distinguishes this from sibling page tools such as set_page_archived or update_page by naming the exact state change it performs.
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?
Gives clear usage conditions — 'Only the project owner' and 'an archived page cannot be pinned' — which tell the agent when the call will be rejected. It does not name an alternative tool for the archived case, so it falls short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_public_linkSet public linkADestructiveInspect
Turns a board's public read-only link on or off, or issues a new one so the old one stops working. Anyone with the link can view the board without an account. Owner only. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| enabled | Yes | ||
| regenerate | No | Issue a new link, so the old one stops working. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: it discloses the exact destruction semantics ('issues a new one so the old one stops working'), the exposure surface ('Anyone with the link can view the board without an account'), the permission requirement (owner only), and the dry-run gate (confirm creates a preview). These map precisely onto the destructiveHint and openWorldHint flags rather than merely restating 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?
Three tight sentences, front-loaded with the primary action before the caveats. Every sentence carries distinct information: action, exposure, authorization, and the confirm gate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world mutation with no output schema, the description covers authorization, destruction, exposure, and the confirmation preview. An agent has everything needed to call it safely; only return-value detail is absent, which is acceptable given no output schema exists.
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 coverage is 50% (confirm and regenerate documented; boardId and enabled not). The description compensates meaningfully by explaining the confirm preview gate and the regenerate effect, and 'on or off' clarifies enabled. boardId remains self-evident, so the gap is minor.
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 a specific verb and resource ('Turns a board's public read-only link on or off, or issues a new one') with the regeneration behavior called out explicitly. This is clearly distinct from generic board mutation siblings and from share_board/revoke_access because it targets the public read-only link 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?
Gives concrete prerequisites and conditions: 'Owner only' and 'Needs confirm: true; without it the result is a preview.' It does not explicitly route the agent to or away from the share_board/revoke_access siblings, so it stops short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_assigneesSet task assigneesADestructiveInspect
Assigns or unassigns board members on a task. Assigning someone other than the user sends them a push and an email, as in the app, so it needs confirm: true and returns a preview without it; self-assigning and unassigning don't.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | ||
| cardId | Yes | ||
| remove | No | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, destructive=true, openWorld=true) by disclosing the concrete side effect: a push and email are sent to the assigned member, mirroring in-app behavior. It also explains the confirm/preview mechanic and the self-assign/unassign exception, giving the agent a precise picture of consequences before acting.
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 that lead with the core action and then layer the important behavioral conditions. The second sentence is dense and slightly run-on with multiple clauses, but no sentence is 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?
For a destructive, open-world mutation with no output schema, the description covers the key concerns: side effects, the confirm requirement, and preview behavior. It is missing the value format for add/remove and any permissions/error context, but the essential call-time knowledge 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?
Schema coverage is low (25%), so the description carries weight, and it does clarify the confirm parameter's semantics (redundant with the schema description) plus the add/remove intent via 'assigns or unassigns.' However, it never specifies what add/remove actually contain (member identifiers, array format) or the meaning of cardId, leaving part of the gap unfilled.
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 a specific verb and resource: 'Assigns or unassigns board members on a task.' This is clearly distinguishable from siblings like set_task_labels or set_task_field by resource. It stops short of explicitly contrasting with a named alternative, so it lands just below the top mark.
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?
Gives conditional usage guidance: when assigning someone other than the user, confirm:true is required and omitting it yields a preview; self-assigning and unassigning are exempt. This is clear context for how to invoke it correctly, though it doesn't name alternative tools for related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_billableSet task billableADestructiveInspect
Sets whether time logged on a task is billable to the client (true or false), or makes it follow the project's default (null). Applies to time logged from then on; entries already logged keep their setting. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ||
| billable | Yes | null follows the project's default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, which might otherwise suggest existing data is wiped; the description usefully clarifies the opposite — the change applies only to time logged from then on and already-logged entries keep their setting. It also discloses the required editor-role permission, adding 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?
Three tight sentences, front-loaded with the core action, followed by scope of effect and prerequisite. 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?
For a simple two-parameter mutation with annotations covering the safety profile and no output schema, the description supplies the value semantics, the temporal scope of the change, and the permission requirement. Only minor gaps remain (e.g., behavior on a nonexistent or closed task).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (cardId has no description), but the description fully explains the semantics of the undocumented-in-schema state space for 'billable' — true/false meaning and null meaning 'follow the project's default' — which goes beyond the schema's single-line note.
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 a specific verb (sets) and resource (billable status of time logged on a task) and enumerates the three possible states. An agent can distinguish this from neighbors like set_task_visible_to_client or set_task_field without opening the schema.
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 context (toggling billing behavior on a task) and gives one prerequisite ('Needs the editor role on the project'), but never states when to prefer this over alternatives such as setting billability at the project or time-entry level. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_estimateSet task estimateADestructiveInspect
Sets how long a task is expected to take, or clears it with null. Written with a unit: 4h, 1h30, 90m, 1.5h (a bare number is minutes); up to 10,000 hours. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ||
| estimate | Yes | The estimate, e.g. 4h or 1h30; null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false; the description corroborates the destructive nature by explaining that null clears the estimate, which is non-obvious. It also adds the authorization requirement and the 10,000-hour cap. It doesn't say whether the previous estimate is overwritten or how failures surface, so not a full 5.
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 dense sentences with the core action front-loaded, followed by format rules and the permission note. The example formats are compact and each served a distinct parsing case rather than padding.
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 2-parameter mutation tool with no output schema, the description covers format, bounds, clearing, and authorization — essentially everything needed to invoke it correctly. Minor gap: it doesn't clarify overwrite semantics or interaction with estimate-adjacent siblings.
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 only 50% schema description coverage, the description must compensate, and it does: it defines the unit syntax (4h, 1h30, 90m, 1.5h), clarifies that a bare number means minutes, and documents the null-clearing behavior. cardId remains undocumented in both places, keeping it from a 5.
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 a specific verb and resource ('Sets how long a task is expected to take') plus the full lifecycle including clearing. An agent can distinguish this from siblings like set_task_field, convert_estimate_to_invoice, or update_task without opening either schema.
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?
Clearly indicates the two usage modes (set a duration, or clear it with null) and states the prerequisite ('Needs the editor role on the project'). It does not name explicit alternatives or exclusions (e.g., when to prefer set_task_field), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_fieldSet task custom fieldADestructiveInspect
Sets a custom field's value on a task, or clears it with null. text: any text; number: a number; select: one of its options; checkbox: true or false; date: YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| cardId | Yes | ||
| fieldId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates state. The description usefully discloses that passing null clears the field, which goes beyond the annotations, but it omits what happens to the prior value, whether missing fields/options error out, and permission 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?
One front-loaded sentence: the operation first, then the type-value mapping that the agent needs. Every clause earns its place given the 0% schema coverage and the type union.
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, no nested objects, and annotations already covering the safety profile, the description covers the essential input semantics including the tricky polymorphic value. Only edge-case behavior (invalid fieldId, overwrite semantics) is unaddressed, which is minor 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?
Schema coverage is 0% and the value parameter is a polymorphic union, so the description's format spec (text/number/select/checkbox/date with YYYY-MM-DD) genuinely compensates for what the schema cannot express. cardId and fieldId are undocumented but self-evident by name.
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 a precise verb+resource (sets a custom field's value on a task) and adds that it can clear the value with null. It is clearly distinct from update_custom_field and update_task, though it does not name those siblings explicitly. An agent can identify the operation without opening the schema.
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 the null-clearing clause and the type enumeration, but there is no explicit when-to-use/when-not guidance and no alternative tool is named. For a setter that competes with update_task and update_custom_field, more routing guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_labelsSet task labelsBDestructiveInspect
Adds and/or removes labels of the task's board on a task. Adding a label runs the board's 'label added' rules, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | ||
| cardId | Yes | ||
| remove | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false; the description adds valuable non-obvious behavior: adding a label triggers the board's 'label added' rules, as in the app. It does not cover auth needs, board/label scoping, or response behavior, but it adds real context 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?
One efficient sentence with no waste. It is front-loaded with the operation, though parameter/format details are absent rather than over-explained.
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 3-param mutation tool with no output schema and 0% schema description coverage, the description should explain add/remove semantics and side effects. It does disclose the rule-triggering side effect, which is valuable, but leaves parameter meaning and scoping incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the schema documents none of the three parameters. The description mentions adding and removing labels implicitly referencing 'add' and 'remove', but provides no syntax, format, or semantics for the arrays or the required cardId, leaving the burden unmet.
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 a specific verb (Adds/removes) and resource (labels of the task's board on a task). Distinguishes from create_label/delete_label by operating on a task's label assignments, though it does not explicitly name a sibling alternative.
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?
Implied usage is clear from the description, but there is no explicit when-to-use/when-not guidance, no mention of alternatives, and no stated prerequisites beyond the required cardId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_task_visible_to_clientSet task visible to clientADestructiveInspect
Shows a task on the project's client portal, or stops showing it. Visitors read the task's title, whether it is done, in progress or late, and its due date, and can comment on it; descriptions, files, people, time and money are not shown. Making it visible needs confirm: true (without it the result is a preview); hiding it does not. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | The task. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| visible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare a mutating, destructive, open-world operation, but the description adds genuinely useful context beyond them: the confirm-to-commit / preview-without-it gate, the required editor role, and exactly what portal visitors can and cannot see (title, status, due date, comments; no descriptions, files, people, time, money). It stops short of saying whether hiding is reversible or whether clients are notified of the change.
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?
Dense but well front-loaded: the effect comes first, then the portal-visible detail, then the confirm gate and role requirement. Four distinct ideas are packed into one block, which is slightly heavy but each sentence carries actionable 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 boolean-toggle mutation with no output schema, the description covers the effect, the two-step confirm flow, the permission model, and the client-visible consequences. The remaining gap is failure/edge behavior (e.g., what happens without the editor role, reversibility of hiding).
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 coverage is 67% and the 'visible' parameter has no schema description at all, so the description is doing real work: 'Shows a task ... or stops showing it' supplies the meaning of the boolean. The confirm parameter's preview semantics are reinforced rather than introduced, which is fine but redundant.
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 names a specific verb ('shows / stops showing') and a precise resource and surface ('a task on the project's client portal'), so the agent knows exactly what state is being changed. It does not explicitly name a sibling tool it competes with, but the effect is unambiguous among the set_task_* family.
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 states the conditions for the operation clearly: making visible requires confirm: true, hiding does not, and the editor role on the project is required. There is no explicit when-not-to-use or named alternative, but the gating conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_team_rateSet a person's rate and costADestructiveInspect
Sets what a person is billed at by default on the user's projects (hourlyRate) and what an hour of theirs costs the user (hourlyCost), per hour. They apply to hours logged from then on: each hour keeps the rate and cost it had when it was logged, unless the user applies the new ones to the hours already logged. null clears a value. The rate is the last resort: the person's rate on a project, then the project's, then the client's come first. A Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | A person on the user's team. | |
| hourlyCost | No | What an hour costs the user (salary and overhead). In the currency's main unit: 85, "85.50", "1.250,50". null clears it. | |
| hourlyRate | No | Default hourly rate. In the currency's main unit: 85, "85.50", "1.250,50". null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already declared, the description earns credit for explaining what that destruction means: null clears a value, and previously logged hours keep their old rate unless the user applies the new one. That is genuinely useful mutation context. It does not state required permissions/role or whether the change is reversible, which matters for a Pro-tier destructive write.
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?
Front-loaded with what is being set, followed by temporal scope, null behavior, precedence, and the Pro caveat — every sentence carries information. The first sentence is long and parenthetical, which slightly hurts scannability.
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 3-parameter mutation with no output schema and full schema coverage, the description covers effect timing, null semantics, fallback precedence, and plan gating. The remaining gap is disambiguation from set_member_rate and set_my_weekly_capacity-style siblings, which is the one thing an agent could get wrong.
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 coverage is 100%, so the schema already documents all three parameters including units, formats, and null semantics. The description adds the resolution precedence (person-on-project → project → client → person default) but that is about rate lookup, not about the parameters themselves, so baseline 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?
States a specific verb and resource: setting a person's default billable rate (hourlyRate) and internal cost (hourlyCost) per hour. It is precise about which fields are affected, but it never distinguishes itself from the near-identical sibling set_member_rate, which an agent could easily confuse it with.
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?
Gives real context: 'A Pro feature' signals a prerequisite, and the note that values apply only to hours logged from then on (unless applied retroactively) tells the agent the effect surface. It stops short of explicit when-to-use/when-not guidance or naming the alternative tool for per-project rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_timer_alertSet timer alertADestructiveInspect
Sets after how many hours a running timer sends the user a notification (and a push to their devices), once per timer: 0 turns it off; otherwise between 0.5 and 24 hours (the Time page offers 4, 8, 10 and 12). It only tells the user: the timer keeps running. Available on every plan.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | Yes | Hours before the alert; 0 = off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description usefully narrows that: the alert 'only tells the user' and 'the timer keeps running', so the agent knows this does not stop or reset the timer — only overwrites the alert threshold. It also discloses frequency ('once per timer') and plan availability. It stops short of saying the previous alert value is replaced or what the response contains, but that is minor given 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?
Front-loads the core behavior, then constraints, then the caveat that it's notification-only. The parenthetical about the Time page presets is the only near-dispensable clause and is short enough to justify itself as value guidance.
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 single-parameter configuration tool with annotations present and no output schema, the description covers range, the off-switch, side effects (none on the timer), frequency, and plan availability. An agent has everything needed to call 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?
Schema coverage is 100% and already says '0 = off', but the description adds the valid numeric range (0.5–24) and realistic presets (4, 8, 10, 12), which the schema does not state. That is genuine meaning beyond the schema, though it doesn't say what happens if an out-of-range value is passed.
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 a specific verb (sets) and a precisely scoped resource (the notification threshold of a *running* timer), including the unit (hours). It is unmistakable against siblings like get_timer_alert (read) and add_reminder (separate reminder entity).
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?
Gives concrete usage rules: 0 disables the alert, otherwise 0.5–24 hours, and cites the values the Time page exposes. It does not explicitly name the read counterpart (get_timer_alert) or an alternative tool, so selection guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_rulesSet time rulesADestructiveInspect
Sets the rules that close logged hours on all the projects the user owns, which change what every person on them can do: lockedUntil, a day (YYYY-MM-DD, up to today) closes every day on or before it for everybody, the user included, until the date is changed; editWindowDays, a whole number of days (0 to 366), limits how far back people other than the user can fix their own hours (0 = only today). null clears a rule; a field left out stays. Setting rules is a Pro feature; turning them off is allowed on every plan, and rules already set keep protecting the hours if the plan lapses. Needs confirm: true; without it the result is a preview that says how many hours get frozen.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| lockedUntil | No | The last day that is closed, YYYY-MM-DD, not later than today; null reopens everything. | |
| editWindowDays | No | Days back that people other than the owner can still change their hours (0 to 366; 0 = only today); null = no limit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the destructiveHint/openWorldHint annotations: it says lockedUntil freezes days for everybody including the user until changed, editWindowDays scopes others' edits, null clears, omitted fields persist, rules survive plan lapse, and without confirm the call only previews how many hours get frozen.
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?
Purpose is front-loaded and every clause carries behavioral information about locking, scope, or the preview. The single dense run-on with semicolons is harder to scan than it needs to be.
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 a destructive mutation, the description supplies everything needed: confirm gating, the preview result, scope of the freeze, clearing semantics, and the Pro-plan constraint.
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 coverage is 100%, so baseline is 3; the description still adds meaning the schema does not carry, notably that a field left out stays unchanged and that rules keep protecting hours if the plan lapses. It largely restates the null/range semantics already 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?
States a specific verb and resource: sets time rules that close logged hours on all projects the user owns. It explicitly covers what the rules do and is clearly distinct from the read-only sibling get_time_rules.
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?
Explains the confirm-preview requirement and that turning rules off is allowed on every plan, giving clear context for use. It does not name an alternative tool or say when a value should be left out rather than nulled, so it stops short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_boardShow boardARead-onlyInspect
Shows a board as an interactive kanban that updates live while the conversation is open: lists and cards with labels, due dates, checklist progress and assignees, where the user can drag cards between lists, complete them and add new ones. Without boardId it shows the board the user changed most recently. Clients that can't display it get the same board as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | No | The board to show. Default: the most recently changed one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the view updates live during the conversation, the user can mutate it (drag, complete, add), and incapable clients receive the same board as JSON. That interaction model is not derivable from 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 compact sentences, front-loaded with the core purpose, followed by the default-selection rule and the JSON fallback. No filler and nothing repeated from the schema or annotations.
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 carries the return-value burden and does so by explaining both the interactive rendering and the JSON fallback. Combined with full parameter documentation and read-only annotations, an agent has nearly everything needed, though it lacks explicit routing advice against sibling read tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single optional parameter, so the schema already documents boardId and its default. The description's 'Without boardId it shows the board the user changed most recently' merely restates the schema default rather than adding syntax, format, or selection guidance.
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 a specific verb and resource ('Shows a board') and goes further by describing the rendering mode: an interactive live-updating kanban with lists, cards, labels, due dates and assignees. This meaningfully distinguishes it from the data-oriented sibling get_board, though it never names that sibling explicitly, so differentiation is implied rather than stated.
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 the no-argument default ('the board the user changed most recently') and a client-capability fallback, but gives no explicit when-to-use guidance relative to siblings like get_board, list_boards, or overview. The agent must infer that this is the display-oriented tool rather than the data-retrieval one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sort_listSort listADestructiveInspect
Reorders a list's cards by due date (soonest first, undated last), by title (A to Z) or by creation (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| listId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, so the mutation risk is already communicated. The description is consistent with that and adds the ordering semantics, but does not disclose whether the reorder persists permanently, whether it is reversible, or what the result looks like. With annotations covering safety, a 3 is appropriate.
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 sentence, front-loaded with the action and then the options. Every clause carries information; nothing is redundant.
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 tool with no output schema and annotations that already cover the safety profile, the description is nearly sufficient. The main residual gap is whether sorting mutates persisted card order irreversibly, which matters given destructiveHint=true.
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 carry parameter meaning. It defines all three enum values concretely, including tie-break rules ('soonest first, undated last', 'newest first'), which the bare enum does not convey. Only listId is left unexplained, which is largely self-evident.
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 a specific verb ('reorders') and resource ('a list's cards') and enumerates the three supported orderings. No sibling tool performs sorting, so an agent can identify this immediately.
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 the description ('reorders'), but there is no explicit when-to-use guidance, no conditions, and no mention of alternatives or prerequisites. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_pro_checkoutStart Pro checkoutADestructiveInspect
Starts an upgrade to Decknote Pro (14-day free trial, then US$9/month or US$90/year) by creating a Stripe Checkout link where the user pays; this tool charges nothing. Without confirm: true it returns the exact price and changes nothing; with confirm: true, amount has to equal that price. Accounts billed through Shopify are upgraded from the Shopify admin, not here.
| Name | Required | Description | Default |
|---|---|---|---|
| offer | No | A founder-offer code from Decknote's email, if the user has one. | |
| amount | No | The price the user agreed to, in US$ (e.g. 9 or 90). | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| interval | No | Default month. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the tool itself charges nothing, that the default (no confirm) is a side-effect-free price preview, and that the amount is validated against the returned price. This is exactly the kind of dry-run / safety context annotations alone (readOnlyHint=false, destructiveHint=true) cannot 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?
Front-loads the core action and price, then the confirm semantics, then the exclusion. Dense but nearly every clause carries operational weight; the parenthetical pricing could arguably be trimmed for an agent audience.
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, it covers the commit/preview distinction, pricing, validation rule, and account-type exclusion. No output schema exists, so return-value explanation is not required, and the description says it produces a Checkout link.
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 coverage is 100%, so baseline is 3, but the description adds real cross-parameter meaning: confirm gates execution, and amount must match the price the preview returned. It also clarifies offer is an email-provided founder code, a nuance the schema only partially captures.
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 a specific verb+resource ('starts an upgrade to Decknote Pro') and the exact mechanism (creating a Stripe Checkout link). It is clearly distinguishable from billing/account siblings like open_billing_portal or update_account because it describes the upgrade-purchase flow itself.
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?
Gives explicit call protocol: without confirm:true it is a preview, with confirm:true it commits, and amount must equal the quoted price. It also states a clear exclusion – Shopify-billed accounts upgrade elsewhere. It stops short of naming a specific alternative sibling tool to use in that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_timerStart timerADestructiveInspect
Starts the user's time tracker on a project, optionally on one of its tasks. There is one timer per person: a timer already running is stopped and its time kept first (a timer stopped within 30 seconds is dropped as an accidental click). The hours are the time elapsed when it stops, rounded to the minute and capped at 16 hours. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | What is being done, up to 500 characters. | |
| cardId | No | The task to track time on. | |
| boardId | No | The project. Optional when cardId is given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the real side effects: the one-timer-per-person rule, that a running timer is stopped and its time kept first, that sub-30-second runs are discarded as accidental clicks, and that hours are rounded to the minute and capped at 16 hours. This is exactly the mutation context an agent needs, and it is consistent with destructiveHint=true.
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?
Four tight sentences, front-loaded with the action before the behavioral rules and the permission requirement. Every sentence carries distinct, call-relevant information with no padding.
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, the description covers the mutation semantics, the side effects on existing timers, the rounding/cap rules, and the required role. Nothing an agent needs to call it correctly is missing.
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 coverage is 100%, so the schema already defines note, cardId, and boardId, putting the baseline at 3. The description adds relational meaning by stating the timer runs on a project and optionally on one of its tasks, reinforcing that boardId is optional when cardId is supplied.
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 a specific verb and resource ('Starts the user's time tracker on a project, optionally on one of its tasks'), with scope precise enough to distinguish it from stop_timer, get_running_timer, and log_time among the siblings. No ambiguity about what the tool does.
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?
Gives the precondition needed to invoke it (editor role on the project) and clarifies the project/card relationship, which effectively tells the agent when this tool applies. It stops short of explicitly naming alternatives such as log_time for manual entries or stop_timer, so it is clear context rather than full 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.
stop_timerStop timerADestructiveInspect
Stops the user's running timer and keeps the elapsed time as a time entry. A timer stopped within 30 seconds is dropped as an accidental click. Says so when no timer was running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, but the description adds crucial behavior: elapsed time is kept as a time entry, sub-30-second timers are dropped as accidental clicks, and it reports when no timer was running. It does not contradict the destructive hint; it clarifies what is actually destroyed and what is preserved.
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 tightly written sentences, front-loaded with the core action, then the edge case, then the no-timer response. Every sentence earns its place with 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?
For a parameterless mutation with no output schema, the description covers the action, the outcome, the 30-second edge case, and the no-timer state. Annotations carry the safety profile, and nothing needed for correct invocation is missing.
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 takes zero parameters, so parameter semantics are not applicable. The baseline of 4 is appropriate, as there are no arguments whose meaning needs explanation.
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 ("Stops") and resource ("the user's running timer") plus the outcome (keeps elapsed time as a time entry). This clearly distinguishes it from siblings like start_timer and get_running_timer.
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 use is clear from "Stops the user's running timer" and the no-timer response, but it does not explicitly name alternatives such as checking with get_running_timer first or manually logging time via log_time. No exclusions are provided, so this is clear context without full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_timesheetSubmit a week for approvalADestructiveInspect
Hands in the user's week of hours (give any day of it; weeks run Monday to Sunday) for approval to each owner of the projects the user logged hours on that week, or only to ownerId. From then on the user cannot add, change or delete their hours of that week on those projects until the owner rejects it or the user withdraws it, and an approved week stays closed. A week can be submitted from its Monday on, a timer running in that week has to be stopped first, and a week already submitted or approved stays as it is. Each owner gets a notification. The owner's plan has to include it (Pro). Needs confirm: true; without it the result is a preview with the hours for each owner.
| Name | Required | Description | Default |
|---|---|---|---|
| week | Yes | Any day of the week to submit, YYYY-MM-DD. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| ownerId | No | Only to this owner (one of the owners of the projects the user logged hours on that week). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the lock effect (no add/change/delete until rejected or withdrawn), that approval is permanent ('an approved week stays closed'), that owners are notified, and that the owner's plan must be Pro. It also explains the confirm-gated preview, so the agent knows what a non-confirm call returns.
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?
Front-loaded with the action and its scope, then the side effects and preconditions. It is a dense run-on chain of clauses rather than structured sentences, but each clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and rich annotations, the description covers the side effects, prerequisites, plan gating, notification behavior, and what the preview result contains. An agent has everything needed to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds real meaning: 'week' accepts any day of a Monday–Sunday week, 'confirm: true' is required to act and otherwise returns a preview with hours per owner, and 'ownerId' is scoped to actual owners. These interpretations exceed the schema text.
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 a specific verb and resource ('Hands in the user's week of hours ... for approval') and scopes it precisely: submission goes to each project owner, or only to ownerId. This clearly distinguishes it from siblings like approve_timesheet, withdraw_timesheet, get_week_timesheet and list_timesheets.
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?
Gives concrete when/when-not conditions: a week can be submitted from its Monday on, a running timer must be stopped first, and a week already submitted or approved stays as it is. It doesn't explicitly name sibling tools to route to (e.g. for rejection or withdrawal), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_webhookTest webhookADestructiveInspect
Sends a test to one of the account's webhooks now and returns how it went (ok, HTTP status, error): a sample of the first event type it sends, marked "test": true (a Slack channel gets a line saying it is connected). Needs confirm: true, since it sends to an address outside Decknote; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| webhookId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond the annotations: what is actually sent (a sample of the first event type, tagged "test": true), the Slack-specific side effect, and the confirm-gated preview mode. The confirm gate is consistent with destructiveHint=true. There is mild tension between 'sends to an address outside Decknote' and openWorldHint=false, but the description itself is the more informative of the two.
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?
Single dense sentence with the action front-loaded, followed by the result and the confirm prerequisite. Slightly over-packed with parentheticals, but nothing is 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?
With no output schema, the description still enumerates the return fields and the test-marker semantics, and covers the mutation guard clearly. An agent has everything needed to call it safely.
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 coverage is only 50%, so description must compensate — and it does for confirm, explaining the reason behind the flag and the preview fallback rather than just restating the boolean. webhookId still carries no description in either place ('one of the account's webhooks' only implies the scope), keeping it below 5.
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 a specific verb and resource ('Sends a test to one of the account's webhooks now') and even previews the return payload (ok, HTTP status, error). This is clearly distinguishable from create_webhook, update_webhook, and list_webhooks without opening any schema.
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?
Gives the operational condition directly: confirm: true is required because it sends outside Decknote, and without it the call is a preview only. It does not explicitly route to siblings (e.g., list_webhooks to obtain webhookId), so it stops short of full 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.
transfer_boardTransfer board ownershipADestructiveInspect
Hands a board the user owns to one of its members: they become the owner (their plan then decides the board's Pro features) and the user stays on as an editor. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| newOwnerId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint/readOnlyHint annotations, it discloses non-obvious consequences: the transferred board's Pro features follow the new owner's plan, the original owner is demoted to editor rather than removed, and omitting confirm yields a read-only preview. These are exactly the side effects an agent needs before committing.
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 compact sentences, with the ownership outcome front-loaded and the confirm requirement placed last where it operates as a gate. No filler or restated title text.
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 3-parameter mutation with no output schema, it covers the action, its side effects, and the dry-run path. It does not say what the preview returns or what error surfaces when the target is not a member, which are minor 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 coverage is only 33%, so the description must compensate: it constrains newOwnerId to 'one of its members' and restates confirm's preview semantics. boardId is left undiscussed, but its meaning is unambiguous from the name.
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 precise verb and resource ('hands a board the user owns to one of its members') and spells out the resulting state change: new member becomes owner, the user becomes an editor. This distinguishes it clearly from siblings like share_board, remove_member, and leave_board.
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 states the precondition (the user must own the board; the target must be a member) and the required invocation mode (confirm: true, otherwise a preview only). It never names alternative tools such as share_board for the non-ownership-sharing case, so the agent must infer that boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_time_importUndo time importADestructiveInspect
Takes an import back: deletes its time entries and the clients, projects and tasks it created that nobody has used since (those that were used are kept, and the result counts them). Refused when some of the time was already invoiced, when it was already undone, and for the sample project. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| importId | Yes | An import of the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark it destructive/non-read-only; the description adds substantial behavior: unpinned entities created by the import are deleted while entities since used are retained and counted, three specific refusal cases, and a dry-run preview when confirm is absent. This is real disclosure 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 dense sentences that front-load the action and its side effects, then the failure modes and the confirm requirement. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers what is deleted versus kept, what the result reports, the dry-run behavior, and every refusal condition an agent needs before invoking 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?
Schema coverage is 100% and both parameters are already documented in the schema, including the non-true confirm behavior. The description reinforces the confirm preview semantics but adds no extra syntax or format detail beyond the schema, 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?
Specific verb (deletes/takes back) and resource (a time import and the entities it created), with the exact scope of what is removed versus retained. It is clearly distinguishable from delete_time_entry (single entry) and preview_time_import (read-only preview).
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?
Gives explicit refusal conditions (already invoiced, already undone, sample project) and the confirm flag requirement, which effectively tells the agent when the call will fail. It stops short of naming a sibling alternative such as preview_time_import for the no-confirm case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlink_tasksUnlink tasksCDestructiveInspect
Removes a relation between two tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds that the target is the relation between two tasks rather than the tasks themselves, which is useful context, but it omits auth needs, reversibility, and 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?
A single front-loaded sentence with zero wasted words. It delivers the core action immediately and is appropriately sized for the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with an undocumented required parameter and no output schema, the description leaves critical gaps: how to identify the link, when to use it versus link_tasks, and whether the removal is reversible.
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 sole required parameter linkId has no schema description. The tool description says nothing about what linkId is, how to obtain it, or its format, so it fails to compensate 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?
States a specific verb 'Removes' and resource 'a relation between two tasks'. It distinguishes what is removed (the relation, not the tasks) but does not reference the sibling link_tasks or clarify how it differs from it, so it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, alternatives, or prerequisites are given. The agent must infer that this is the inverse of link_tasks and when removing a relation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_accountUpdate account settingsADestructiveInspect
Changes the user's settings: display name, language (en, es, fr), time zone (IANA, e.g. America/Argentina/Buenos_Aires; the daily digest goes out in the user's morning) and which notifications they get (mention, assigned, comment, due; email turns emails on or off).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| language | No | ||
| timeZone | No | ||
| notifications | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuine behavioral context (the daily digest is sent in the user's morning, email toggles emails on/off), but it never explains partial-update semantics or what happens to fields omitted from the call, which matters for a destructive mutation.
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 dense sentence that front-loads the resource and then walks the parameters. Every clause carries information, though the parenthetical nesting makes it slightly harder to scan than a short list.
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 4-parameter nested-object mutation with no output schema, the description covers all fields and adds format/behavior detail. The main remaining gap is update semantics (merge vs replace) and confirmation that the response is a mutation acknowledgement.
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 parameter burden and does so well: it names each field, gives the language enum values, specifies the IANA time-zone format with a concrete example, and lists the notification types plus what 'email' controls. It still omits whether parameters are independently optional.
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 a specific verb and resource ('Changes the user's settings') and enumerates the settings touched. It is clearly a self-service account settings mutation, distinguishable from the many task/board siblings, though it never names the closest sibling (update_member) to draw the line explicitly.
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 the resource: this is the tool for changing your own account preferences. However there is no when-to-use vs when-not guidance, no mention of update_member or get_account as the read counterpart, and no note about prerequisites or that all four parameters are optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_billing_profileUpdate billing profileADestructiveInspect
Sets or changes the user's billing details: business name (required the first time), address, tax id, email, phone, currency, prefixes and next numbers of invoices and estimates, default tax (percentage and name), payment terms in days, payment instructions and default notes; null clears an optional text. New documents copy these; documents already issued keep what they had.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Where clients reply to. | ||
| phone | No | ||
| taxId | No | ||
| address | No | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| currency | No | Three-letter code, e.g. USD. | |
| businessName | No | Up to 120 characters. | |
| defaultNotes | No | Printed on each new document as its notes. | |
| autoReminders | No | Pro. When on, the client of every sent invoice that is past due and unpaid gets a reminder email 3, 7 and 14 days after the due date, in the user's daytime. | |
| invoicePrefix | No | e.g. INV- | |
| estimatePrefix | No | e.g. EST- | |
| defaultTaxLabel | No | e.g. VAT. Up to 30 characters. | |
| paymentTermsDays | No | Days from the issue date to the due date, 0 to 365. | |
| defaultTaxPercent | No | e.g. 21 or "10,5". | |
| nextInvoiceNumber | No | ||
| nextEstimateNumber | No | ||
| paymentInstructions | No | Printed on each new document as its terms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds genuinely new behavioral context: nulls clear optional fields, and 'New documents copy these; documents already issued keep what they had' explains the blast radius of the change. It omits that without confirm nothing is written, though the schema documents that clearly.
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 dense sentence front-loads purpose and then enumerates fields efficiently, with the consequence clause placed last. The field list largely mirrors the schema, so part of it is redundant, but there is 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?
For a 17-parameter mutation with no output schema, the description supplies the key facts an agent needs: what it mutates, null semantics, first-time requiredness, and that issued documents are not retroactively changed. The preview/confirm safety gate is covered by the schema rather than the description, so this is close to 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?
At 71% schema coverage the description adds real meaning beyond the schema: the null-clears convention for optional text fields, the first-time requiredness of businessName (despite required being empty), and the downstream effect of numbering/tax/terms fields. It does not cover confirm or autoReminders, leaving those to 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+resource ('Sets or changes the user's billing details') and enumerates the concrete fields covered, so an agent can immediately tell this is the write counterpart to get_billing_profile. It stops short of naming that sibling explicitly, but the mutating verb makes the distinction 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?
'business name (required the first time)' and 'null clears an optional text' give conditional usage hints, but there is no explicit guidance on when to call this versus get_billing_profile or update_account, and no mention of the confirm/preview workflow. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_boardUpdate boardADestructiveInspect
Changes a board's title, icon (one emoji), cover color or background image (Pro; PNG, JPEG, WEBP or GIF up to 5 MB, base64-encoded), or removes the background. Needs edit access to the board.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | One emoji, or null to remove it. | |
| title | No | ||
| boardId | Yes | ||
| coverColor | No | ||
| removeBackground | No | ||
| backgroundImageBase64 | No | A new background image, base64-encoded (Pro). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=false, and the description is consistent with them ('changes', 'removes the background'). Beyond that it adds real context the annotations don't carry: the Pro gating, accepted image formats (PNG/JPEG/WEBP/GIF), the 5 MB cap, and base64 encoding requirement. It stops short of saying how to remove an icon via null or how conflicting field settings interact.
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 dense sentence that front-loads the action and then the affected fields; every clause earns its place (field list, Pro note, format limits, removal option, permission requirement). No filler or restatement of the title.
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 6-parameter mutation tool with no output schema, the description supplies the field semantics, encoding constraints and the permission requirement an agent needs to call it. It leaves open whether updates are partial (only boardId is required) and what happens when several appearance fields are supplied together.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (icon and backgroundImageBase64 documented), so the description must compensate. It covers title, icon, cover color, background image, and the remove-background action, and adds format/size/encoding meaning to backgroundImageBase64 that the schema lacks. Minor gaps remain (no clarification of partial-update semantics or precedence between coverColor, backgroundImageBase64 and removeBackground).
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 a specific verb ('Changes') and resource ('a board's') and enumerates the mutable fields (title, icon, cover color, background image, remove background), so the agent knows exactly what the tool touches. It does not, however, distinguish itself from the sibling 'set_board_preferences', which could plausibly overlap with board appearance changes.
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?
'Needs edit access to the board' is a prerequisite, not usage guidance. There is no statement of when to prefer this over set_board_preferences or other update_* siblings, and no exclusions (e.g. Pro-only image uploads are hinted at but not framed as a usage constraint). Usage is only implied from the enumerated fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_checklistUpdate checklistADestructiveInspect
Renames a checklist or moves it among the task's checklists (index 0 = top).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| title | No | ||
| checklistId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds one useful behavioral detail — the index ordering convention (0 = top) — but says nothing about how moving a checklist shifts the other checklists, what happens with an out-of-range index, or permission 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?
A single twelve-word sentence with the primary action front-loaded and the ordering caveat tucked into a parenthetical. No filler, nothing repeated from the title.
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 a mutation annotation set, the description covers what changes but omits the reordering side effects on sibling checklists, error behavior for bad indices, and partial-update semantics. Sufficient to attempt a call, not to predict its full effect.
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 carry parameter meaning. It does explain the index parameter's ordering semantics (0 = top), but title and checklistId are left entirely undocumented, and it never states whether title and index can be supplied together in one call.
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 names two specific operations (rename, move) on a precisely scoped resource (a checklist within a task), which cleanly separates it from add_checklist, delete_checklist, and update_checklist_item. An agent can select this tool without opening the schema.
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 the stated operations (use this to rename or reorder a checklist), but there is no explicit when-to-use guidance, no mention of alternatives such as update_checklist_item, and no stated prerequisites. Adequate but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_checklist_itemUpdate checklist itemCDestructiveInspect
Checks or unchecks a checklist item, or changes its text.
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | ||
| text | No | ||
| itemId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, so the description's only real behavioral burden is to clarify scope, yet it never says edits may be irreversible or whether omitted fields are preserved. 'Update' plus an implicit partial-update model is not spelled out. Given annotation coverage of the safety profile, this is below par.
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 efficient sentence that front-loads the mutation, with no filler. It is appropriately sized, though it could have used a few more words of param/clarification 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?
No output schema and no annotations carrying semantics beyond safety hints; the definition must therefore document behavior and parameters but omits itemId format, partial-update behavior, and how it differs from update_checklist. For a destructive 3-param mutation it is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it adds almost nothing: 'done' is vaguely mirrored by 'checks or unchecks' and 'text' by 'changes its text', with zero detail on itemId format or partial-update semantics. Three undocumented params at 0% 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?
States a specific verb and resource: mutating a single checklist item, with the three operations (check, uncheck, change text). It is clear enough to select against siblings, though it doesn't explicitly distinguish itself from update_checklist (which likely operates on the parent list).
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 (edit an existing item) but offers no when-to-use guidance, prerequisites, or differentiation from update_checklist or delete_checklist_item. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_clientUpdate clientADestructiveInspect
Changes a client's name, contact details, currency, default hourly rate or notes; null clears an optional field. A new rate applies to time logged from then on: entries already logged keep the rate they were logged with.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| No | |||
| notes | No | ||
| phone | No | ||
| taxId | No | ||
| address | No | ||
| clientId | Yes | ||
| currency | No | Three-letter code, e.g. USD or ARS. Default USD. | |
| hourlyRate | No | Default hourly rate for this client's projects. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring destructiveHint=true and readOnlyHint=false, the description adds genuine context beyond them: null clears an optional field, and a new hourly rate only applies to time logged going forward while already-logged entries keep their original rate. This is valuable behavioral detail. It stops short of stating permissions or reversibility.
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 front-loaded and information-dense; the field enumeration comes first and the rate-behavior caveat follows. No filler 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 mutation tool whose annotations carry the destructive profile and with no output schema, the description is nearly complete, covering what can be changed and the side effect of clearing fields. Minor gaps remain around permissions and whether individual changes are reversible.
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 coverage is low (22%), so the description must compensate. It meaningfully groups the updatable fields and adds the crucial 'null clears an optional field' semantics absent from the schema, but it does not map semantics to each of the 9 params (e.g., taxId, address are only loosely implied under 'contact details').
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 clear verb ('Changes') and resource (a client's fields), enumerating the updatable attributes (name, contact details, currency, hourly rate, notes). It is unambiguous about what the tool does, though it does not explicitly distinguish itself from siblings like create_client or archive_client.
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: use it to modify an existing client's fields. There is no explicit when-to-use/when-not framing and no mention of alternatives (archive_client for removal, update_client_portal for portal settings), leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_client_portalUpdate client portalADestructiveInspect
Turns a project's client portal on or off and sets what it shows: tasks, hours (hours only; rates and money are left out), the list of sent documents, whether clients may comment, a welcome text and the studio name shown on the page and on answers. The first time it creates the portal and its link, on. Turning it on or changing what an enabled portal shows publishes that to anyone with the link and needs confirm: true (without it the result is a preview); turning it off does not. A Pro feature, except turning an existing portal off. Only the project owner.
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | The project. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| enabled | No | Whether the link works. Turning it off keeps the link for when it is turned on again. | |
| welcome | No | Up to 2000 characters. An empty text clears it. | |
| showHours | No | Show hours tracked against the hours budget. | |
| showTasks | No | Show the tasks marked visible to the client. | |
| studioName | No | Up to 60 characters. An empty text clears it. | |
| showInvoices | No | Show the project's sent documents (links, no amounts on the portal page). | |
| allowComments | No | Let visitors comment on the visible tasks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint and openWorldHint, but the description adds substantial context beyond them: the confirm:true publishing gate versus preview, that publishing exposes data to anyone with the link, that turning off preserves the link, that hours exclude rates/money, and that the operation is Pro-gated except when disabling an existing portal. This is rich, non-obvious 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?
Front-loaded with the core action and followed by the consequential confirm/publishing rules, so the most important information comes first. It is dense and slightly run-on with parentheticals, but nearly every clause carries load-bearing 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 destructive, open-world mutation with no output schema, the description covers the elements an agent needs: the confirm gate versus preview, the publishing side effect, link persistence, ownership and Pro restrictions, and the first-use creation behavior. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, and the description largely restates them (welcome text, studio name, sent documents, comments). It adds only marginal flavor, such as noting hours are shown against the budget and that no amounts appear on the portal page. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with full scope: turns a project's client portal on/off and sets what it displays (tasks, hours, documents, comments, welcome text, studio name). It also clarifies it creates the portal and link on first use, clearly distinguishing it from read-only siblings like get_client_portal and regenerate_client_portal_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?
Gives strong conditional guidance: enabling or changing an enabled portal publishes to anyone with the link and requires confirm: true, whereas disabling does not and neither does the preview path. It also states the Pro-feature gating and owner-only restriction. It stops short of naming sibling alternatives explicitly, but the when/when-not conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_fieldUpdate custom fieldADestructiveInspect
Renames a custom field or changes a select field's options. Removing an option that cards use clears it from them, which needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| fieldId | Yes | ||
| options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes further by specifying exactly what is destroyed ('clears it from them' on cards that use the option) and, more importantly, the two-phase semantics: without confirm:true nothing changes and the result is a preview. That dry-run/preview behavior is not derivable from any annotation or schema field and is the single most important thing an agent needs before invoking this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The mutation is stated first and the confirmation/preview mechanic follows immediately, so the highest-risk fact is not buried.
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 four-parameter destructive mutation with no output schema and thin schema coverage, the description covers the critical gaps: what the operation does, what data it can destroy, and the confirm gate on the destructive path. It does not say whether name and options are independently optional or what errors look like, which keeps it out of 5 territory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (confirm is the only documented property), so the description carries real weight. It explains what name does (rename), what options does (select field options), and reinforces the confirm preview semantics beyond the schema text. fieldId is left unexplained, but its meaning is unambiguous from the name.
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 names a specific verb pair and resource: 'Renames a custom field or changes a select field's options.' That is enough to separate it from create_custom_field and delete_custom_field in the sibling list without opening a schema. It stops short of naming a sibling or stating scope boundaries, which is what a 5 would require.
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 states the condition under which the destructive path applies ('Removing an option that cards use') and the required flag ('which needs confirm: true'). No alternative tools are named and there is no 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.
update_expenseUpdate expenseADestructiveInspect
Changes an expense that is not yet on an invoice: description, amount, day, category, vendor, billable, markup (project owner only) or its task (null removes it). The person who logged it and the project owner can change it.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | The day it was spent, YYYY-MM-DD. | |
| amount | No | An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). | |
| cardId | No | ||
| vendor | No | ||
| billable | No | ||
| category | No | ||
| expenseId | Yes | The expense. | |
| description | No | ||
| markupPercent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a mutation (readOnlyHint=false, destructiveHint=true), so the bar is lower, and the description still adds meaningful behavior: the authorization model, the project-owner-only restriction on markup, and that passing null on the task removes it. It does not explain partial-update semantics (whether omitted fields are left untouched) or reversibility.
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 front-loaded sentences: the operation and field list first, the permission model second. Dense but every clause adds information; only the task/cardId mismatch introduces noise.
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 9-parameter mutation with 33% schema coverage and no output schema, the description covers precondition, permissions, and the field list reasonably well. It still leaves gaps an agent needs: partial-update behavior, the undocumented cardId field, and the phantom 'task' parameter.
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 coverage is only 33%, so the description carries extra burden; it does enumerate the mutable fields (description, amount, day, category, vendor, billable, markup, task), which adds value. However it omits the cardId parameter entirely and references a 'task' argument that does not appear in the schema, creating confusion about the actual parameter set.
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 a specific verb and resource ('Changes an expense') plus a scoping condition ('that is not yet on an invoice'), which cleanly separates it from create_expense, delete_expense and list_expenses. It stops short of naming a sibling explicitly, so it is clear but not fully 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?
Gives an explicit precondition ('not yet on an invoice') and states who is permitted to perform the change (logger or project owner, with markup restricted to the owner). That is real when-to-use context, though it never says what to do instead when the expense IS already on an invoice or points to an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_invoiceUpdate invoiceADestructiveInspect
Changes a document. A draft takes every field (client, dates, currency, tax, discount, notes, terms, who it is for, project and the whole list of lines, which replaces the current ones); once sent only the notes and the due date change; once paid or answered, only the notes. Totals are recomputed on the server. null clears an optional field.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | The whole list (replaces the current lines). At most 500. | |
| notes | No | Up to 4000 characters. Default: the profile's default notes. | |
| terms | No | Up to 4000 characters. Default: the profile's payment instructions. | |
| toName | No | Who it is for. Default: the client's name. | |
| boardId | No | A project the user owns. | |
| dueDate | No | YYYY-MM-DD. Default: the profile's payment terms (invoice) or 30 days (estimate). | |
| toEmail | No | ||
| toTaxId | No | ||
| clientId | No | One of the user's clients; its name, email, address, tax id and currency are copied onto the document. | |
| currency | No | Three-letter code. Default: the client's, else the profile's. | |
| discount | No | A fixed amount off the whole document. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). null clears it. | |
| taxLabel | No | What the tax is called, up to 30 characters. | |
| invoiceId | Yes | The invoice or estimate. | |
| issueDate | No | The issue date. Default today, YYYY-MM-DD. | |
| toAddress | No | ||
| taxPercent | No | Tax as a percentage, e.g. 21 or "10,5". Default: the profile's. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations marking destructiveHint=true, the description adds critical detail: line items are replaced wholesale, server recomputes totals, null clears optional fields, and field availability shrinks after sending/payment. This goes well beyond the binary annotation and tells the agent exactly what will be destroyed and when.
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?
One dense paragraph covers the state rules, replacement semantics, and null clearing without repetition. The vague opening 'Changes a document' is the only structural weak point, but the rest is information-dense.
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 16-parameter mutation tool, it covers mutability rules, replacement behavior, and server-side recomputation. It omits error handling and return expectations (no output schema exists), leaving a small gap, hence 4.
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 81%, so the schema already documents most parameters. The description groups fields by state but adds no new syntax or format details for individual parameters, fitting the baseline 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 opens with 'Changes a document,' which is vague about the resource, but then enumerates invoice-specific fields (client, dates, currency, tax, discount, lines) making the target clear. It does not name sibling update tools or explicitly say 'invoice/estimate,' so it earns a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies state-dependent editability: 'a draft takes every field... once sent only the notes and the due date change; once paid or answered, only the notes.' This is clear context for using the tool, but it never names an alternative tool or says when to use this instead of, say, create_invoice or void_invoice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_labelUpdate labelBDestructiveInspect
Renames or recolors a label; the change shows on every card that has it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| labelId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the safety profile is covered. The description adds a genuine blast-radius disclosure that annotations don't carry: the change propagates to every card bearing the label. It still doesn't explain why the operation is flagged destructive or whether partial updates are allowed.
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 compact sentence with the action front-loaded and the propagation caveat appended. Nothing is wasted and nothing needs reordering.
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 3-parameter mutation with no output schema, the description covers purpose and blast radius adequately, and annotations handle the safety profile. It is still missing the required-identifier semantics, partial-update behavior, and failure mode when the label is not found.
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 carry parameter meaning, and it only partially does. "Renames or recolors" loosely maps to name and color, but the required labelId parameter is never mentioned, the enum palette is left to the schema, and there is no statement about whether omitting one optional field leaves it unchanged.
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 gives a specific verb pair ("renames or recolors") and the resource (a label), and the effect on cards. It cleanly separates the action from create_label/delete_label by implication, but never explicitly distinguishes itself from its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: it doesn't say to call create_label when the label doesn't exist yet, that labelId must reference an existing label, or what conditions make this the right tool over set_task_labels. Usage is only inferable from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_listUpdate listADestructiveInspect
Renames a list, sets its WIP limit (Pro; null clears it) or moves it to another position among the board's lists (index 0 = first). Needs edit access to the board.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | New position among the lists, 0 = first. | |
| title | No | ||
| listId | Yes | ||
| wipLimit | No | Max cards before the list warns (Pro), or null. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is known; the description adds real context beyond that: the WIP limit is Pro-gated, passing null clears it, and index 0 means first. The null-clears behavior is exactly the kind of destructive detail the annotation cannot express, and the edit-access requirement is stated. No contradiction with destructiveHint=true.
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, capabilities front-loaded, and the access requirement placed last as a precondition. No filler or restatement of the title.
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 4-parameter mutation tool with no output schema, the description covers the three operations, the Pro constraint, null semantics, index convention, and the required permission. Minor gaps remain (e.g., whether changes are atomic, what happens to the list if only some fields are supplied), but nothing critical is missing 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 coverage is only 50% – index and wipLimit are documented in the schema, but title and listId are not. The description partly compensates by implying title is the rename target, by explaining that wipLimit null clears the limit and requires Pro, and by confirming index 0 = first. It still leaves listId and title semantics unstated, so it neither fully compensates nor is redundant.
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 a specific verb (update) and resource (list) and enumerates the three mutable aspects: title rename, WIP limit, and position. It is clear what the tool does, though it never names the closely related siblings (sort_list, duplicate_list, delete_list) that an agent might confuse with a reorder 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 description gives a precondition ('Needs edit access to the board') but no when-to-use vs alternatives guidance. It does not tell the agent when to prefer this over sort_list for reordering, or over delete_list/duplicate_list for other list operations, so usage is only implied by the listed capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_memberChange member roleADestructiveInspect
Changes a member's role on a board the user owns: EDITOR (can change things) or VIEWER (read only).
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| userId | Yes | ||
| boardId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutating, potentially-impactful nature is covered. The description adds the role-effect semantics (EDITOR can change things, VIEWER read only) and the ownership prerequisite, but says nothing about reversibility, notification of the affected member, or self-demotion restrictions.
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?
One tight sentence that front-loads the action, then the scope, then the role glossary. 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?
For a 3-required-param mutation with no output schema, the definition covers the action, allowed values, and ownership precondition. It omits the effect on the target user, permission edge cases, and return behavior, leaving moderate 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 three parameters rely on the description for meaning. It explains what EDITOR and VIEWER mean, which is real value beyond the bare enum, but boardId and userId semantics are left entirely to 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?
States a specific verb and resource ('Changes a member's role'), plus the scope ('on a board the user owns') and enumerates the two target roles. An agent can distinguish this from remove_member or share_board, though siblings are never named.
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?
Implies the precondition that the caller must own the board, which is useful context for when invocation is valid. However, there is no explicit when-to-use-vs-alternative guidance (e.g., use remove_member to revoke membership entirely, or share_board to grant access).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pageUpdate pageADestructiveInspect
Changes a page's title and/or body (Markdown, replacing the whole body). It needs the rev from when the page was read: if somebody saved in between, the save is refused with the reason and nothing is overwritten. Pinning, archiving and comments do not change the rev. A discussion's text is edited by its author and the project owner; an archived page is read-only. A page with images, or with a body longer than 100,000 characters, keeps its body: only its title changes. Needs the editor role on the project.
| Name | Required | Description | Default |
|---|---|---|---|
| rev | Yes | The rev returned when the page was read. | |
| title | No | ||
| pageId | Yes | The page (a note or a discussion). | |
| content | No | The whole new body, in Markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, but the description adds substantial context beyond that: rev-based optimistic concurrency (a conflicting save is refused with the reason and nothing is overwritten), which operations do and do not change the rev, edit-permission rules for discussions, and the title-only fallback for image/long-body pages.
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?
Purpose is front-loaded in the first sentence, and each subsequent clause carries a distinct constraint (concurrency, edit permissions, fallbacks, required role). It is dense but nearly every sentence earns its place, with only minor packing of multiple rules into single sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the essential edge cases an agent needs: concurrency semantics, permission requirements, read-only/archived behavior, and content-replacement limits. Nothing critical for correct invocation appears to be missing.
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 coverage is 75%, with rev, pageId, and content already documented in the schema. The description adds the meaningful semantic that content replaces the whole body and explains the rev conflict behavior, but largely reinforces schema-supplied meaning, so it sits at the baseline-plus 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?
States a specific verb ('Changes') and resource ('a page's title and/or body') with the key scoping detail that the body is replaced wholesale. An agent can distinguish this from siblings like set_page_archived, set_page_pinned, or update_task without opening any schema.
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 strong context for when the tool works and when it fails: needs the editor role, archived pages are read-only, discussions are editable only by author and project owner, and images/long bodies restrict edits to the title. It doesn't name an alternative sibling for those blocked cases, so it falls just short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_settingsUpdate project settingsADestructiveInspect
Turns a board into a project or changes its settings: client (one of the user's own), status, budget type with its hours or amount, default hourly rate, billable by default, start and due dates. null clears a value. A new rate applies to time logged from then on. Only the board's owner can do this.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| boardId | Yes | ||
| dueDate | No | YYYY-MM-DD. | |
| clientId | No | One of the user's clients; null unlinks it. | |
| startDate | No | YYYY-MM-DD. | |
| budgetType | No | What the budget counts: tracked hours, or the billable amount. | |
| hourlyRate | No | Hourly rate for this project, over the client's. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). | |
| budgetHours | No | Hours budget, e.g. 40 or "40h". Used when budgetType is hours. | |
| budgetAmount | No | Money budget. An amount in the currency's main unit, e.g. 85 or "85.50" (not cents). Used when budgetType is money. | |
| billableByDefault | No | Whether time is billable unless a task says otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds genuine value beyond that: 'null clears a value', 'A new rate applies to time logged from then on' (a temporal side effect), and the owner-only authorization requirement. These are meaningful behavioral disclosures the annotations do not contain.
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 sentences, front-loaded with the core purpose, then the field list, then key semantics and the permission note. Every clause carries information; 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 10-parameter destructive mutation with no output schema, the description covers what changes, null-clearing semantics, the rate timing effect, and the authorization requirement. It does not clarify partial-update behavior (which fields must be supplied), a minor gap given a single required param.
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 coverage is 80%, so the schema documents most parameters well. The description adds cross-field semantics the schema lacks, notably the universal 'null clears a value' rule for nullable fields, the relationship between budgetType and its hours/amount, and the client-must-be-the-user's-own constraint.
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 and resource ('Turns a board into a project or changes its settings') and enumerates the exact settings affected, which lets an agent distinguish it from get_project_settings or update_board. It stops short of naming a sibling to route against explicitly, so it lands just below the top mark.
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 the enumerated scope and the permission note ('Only the board's owner can do this' functions as a prerequisite), but there is no explicit when-to-use vs. alternative guidance such as distinguishing this from update_board or get_project_settings. Adequate context, no selection rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recurring_invoiceUpdate recurring invoiceADestructiveInspect
Changes a recurring invoice: how often, the next date (a new cadence counts from it), endAfter (null = no end), what happens to each new invoice, the days to pay, or pauses it (active false) and resumes it (active true; dates missed while paused are skipped). The lines stay as they were copied. Pausing needs nothing more; a change after which new invoices are sent or emailed needs confirm: true, and without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| every | No | 1 to 12. | |
| action | No | ||
| active | No | false pauses it, true resumes it. | |
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| endAfter | No | Invoices left to make, 1 to 500; null = no end. | |
| interval | No | ||
| nextDate | No | The new next date, today or later, YYYY-MM-DD. | |
| recurringId | Yes | The recurring invoice. | |
| paymentTermsDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive annotation, the description discloses crucial behavior: confirm: true is required for send/email effects, omitting it yields a preview, paused dates are skipped, and invoice lines remain as copied. These details materially affect safe invocation.
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 and every clause carries semantic load, with no obvious filler. It is dense and could be more scannable, but it is appropriately sized for a complex mutation 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?
For a complex update tool with no output schema, it covers the critical invocation semantics: preview versus execution, pause/resume behavior, and field effects. Some details, such as exact preview output or action enum effects, rely on the schema or inference.
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 adds meaning beyond the schema for nearly every parameter: nextDate resets the cadence, endAfter null means no end, active false/true pauses/resumes, confirm controls execution versus preview, and it maps the remaining fields to cadence, action, and payment terms.
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 and resource: it changes a recurring invoice and enumerates the aspects that can be changed. This clearly distinguishes it from sibling operations such as create_recurring_invoice, delete_recurring_invoice, and list_recurring_invoices.
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 gives clear usage context for pausing, resuming, and making changes that send or email new invoices, including the confirm requirement. It does not explicitly name sibling alternatives, but the update context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskUpdate taskADestructiveInspect
Edits a task: title, description, due date, start date, repeat or cover (a color, or one of the task's image attachments). The description accepts Markdown and replaces the card's whole page. null clears a date, the repeat or the cover.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| cardId | Yes | ||
| dueDate | No | ISO 8601, or null to clear. | |
| startDate | No | ISO 8601, or null to clear (shown on the timeline). | |
| coverColor | No | A color cover, or null to remove the cover. Replaces an image cover. | |
| recurrence | No | Repeat on archive (Pro), or null to stop repeating. | |
| description | No | ||
| coverImageAttachmentId | No | Use one of the card's image attachments as its cover (null removes it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the destructiveHint annotation: 'The description accepts Markdown and replaces the card's whole page' concretely explains the destructive nature for the description field, and 'null clears a date, the repeat or the cover' explains clearing semantics. It does not address whether unmentioned fields are preserved, leaving some 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?
Three tight sentences, front-loaded with the field list followed by two sentences of important caveats (Markdown/last-write, null clearing). No filler; nearly every clause carries 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 an 8-param mutation tool with no output schema, the description covers fields, null semantics, and page replacement well, but omits the partial-vs-full update behavior (are unspecified fields kept?) and any return/error expectations. Adequate but with a notable gap given the parameter count.
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 coverage is 63%; the schema already documents dueDate, startDate, coverColor, recurrence, and coverImageAttachmentId. The description usefully clarifies the two cover params ('a color, or one of the task's image attachments') and adds meaning to the undocumented `description` param, but title and cardId remain unexplained, 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?
States a specific verb ('Edits') and resource ('a task') and enumerates the editable fields (title, description, due date, start date, repeat, cover). This implicitly distinguishes it from label/assignee/field tools, but it never explicitly names a sibling alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the field list - an agent can infer this is the general task-editing tool. There is no explicit when-to-use versus set_task_field, set_task_labels, move_task, or complete_task, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_time_entryUpdate time entryADestructiveInspect
Changes a finished time entry: its duration, day, note, whether it is billable, or the task it is on (null takes it off any task). A person edits their own entries and the project owner edits anyone's. Time already billed to a client, and a timer still running, cannot be edited.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | The day worked, YYYY-MM-DD. | |
| note | No | Up to 500 characters. | |
| cardId | No | Move the entry to this task of the same project; null removes the task. | |
| entryId | Yes | ||
| billable | No | ||
| duration | No | A duration the way a person writes it: 90, 90m, 1h, 1h30, 1:30 or 1.5h. A bare number is minutes. Up to 24 hours per entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds non-obvious behavior: null removes the task, permissions required, and that billed/running entries are immutable, which is valuable context 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 tightly written sentences, front-loaded with the tool's purpose and followed by permissions and constraints. No filler; every sentence adds operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations covering safety, the description supplies required field, permission, and immutability context. With no output schema, return values are not described, but nothing needed to invoke the tool correctly is missing.
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 coverage is 67%, with day, note, cardId, and duration documented in the schema. The description adds meaning for the undocumented billable parameter and reinforces that cardId null removes the task, partially compensating 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?
States a specific verb ('Changes') and resource ('a finished time entry'), then enumerates the editable fields. This distinguishes it from delete_time_entry and log_time, which create or remove entries rather than modify existing finished ones.
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?
Gives concrete when-to-use constraints: ownership/permission model (own entries vs project owner edits anyone's) and when-not (already billed, running timer). It does not name alternative tools for creating or deleting entries, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_time_offUpdate time offADestructiveInspect
Changes the kind, the days, the minutes off each day or the note of a time off; what is not given stays as it was, and null minutes make it the whole working day again. A person changes their own (changing the kind, the days or the minutes of an approved or rejected one asks the owners for approval again); on Pro, the owner of a project changes the time off of its editors (the note stays the person's). The whole result is checked again: at most 366 days, ending on or after the first day.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | vacation, sick or other. Default vacation. | |
| note | No | Up to 300 characters. Only the person writes it and only they read it back. | |
| endDay | No | The last day off, YYYY-MM-DD. | |
| startDay | No | The first day off, YYYY-MM-DD. | |
| timeOffId | Yes | A time off of the user or of an editor of one of the user's projects. | |
| minutesPerDay | No | Minutes off each day (240 is half a working day), between 1 and the person's working day. null or missing: the whole working day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint=true annotation by disclosing partial-update semantics ('what is not given stays as it was'), the null-minutes reset to a whole working day, the re-approval side effect, the privacy boundary on notes, and the post-write validation rule (max 366 days, end on/after start). These are exactly the consequences an agent needs before calling a destructive mutation.
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, front-loaded with the change semantics before the permission and validation clauses. The nested parentheticals make it dense and slightly hard to scan, but every clause carries distinct 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?
Covers permissions, partial-update behavior, approval side effects and validation for a destructive mutation with no output schema. The only gap is that it never says what the response contains (the updated record vs just an acknowledgement), which matters modestly when the caller needs to confirm the new state.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: the partial-update contract for every optional field and the fact that null minutes restores a full working day. It does not add anything for timeOffId beyond what the schema already states.
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 a specific verb (changes) plus the exact mutable fields of a named resource (kind, days, minutes per day, note of a time off). It is clearly a mutation of an existing record, which implicitly separates it from add_time_off/remove_time_off, though no sibling is named.
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?
Gives concrete applicability conditions: a person edits their own time off, and on Pro a project owner can edit their editors' time off (note excluded). It also specifies that changing kind/days/minutes on an approved or rejected entry triggers re-approval. It stops short of explicitly naming alternatives like approve_time_off or remove_time_off, so no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookUpdate webhookADestructiveInspect
Changes one of the account's webhooks: the event types it sends, turns it off or on (enabled), or replaces its signing secret (rotateSecret: the new one comes back once, and the old one stops verifying). Turning it on needs confirm: true, since events leave Decknote again; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | ||
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| enabled | No | ||
| webhookId | Yes | ||
| rotateSecret | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description goes further by explaining that rotateSecret invalidates the old secret ('the old one stops verifying') and returns the new one a single time, and that toggling enabled resumes outbound event delivery. Those are precisely the consequences an agent cannot infer from the schema or hints. The outbound-delivery wording sits slightly at odds with openWorldHint=false, but it describes the webhook's own runtime behavior rather than an unbounded tool domain, so it is not a genuine contradiction.
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, front-loaded with the verb and resource, then the parameters in the order they matter. Every clause carries distinct information; none of it repeats the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, it covers the dangerous paths well (secret rotation, enable gate, preview fallback). The notable gap is whether passing events replaces the existing subscription list or merges with it, plus permission requirements — either would matter before an agent calls 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?
Schema coverage is only 20% (only confirm is documented), so the description must carry the load, and it does: events = which event types it sends, enabled = off/on toggle, rotateSecret = secret replacement with one-time return of the new value, confirm = preview gate. Only webhookId is left implicit, and its meaning is self-evident from the sentence.
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 a specific verb and resource ('Changes one of the account's webhooks') and enumerates the three mutation surfaces: event subscriptions, enabled state, and signing secret. The verb 'changes' plus the required webhookId makes it unambiguous against create_webhook, delete_webhook, and list_webhooks without needing to open any schema.
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?
Gives a concrete operational rule: enabling requires confirm: true because 'events leave Decknote again', and without it the call only previews. That is real guidance for the riskiest branch, but there is no explicit statement about when to prefer this over siblings (e.g., create/delete) or who is allowed to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_invoiceVoid invoiceADestructiveInspect
Voids a sent invoice or estimate: it cannot change any more, its number is kept, and the hours and expenses it had taken go back to the project's unbilled work. A draft is not voided (it is deleted). An invoice with payments recorded, and an estimate whose invoice still stands, cannot be voided. Needs confirm: true; without it the result is a preview.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects. | |
| invoiceId | Yes | The invoice or estimate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint=true; the description goes well beyond that by disclosing the exact consequences (invoice becomes immutable, number preserved, billable hours/expenses are released back to unbilled work), the blocking preconditions, and the preview-without-confirm behavior. This is precisely the behavioral context a mutation tool needs.
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?
Front-loads the core effect, then layers the draft exception, the blocking conditions, and the confirm requirement in tight, non-redundant sentences. Every clause earns its place; 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?
No output schema exists, and the description supplies all the operational essentials an agent needs: effects, forbidden states, and the confirmation gate. Nothing material is missing for calling this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the confirm parameter's preview-vs-action semantics are already fully documented in the schema. The description restates that confirm:true is required without adding syntax or format detail beyond the schema, 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?
States a specific verb (voids) and resource (sent invoice or estimate), then immediately enumerates the concrete effects (immutable, number kept, hours/expenses returned to unbilled work). It explicitly distinguishes itself from the draft path ('A draft is not voided (it is deleted)'), so an agent can tell it apart from delete_invoice_draft without opening either schema.
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?
Gives explicit when-not conditions: drafts go elsewhere (deleted), invoices with recorded payments cannot be voided, and estimates whose invoice still stands cannot be voided. It also states the confirm:true prerequisite for the real action versus a preview. Nothing about selecting this tool is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_taskWatch taskADestructiveInspect
Starts or stops watching a task (watchers are notified of new comments on it). Affects only the user.
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | Yes | ||
| watching | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: watch state is tied to comment notifications, and the change is scoped to the calling user only ('Affects only the user'), implying no side effects for other members. It stops short of saying whether the call is idempotent or what it returns.
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 with zero filler; the action is front-loaded and the scope qualifier follows. Every clause carries information the schema does not.
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, no-output-schema toggle with safety annotations already present, the description covers action, effect, and scope adequately. Minor gaps remain around permissions/access required and whether repeat calls are harmless, but nothing critical to invoking it correctly is missing.
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 both parameters. It does partially: 'starts or stops' maps cleanly onto the 'watching' boolean. However, 'cardId' is never explained, and the naming mismatch (cardId on a task tool) is left unresolved, so one of two parameters remains undocumented.
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 a specific verb pair and resource ('Starts or stops watching a task') and makes the toggle nature explicit, so the agent knows this is not a one-way subscribe. It does not name or contrast any sibling tool, but no sibling in the list performs watching, so ambiguity risk is low.
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 parenthetical ('watchers are notified of new comments on it') implies the reason to use the tool, which is enough to infer intent. There is no explicit when-to-use/when-not guidance, no mention of prerequisites such as board membership, and no alternatives referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_timesheetWithdraw a submitted weekADestructiveInspect
Takes back a week the user submitted that is still waiting for approval: its hours can be changed again and the week can be submitted again later. An approved week can only be reopened by the project owner.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheetId | Yes | A week handed in for approval (the user's own, or one handed to the user). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations mark this as destructive and not read-only, and the description adds important behavior beyond that: withdrawal makes hours editable and the week resubmittable later. It also discloses the restriction that approved weeks cannot be reopened through this path. It doesn't cover error behavior or return values, but the core mutation semantics are well explained.
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 compact sentences with no waste. The key precondition and consequence are front-loaded, and the approved-week caveat follows naturally.
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 single-parameter mutation tool with no output schema, the description covers the important state constraints, reversibility, and approval boundary. It is nearly complete, though it could mention what happens on failure or whether the caller must own the timesheet.
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, timesheetId, and the schema already provides a full description ('A week handed in for approval...'). The description adds state context but no syntax or format details beyond the schema, so baseline 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?
States a specific verb ('takes back') and resource ('a week the user submitted'), and clarifies the state precondition: it must still be waiting for approval. It implicitly separates this from approve_timesheet and reject_timesheet by describing the pending-only scope, though it does not name those siblings explicitly.
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?
Clearly says to use this when a submitted week is still awaiting approval and notes that approved weeks require the project owner to reopen. It gives a clear condition for use and an effective exclusion, though it doesn't name alternative tools like reject_timesheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
19 tool updates
- Added
add_expense_receipt - Added
approve_time_off - Added
approve_timesheet - Added
convert_estimate_to_project - Added
create_webhook - Added
delete_expense_receipt - Added
delete_webhook - Added
get_assignments_report - Added
get_invoice_pdf - Changed
get_profitability_report1 field changed- changed
Input schema / properties / by / enumPrevious value: -[ - "project", - "client", - "person" -]New value: +[ + "project", + "client", + "person", + "task" +]
- Changed
list_time_off1 field changed- added
Input schema / properties / statusAdded value: +{ + "description": "Only time off in this status (pending: waiting for approval).", + "enum": [ + "pending", + "approved", + "rejected" + ], + "type": "string" +}
- Added
list_timesheets - Added
list_webhooks - Added
reject_time_off - Added
reject_timesheet - Added
submit_timesheet - Added
test_webhook - Added
update_webhook - Added
withdraw_timesheet
18 tool updates
- Added
add_holiday - Added
add_time_off - Added
get_member_rates - Added
get_profitability_report - Added
get_time_rules - Added
get_timer_alert - Added
get_utilization_report - Added
list_holidays - Added
list_team_rates - Added
list_time_off - Added
remove_holiday - Added
remove_time_off - Added
reprice_time - Added
set_member_rate - Added
set_team_rate - Added
set_time_rules - Added
set_timer_alert - Added
update_time_off
5 tool updates
- Added
create_recurring_invoice - Added
delete_recurring_invoice - Added
list_recurring_invoices - Changed
update_billing_profile2 fields changed- added
Input schema / properties / autoRemindersAdded value: +{ + "description": "Pro. When on, the client of every sent invoice that is past due and unpaid gets a reminder email 3, 7 and 14 days after the due date, in the user's daytime.", + "type": "boolean" +} - added
Input schema / properties / confirmAdded value: +{ + "description": "true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects.", + "type": "boolean" +}
- Added
update_recurring_invoice
1 tool update
- Added
delete_invoice_draft
82 tool updates
- Added
add_page_comment - Added
archive_client - Added
convert_estimate_to_invoice - Added
create_client - Added
create_expense - Added
create_invoice - Added
create_invoice_from_work - Added
create_page - Added
create_project - Added
create_project_from_template - Added
create_sample_project - Added
delete_client_comment - Added
delete_expense - Added
delete_page - Added
delete_page_comment - Added
delete_project_template - Added
delete_sample_project - Added
delete_time_entry - Added
duplicate_invoice - Added
edit_page_comment - Added
email_invoice - Added
export_invoices_csv - Added
export_time_report - Added
get_billing_profile - Added
get_billing_report - Added
get_client_portal - Added
get_invoice - Added
get_invoice_email_draft - Added
get_page - Added
get_project_settings - Added
get_project_summary - Added
get_receivables_aging - Added
get_running_timer - Added
get_task_portal - Added
get_task_time - Added
get_time_report - Added
get_week_timesheet - Added
get_workload - Added
import_time_csv - Added
list_clients - Added
list_expenses - Added
list_invoices - Added
list_pages - Added
list_project_files - Added
list_project_templates - Added
list_projects - Added
list_time_entries - Added
list_time_imports - Added
list_unbilled_work - Added
log_time - Added
mark_client_comments_read - Added
preview_invoice_from_work - Added
preview_time_import - Added
record_estimate_answer - Added
record_invoice_payment - Added
regenerate_client_portal_link - Added
regenerate_invoice_link - Added
remove_invoice_payment - Added
rename_project_template - Added
reply_to_client - Added
restore_client - Added
revoke_invoice_link - Added
save_project_as_template - Added
send_invoice - Added
set_my_weekly_capacity - Added
set_page_archived - Added
set_page_pinned - Added
set_task_billable - Added
set_task_estimate - Added
set_task_visible_to_client - Added
start_timer - Added
stop_timer - Added
undo_time_import - Added
update_billing_profile - Added
update_client - Added
update_client_portal - Added
update_expense - Added
update_invoice - Added
update_page - Added
update_project_settings - Added
update_time_entry - Added
void_invoice
2 tool updates
- Changed
get_task1 field changed- added
Input schema / properties / includeAdded value: +{ + "description": "Extra fields on the task. 'descriptionMarkdown' adds the description with its formatting (headings, lists, task lists, code) as Markdown, when the page has any.", + "items": { + "enum": [ + "descriptionMarkdown" + ], + "type": "string" + }, + "type": "array" +}
- Changed
search_tasks1 field changed- added
Input schema / properties / includeAdded value: +{ + "description": "Extra fields on each task. 'location' adds the names of its board (board) and list (list).", + "items": { + "enum": [ + "location" + ], + "type": "string" + }, + "type": "array" +}
2 tool updates
- Added
get_board_live_url - Added
show_board
29 tool updates
- Changed
add_comment1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Added
api_create - Added
api_read - Removed
call_api - Changed
create_board1 field changed- changed
Input schema / properties / lists / descriptionPrevious value: -"Your own list titles, in order, instead of the template's (its labels stay)."New value: +"List titles, in order; they replace the template's lists (its labels stay)."
- Changed
create_embed1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_attachment1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_automation1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_board1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_card_template1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_checklist1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_checklist_item1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_comment1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_custom_field1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_label1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_list1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_saved_view1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
delete_task1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
leave_board1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
remove_member1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
revoke_access1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
revoke_embed1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
search_tasks1 field changed- changed
Input schema / properties / status / descriptionPrevious value: -"Default 'open'. 'archived' finds archived tasks (restore them with restore_task)."New value: +"Default 'open'. 'archived' finds archived tasks."
- Changed
set_public_link1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
set_task_assignees1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
share_board1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
start_pro_checkout1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
transfer_board1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
- Changed
update_custom_field1 field changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview."New value: +"true performs the action. Without it (or with any value other than the boolean true) nothing changes and the result is a preview of the effects."
73 tool updates
- Added
add_attachment - Added
add_checklist - Added
add_checklist_items - Changed
add_comment3 fields changed- added
Input schema / properties / confirmAdded value: +{ + "description": "Set to true only after the user has seen the preview and explicitly agreed. Without it nothing changes and you get a preview.", + "type": "boolean" +} - added
Input schema / properties / notifyAdded value: +{ + "description": "Notify mentioned people and watchers, as the app does. Default false.", + "type": "boolean" +} - added
Input schema / properties / text / descriptionAdded value: +"Mention a board member by writing @ and their name."
- Added
archive_board - Added
bulk_tasks - Added
call_api - Added
create_automation - Added
create_custom_field - Added
create_embed - Added
create_label - Added
create_saved_view - Added
create_task_from_template - Added
delete_attachment - Added
delete_automation - Added
delete_board - Added
delete_card_template - Added
delete_checklist - Added
delete_checklist_item - Added
delete_comment - Added
delete_custom_field - Added
delete_label - Added
delete_list - Added
delete_saved_view - Added
delete_task - Added
duplicate_board - Added
duplicate_list - Added
duplicate_task - Added
edit_comment - Added
export_data - Added
get_account - Added
get_board - Added
import_trello_board - Added
leave_board - Added
link_tasks - Added
list_activity - Added
list_embeds - Added
list_my_tasks - Added
list_notifications - Added
mark_notifications_read - Changed
move_task1 field changed- added
Input schema / properties / indexAdded value: +{ + "description": "Position in the target list, 0 = top. Default: the end.", + "type": "integer" +}
- Added
open_billing_portal - Added
overview - Added
react_to_comment - Added
remove_member - Added
rename_attachment - Added
restore_board - Added
restore_task - Added
revoke_access - Added
revoke_embed - Added
save_task_as_template - Changed
search_tasks2 fields changed- changed
Input schema / properties / status / descriptionPrevious value: -"Default 'open'."New value: +"Default 'open'. 'archived' finds archived tasks (restore them with restore_task)." - changed
Input schema / properties / status / enumPrevious value: -[ - "open", - "completed", - "all" -]New value: +[ + "open", + "completed", + "all", + "archived" +]
- Added
set_automation_enabled - Added
set_board_preferences - Added
set_public_link - Added
set_task_assignees - Added
set_task_field - Added
set_task_labels - Added
share_board - Added
sort_list - Added
start_pro_checkout - Added
transfer_board - Added
unlink_tasks - Added
update_account - Added
update_board - Added
update_checklist - Added
update_checklist_item - Added
update_custom_field - Added
update_label - Added
update_list - Added
update_member - Changed
update_task3 fields changed- added
Input schema / properties / coverColorAdded value: +{ + "description": "A color cover, or null to remove the cover. Replaces an image cover.", + "enum": [ + "indigo", + "emerald", + "rose", + "amber", + "sky", + "violet", + "teal", + "slate", + null + ], + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / coverImageAttachmentIdAdded value: +{ + "description": "Use one of the card's image attachments as its cover (null removes it).", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / startDateAdded value: +{ + "description": "ISO 8601, or null to clear (shown on the timeline).", + "type": [ + "string", + "null" + ] +}
- Added
watch_task
2 tool updates
- Added
fetch - Added
search
7 tool updates
- Added
add_reminder - Changed
create_board1 field changed- added
Input schema / properties / listsAdded value: +{ + "description": "Your own list titles, in order, instead of the template's (its labels stay).", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
create_list1 field changed- added
Input schema / properties / firstAdded value: +{ + "description": "Put it before the other lists. Default false.", + "type": "boolean" +}
- Changed
create_task3 fields changed- added
Input schema / properties / checklistAdded value: +{ + "description": "A checklist on the card: { title?, items: [{ text, done? }] }.", + "properties": { + "items": { + "items": { + "properties": { + "done": { + "type": "boolean" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / recurrenceAdded value: +{ + "description": "Repeat: archiving the task creates the next one, dates and reminders moved (Pro; needs a due date).", + "enum": [ + "daily", + "weekly", + "biweekly", + "monthly" + ], + "type": "string" +} - added
Input schema / properties / remindersAdded value: +{ + "description": "Reminders for you (push and email).", + "items": { + "description": "Either `at` (ISO 8601 instant), or relative to the due date: `daysBefore` (0 = that day) + `time` (local HH:MM, default 09:00) in `timeZone` (IANA, e.g. America/Argentina/Buenos_Aires).", + "properties": { + "at": { + "type": "string" + }, + "daysBefore": { + "type": "integer" + }, + "time": { + "type": "string" + }, + "timeZone": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +}
- Added
list_reminders - Added
remove_reminder - Changed
update_task1 field changed- added
Input schema / properties / recurrenceAdded value: +{ + "description": "Repeat on archive (Pro), or null to stop repeating.", + "enum": [ + "daily", + "weekly", + "biweekly", + "monthly", + null + ], + "type": [ + "string", + "null" + ] +}
12 tool updates
- First observed
add_comment - First observed
archive_task - First observed
complete_task - First observed
create_board - First observed
create_list - First observed
create_task - First observed
get_task - First observed
list_boards - First observed
move_task - First observed
reopen_task - First observed
search_tasks - First observed
update_task
Related MCP Connectors
eGile kanban board for AI agents: a card per task, take teammates' tasks, move cards as you work.
- TaskDeckOAuthme.taskdeck
Task boards for teams and their AI agents: cards, checklists, sprints, plans and proposals.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
A kanban board your AI reads and updates as it works, and you watch in your browser.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Kanban tasks, boards, teams, and checklists via natural language, with full CRUD operations and live updates.231 npmMIT
- AlicenseBqualityDmaintenanceEnables AI agents to manage kanban boards with tasks, including creating boards, items, moving between columns, and searching.81MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage a persistent Scrumban board through natural language, including capturing, moving, and completing tasks, with leasing, progress reporting, and human-in-the-loop decision handling.4 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Kanban board enabling AI agents and humans to collaborate on tasks through MCP tools for project and task management.49 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.