Skip to main content
Glama

Server Details

Project scheduling: Gantt chart, dependencies, baselines, reports and AI agents

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 104 tools

Disambiguation3/5

Most tools target distinct resources, but several families overlap heavily: update_task vs set_task_status/set_task_progress/set_task_parent, list_tasks vs list_tasks_by_project vs search, and list_assignments vs list_assignments_by_task. Descriptions do warn about the intended split, but the presence of multiple ways to accomplish the same mutation creates real misselection risk.

Naming Consistency4/5

The set overwhelmingly follows a snake_case verb_noun convention (create_task, list_projects, set_task_status, delete_assignment), with predictable prefixes for preview/apply, mark/read, and purge/restore. Outliers like whoami and search are minor deviations but slightly break the otherwise strong pattern.

Tool Count1/5

104 tools is far beyond what an agent can reliably navigate for a task/project management server. Even with a broad domain, this surface is extremely over-scoped and would benefit from consolidation or grouping.

Completeness4/5

Coverage is unusually broad: projects, tasks, WBS, dependencies, assignments, comments, time tracking, costs, RAID, scenarios, agents, notifications, templates, invitations, baselines, and sharing. Minor gaps remain around managing custom-field definitions, workspace/task-status administration, and user/workspace lifecycle, but core workflows are well covered.

Available Tools

104 tools
add_commentAdd commentAInspect

Post a comment on a task or a project, or reply to one (parentCommentId; a reply to a reply is rejected — reply to the top-level comment instead). Any team role. Up to 10,000 characters. To mention someone (they get a notification), write the token @Display Name in the body, e.g. "@Ani Rahma can you check this?" — the integer id is what counts (resolve it with list_users); a name without the token is plain text and notifies nobody. Returns the new comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text. To mention someone (they get a notification), write the token @[Display Name](userId) in the body, e.g. "@[Ani Rahma](42) can you check this?" — the integer id is what counts (resolve it with list_users); a name without the token is plain text and notifies nobody.
entityIdYesId of the task or project
entityTypeYes"task" or "project"
parentCommentIdNoId of the top-level comment being replied to (optional)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (non-read-only, non-destructive, non-idempotent); the description adds real behavioral context beyond them: the permission floor ('Any team role'), a hard length limit, an explicit error case (nested replies rejected), and the notification side effect of mentions. It also closes with the return shape ('Returns the new comment').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then the reply constraint, permission, limit, and mention syntax in a tight sequence with no filler. The mention guidance duplicates the body property description word-for-word, which is redundancy rather than added value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 compensates by stating what is returned. Together with permissions, size limit, nesting rules, and mention mechanics, an agent has everything needed to call this correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: parentCommentId carries the one-level nesting constraint and the correct fallback (reply to the top-level comment instead). The mention token format is restated almost verbatim from the body property, so there is little net-new parameter information beyond the reply rule.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (post a comment) plus the two supported targets (task or project) and the reply variant. An agent can distinguish it from edit_comment, delete_comment, and list_comments 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: any team role is permitted, nesting is capped at one level ('a reply to a reply is rejected'), and a 10,000-character limit applies. It also routes the agent to list_users to resolve mention ids. It stops short of naming sibling alternatives (e.g., edit_comment vs. posting a new one) explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_day_offAdd day offAInspect

Add a holiday for everyone (omit userId) or one person's leave (userId), from start to end inclusive. Administrator or ProjectManager. Returns the whole calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesLast day off, yyyy-MM-dd (same as start for one day)
nameNoLabel, e.g. "Independence Day" or "Annual leave" (optional)
startYesFirst day off, yyyy-MM-dd
userIdNoWhose leave (user id); omit for a holiday for everyone

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-readonly, non-destructive, non-idempotent mutation. The description adds useful behavioral context beyond that: permissions required, inclusive start-to-end semantics, and that the whole calendar is returned. It does not explain duplicate handling, but the main mutation behavior is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and mode selection, followed by permissions and return behavior. There is no wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation without an output schema, the description covers the essential context: who can call it, how holiday versus personal leave is selected, inclusive date behavior, and that the full calendar is returned. Minor edge cases like duplicate entries are unspecified but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented in detail. The description reinforces the userId distinction and inclusive date range but adds little beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: adding a holiday for everyone or a personal leave for one user. It clearly distinguishes the two modes via omission or inclusion of userId, so an agent can tell what the 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage conditions: omit userId for a company-wide holiday, include userId for one person's leave, and notes the required Administrator or ProjectManager role. It lacks explicit exclusions or reference to the sibling remove_day_off, but the context is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_agent_runApply an AI proposalA
DestructiveIdempotent
Inspect

Apply a run in state "proposed" — Administrator/ProjectManager only. For plan-generator this creates the project (the project cap applies: 402); for schedule-doctor it moves every task in the re-plan and records each move. The server re-checks first: if any task changed since the proposal, nothing is written, the run becomes "stale" and the answer is 409 — run the agent again. ONLY CALL THIS AFTER THE USER HAS SEEN THE PROPOSAL AND SAID TO APPLY IT.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRun id

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description adds substantive behavior the annotations cannot: the concrete side effects (project creation for plan-generator, per-task moves for schedule-doctor), the 402 project-cap failure, and the all-or-nothing re-check that yields a 409 with nothing written when tasks changed. That is exactly the extra context the annotations leave open.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The state requirement and permissions come first, side effects second, failure semantics third, and the safety warning last as a capped emphatic sentence. Every clause carries distinct information (per-agent behavior, 402, 409, stale, re-run) with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-read-only mutation with no output schema, the description covers authorization, state precondition, side effects, credit/cap failure, and the stale-conflict outcome, which is everything an agent needs to call it correctly or correctly decline to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already carries the meaning of 'id'. The description adds only the implicit constraint that the id must reference a run in state 'proposed', not a broader explanation of the parameter or its acceptable values. Baseline 3 applies 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Apply') and resource ('a run in state "proposed"') and then differentiates behavior by agent type: plan-generator creates the project, schedule-doctor moves every task in the re-plan. That is enough for an agent to tell it apart from sibling run tools such as reject_agent_run, get_agent_run, or run_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition (the run must be in 'proposed'), an authorization constraint (Administrator/ProjectManager only), an explicit when-not (do not call before the user has seen the proposal and approved), and a recovery route when the run goes stale ('run the agent again'). This is close to a complete decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_auto_scheduleApply auto scheduleA
DestructiveIdempotent
Inspect

CONSEQUENTIAL: reschedule a project — move its tasks' dates so every dependency and the working calendar are respected. Recomputed at the moment of the call (not taken from an earlier preview); returns what actually moved. Administrator or ProjectManager. Preview and confirm with the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true; the description adds substantive context beyond them: the recomputation-at-call-time semantics, that the response reports what actually moved, and the required Administrator/ProjectManager role. No contradictions with the destructive/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, with the "CONSEQUENTIAL" risk flag and the action front-loaded before the workflow advice. No redundant restatement of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the description covers what changes, freshness of computation, return semantics, permission requirements, and the safety workflow. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage, so the schema already carries the parameter meaning. The description scopes the operation to a project but adds no format, range, or validation detail beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("reschedule a project — move its tasks' dates") plus the constraint it honors (dependencies and working calendar). The parenthetical "not taken from an earlier preview" separates it from preview_auto_schedule 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit workflow precondition ("Preview and confirm with the user first") and contrasts with a stale preview, which steers the agent toward preview_auto_schedule first. It stops short of naming that sibling tool directly, so the routing is clear but slightly inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_levellingApply levellingA
DestructiveIdempotent
Inspect

CONSEQUENTIAL: level the workload — move tasks across the whole workspace so nobody is over-booked. Recomputed at the moment of the call; returns what actually moved. Administrator or ProjectManager. Preview and confirm with the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
utcOffsetMinutesNoThe caller's UTC offset in minutes (e.g. 420 for UTC+7), so "this week" and "today" are the user's own (optional, default 0 = UTC)

TDQS

A4/5.0
Behavior4/5

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 still adds real value by disclosing that the result is recomputed at call time, that it returns what actually moved, and that Admin/PM permission is required. It does not state whether prior levelling results are reversible or how many tasks may be touched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the consequence warning, then scope, behavior, permission, and the safety instruction in four compact clauses. No sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description tells the agent the call reports what actually moved. Permissions and the preview-first protocol are covered; the missing piece is the time horizon over which 'over-booked' is judged, which matters for a workspace-wide mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single utcOffsetMinutes parameter is fully documented in the schema. The description adds nothing about it and never mentions that levelling is evaluated over a time window, which is the only reason the offset exists — so it neither compensates nor misleads.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('level the workload'), the effect ('move tasks across the whole workspace so nobody is over-booked'), and the scope (whole workspace). It is clearly distinguishable from siblings like preview_levelling or get_workload by being the applying action, though it never names preview_levelling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear pre-condition ('Preview and confirm with the user first') and the role gate ('Administrator or ProjectManager'). It stops short of naming the sibling tool to use for the preview step, leaving the agent to infer that preview_levelling is the counterpart.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_scenarioApply scenarioA
DestructiveIdempotent
Inspect

Make the plan match the scenario — every differing task takes the scenario's dates — then discard the scenario. This rewrites the live schedule: only call it once the user has seen the comparison and said to apply it. A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScenario id

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description adds substantial context beyond them: it rewrites the live schedule, discards the scenario as a side effect, touches nothing until applied, and requires Administrator/ProjectManager. The permission requirement and irreversible-data-loss framing are not recoverable 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the effect and the discard side effect, then the confirmation precondition, then the domain explainer. Every sentence carries information, though the sentence about comparison answers is slightly indirect in its wording ('each answer compares...') and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive mutation with no output schema, the description covers the blast radius (all differing tasks and dates), the side effect (scenario discarded), the permission gate, and the preconditions. Nothing an agent needs in order to decide to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is self-documenting, so the baseline is already high. The description adds real meaning by explaining what a scenario *is* (a private copy of one project's dates), which helps the agent supply the correct id rather than guessing between project and scenario ids.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and effect: 'Make the plan match the scenario — every differing task takes the scenario's dates — then discard the scenario.' It also defines the domain object ('a scenario is a private copy of one project's dates'), so an agent can distinguish apply_scenario from create_scenario, get_scenario, or delete_scenario 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear gating condition: 'only call it once the user has seen the comparison and said to apply it,' which is exactly the confirmation an agent needs before a destructive write. It does not explicitly name the alternative path (delete_scenario to discard without applying), so it falls short of full when-not/alternatives coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_project_baselineClear project baselineA
DestructiveIdempotent
Inspect

Remove all baseline snapshots for tasks in this project. Administrator only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description adds a genuine behavioral fact not captured in structured data: the operation requires administrator privileges. It stops short of stating irreversibility or whether re-running is safe beyond the idempotent hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the action and scope front-loaded ahead of the permission constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive operation with full annotation coverage and no output schema, the description supplies action, scope, and the admin requirement. It could mention whether clearing is recoverable, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema already documents 'id' as the project id. The description's 'for tasks in this project' slightly reinforces that the id is project-scoped but adds no format or edge-case detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Remove all baseline snapshots for tasks in this project', which tells an agent exactly what is deleted and at what scope. It does not name the companion tool set_project_baseline, so the 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Administrator only' gives a real precondition for use, but the description never says when to choose this over set_project_baseline or related baseline tools, nor any when-not conditions. Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_task_dependenciesClear task dependenciesA
DestructiveIdempotent
Inspect

Remove ALL parent dependencies from one child task at once (useful before re-linking or when a task can't be deleted because it still has links). Requires Administrator or ProjectManager role.

ParametersJSON Schema
NameRequiredDescriptionDefault
childTaskIdYesChild task id whose parent links should all be removed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructive=true and idempotent=true, so the safety profile is structured. The description adds valuable context beyond annotations by stating the Administrator or ProjectManager role requirement and that all parent dependencies are removed in one operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with the action and scope front-loaded, followed by useful usage examples and the permission requirement. There is no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter destructive mutation whose annotations already cover safety and idempotency, the description provides the essential operational context: what is removed, why it may be used, and the required role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter and schema description coverage is 100%, so the schema already explains childTaskId fully. The description reinforces that this is the child task whose parent links are removed, but adds no syntax or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: remove all parent dependencies from one child task. The 'ALL ... at once' wording distinguishes it from single-link removal, but it does not explicitly name or contrast with a sibling such as delete_task_dependency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage contexts: before re-linking, or when a task cannot be deleted because links remain. It also states the required role, but it does not explicitly say when not to use it or name the closest alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_assignmentCreate assignmentAInspect

Assign a user to a task with an optional role label (e.g. "Lead"). Requires Administrator or ProjectManager role. Both the task and user must belong to the active workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoAssignment role label (optional, e.g. Lead)
taskIdYesTask id
userIdYesUser id (integer; use list_users to resolve)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as a non-read-only, non-destructive, non-idempotent write, and the description adds genuinely new context: the required caller role and the cross-entity workspace constraint. It does not say what happens when an assignment already exists for that task/user pair, which matters given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, followed by permission and scope constraints. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, full schema coverage, and annotations covering safety and idempotency, the description supplies the missing operational context (permissions, workspace scoping). The main gap is duplicate-assignment behavior and whether a success payload is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including the role label and the hint to resolve userId via list_users. The description adds only the workspace-membership precondition, which is validation context rather than parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: assigning a user to a task, with the optional role label clarified via an example. It doesn't distinguish itself from update_assignment or delete_assignment, so an agent must infer the create-vs-modify split from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions: an Administrator or ProjectManager role is required and both the task and user must belong to the active workspace. It stops short of naming alternatives such as update_assignment for changing an existing assignment's role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_invitationCreate invitationAInspect

Create a workspace invitation and return the invite link PLUS a ready-to-send email DRAFT (subject + plaintext + HTML). Administrator only. IMPORTANT: this does NOT send any email — deliver the returned draft to the invitee yourself (e.g. via a mail tool). Pending invitations count toward the seat cap, so a Free workspace at its limit gets a plan-limit message. role must be one of: Administrator, ProjectManager, Member, Guest. A Guest takes a seat but only reads the projects later granted with set_project_guests, and changes nothing. invitedEmail is required — only that address can accept the invitation, so ask the user for it rather than guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole to grant on accept: Administrator, ProjectManager, Member, or Guest
invitedNameNoInvitee display name (optional, personalizes the email)
invitedEmailYesInvitee email address — REQUIRED. Only this address can accept the invitation; it is also the draft's To and is shown on the landing page.
personalNoteNoPersonal note from the inviter (optional, shown in the email)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say the tool is a non-destructive, non-idempotent write. The description adds the crucial fact that no email is sent and the draft must be delivered by the caller, plus seat-cap accounting for pending invitations and the plan-limit error surface. A Guest's read-only scope is also disclosed, which no annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and the most dangerous misunderstanding (no email is sent) before role and email details. Dense but nearly every clause is load-bearing; the all-caps emphasis and repeated 'required' phrasing cost some tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly describes the return payload (link, subject, plaintext, HTML) and the error case (plan-limit message). Combined with the seat-cap and role semantics, an agent has everything needed to call this correctly and handle the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining that invitedEmail is the only address that can accept (and becomes the draft's To) and by characterizing what the Guest role actually grants. invitedName and personalNote are left to the schema, which is fine given full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Create a workspace invitation') and immediately states what is returned (invite link plus a ready-to-send email draft with subject, plaintext, and HTML). This clearly separates it from list_invitations, revoke_invitation, and create_share_link.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: administrator only, invitedEmail required and must be obtained from the user rather than guessed, and role constrained to four values. It also explains the Guest role's downstream consequence and the seat-cap behavior on Free plans. It doesn't name a sibling alternative (e.g., revoke_invitation to cancel), which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_projectCreate projectAInspect

Create a project in the active workspace. Requires Administrator or ProjectManager role. Free-plan workspaces are capped at 3 projects — exceeding it returns a plan-limit message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
descriptionNoProject description (optional)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutation/non-idempotent profile is covered. The description adds genuinely new behavioral context: the required role and the plan-limit failure mode with its returned message. It stops short of a 5 by not saying what a successful call returns or whether duplicate names 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: purpose first, then the authorization prerequisite, then the quota failure mode. Every sentence carries an actionable fact an agent would otherwise have to discover at runtime.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter creation tool with no output schema, the description covers the essentials an agent needs to attempt the call safely: scope, role requirement, and quota error behavior. It is only slightly short of complete because the return value (e.g., the new project identifier) is undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both `name` and the optional `description` are already documented in the schema. The description adds no format, length, or uniqueness constraints on the name, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a project") plus the scope ("in the active workspace"), which is enough for an agent to distinguish it from delete_project or update_project. It doesn't explicitly contrast with the closest sibling create_project_from_template, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a strong precondition (Administrator or ProjectManager role) and a hard constraint (free-plan cap of 3 projects), which informs when the call will succeed. However, it never names alternatives such as create_project_from_template or explains when to prefer a template-based creation, so usage 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.

create_project_from_templateCreate project from templateAInspect

Create a new project from a template — its whole task breakdown, milestones and dependencies, dated forward from startDate. All or nothing. Administrator or ProjectManager; counts toward the Free plan's 3-project cap. Returns the new project; read its tasks with list_tasks_by_project.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for a gallery template's task names: "en" or "id" (optional)
nameYesName of the new project
startDateNoThe plan's first day, ISO-8601 date (optional, default today)
templateIdYesTemplate id from list_templates ("builtin:…" or a number)
descriptionNoProject description (optional; the template's own when omitted)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false); the description adds genuinely new context beyond them: the operation is atomic ('All or nothing'), requires Administrator or ProjectManager, and counts toward the Free plan's 3-project cap. It also notes the return value, which no output schema supplies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what gets created and how dates are handled, then constraints, then the return value and next step. Every clause carries distinct information; nothing is repeated from the schema or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive mutation with full schema coverage and no output schema, the description supplies the missing pieces an agent needs: atomicity, permission requirement, quota impact, and what the call returns. It stops short of describing failure modes (e.g. what a quota-exceeded or permission error looks like), which is the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: startDate acts as the anchor that all template dates are shifted forward from, and templateId links to list_templates. Optional fields such as lang and description are left to the schema, which is acceptable at full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (create a project from a template) and immediately scopes what that means: the whole task breakdown, milestones and dependencies, dated forward from startDate. This distinguishes it clearly from create_project and save_project_as_template 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the preceding step (templateId comes from list_templates) and the follow-up step (read its tasks with list_tasks_by_project). It does not explicitly contrast with the sibling create_project for empty projects, so the agent must infer that split, but the workflow framing is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_raid_itemCreate RAID itemAInspect

Add a line to a project's RAID register. Administrator or ProjectManager. kind is risk, assumption, issue or dependency; status is open, in_hand or closed. Probability and impact run 1-5: a risk needs both (score = probability × impact), an issue keeps only impact, the other kinds neither. dueDate is yyyy-MM-dd. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesrisk, assumption, issue or dependency
titleYesShort title
impactNoImpact 1-5 (required for a risk; optional for an issue)
statusNoopen, in_hand or closed (optional, default open)
dueDateNoDue date yyyy-MM-dd (optional)
ownerIdNoOwner user id (optional)
responseNoPlanned response / mitigation (optional)
projectIdYesProject id
descriptionNoDetails (optional)
probabilityNoLikelihood 1-5 (required for a risk)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it's a non-destructive, non-idempotent write. The description goes well beyond that: role requirements, plan gating with the specific error the agent will see, and the conditional field rules (risk needs both probability and impact, issue keeps only impact, others neither) plus the derived score formula. Those are exactly the behavioral details structured fields don't carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the action, then permissions, then field rules, then plan gating. Every clause carries information; nothing is padded or restated from the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with no output schema, it covers permissions, plan limits, enum values, and the tricky conditional fields well. It leaves ownerId, response, and description unexplained, and since there is no output schema it never tells the agent what a successful call returns (e.g. the created item and its score).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine semantics the schema lacks: the cross-field dependency between kind and probability/impact, the 'others neither' exclusion, and the score = probability × impact derivation. The kind/status enums and dueDate format are also restated in prose for quick scanning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Add a line to a project's RAID register.' That is unambiguous and clearly distinct from update_raid_item / delete_raid_item by verb alone. It stops short of explicitly naming those siblings as alternatives, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions: requires Administrator or ProjectManager role, and is Pro plan only, with the exact failure mode on Free ('a plan-limit message'). That is strong 'when this will work' guidance. It doesn't route to alternatives (e.g. list_raid_items to check existing entries, update_raid_item to change one), so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_scenarioCreate scenarioAInspect

Create a scenario for a project; it starts identical to the plan. A project holds a limited number of scenarios (422 past it). A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA short name, e.g. "Pour 2 weeks late"
projectIdYesProject id

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far past the annotations: discloses the per-project scenario cap (422 on overflow), the isolation guarantee (changes invisible until apply_scenario), and the authorization requirement. It also describes what the returned comparison contains. These are exactly the non-obvious traits an agent needs, and nothing contradicts readOnlyHint=false / destructiveHint=false / idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, each carrying distinct information: identity, limit, isolation model, and authorization. The sandbox constraint is front-loaded so an agent knows the risk profile before considering parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 what each call returns in the comparison (differing tasks with old and new dates, both project end dates). Between that, the permissions note, and the capacity limit, an agent can call this correctly with realistic expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with only two required params (name, projectId), both already documented in the schema including a naming example. The description adds the conceptual meaning of a project-scoped scenario but no syntax, constraints, or naming rules beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a scenario for a project') and then defines the resource itself — a private copy of one project's dates that starts identical to the plan. This distinguishes it clearly from apply_scenario (which commits changes) and from list_scenarios/get_scenario.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the tool as a what-if sandbox whose changes 'touch nothing until apply_scenario', effectively naming the follow-up tool and the condition for switching to it. Also gates the call with 'Administrator/ProjectManager only'. It doesn't discuss delete_scenario or when to prefer working directly on the plan, but the core when/when-not is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_taskCreate taskAInspect

Create a task in a project. Requires Administrator or ProjectManager role. Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100. assignedTo is the integer user id (use list_users to resolve) and must be a member of the workspace. Dates are ISO-8601 strings. An ordinary task must end up with BOTH startDate and endDate, and startDate must be on or before endDate — the server rejects a missing or inverted range with 422. A milestone needs only one of the two: the isMilestone invariants run first and copy it to the other. A child task's startDate must also be >= its parents' end dates. A milestone marks a dated gate rather than a span of work (launch date, sign-off, go/no-go). The server holds it to one date — endDate is forced to equal startDate, so naming either one is enough — with duration 0 and progress that is only ever 0 or 100 (100 exactly when it is in the workspace's finished status). Setting isMilestone on a task that already has a date range collapses it onto its start date. WORK BREAKDOWN STRUCTURE. Tasks nest via wbsParentId, and every task carries a read-only wbscode — its dotted outline number within the project ("1", "2.3", "2.3.1") — plus issummary. wbsParentId is NOT a scheduling dependency: a WBS child sits INSIDE its parent's span and in fact defines it, whereas a predecessor runs BEFORE its successor. Predecessors are their own resource — create_task_dependency — and are unrelated to nesting. A task with at least one WBS child is a SUMMARY TASK and owns none of its own schedule: its startDate, endDate, duration, percentComplete and status are all recomputed from its children (dates span the children; progress is their span-weighted average). Writing any of those on a summary returns 422 — change the children instead. wbscode is derived from tree position, so it shifts whenever tasks are reordered or re-parented: display it, never store or match on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTask title
statusNoStatus (optional, default Open). Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100.
endDateYesEnd date, ISO-8601 (required, must be >= startDate; pass null only for a milestone that gives startDate instead; applied for Admin/ProjectManager)
durationNoDuration value (optional). In Days it is derived by the server — the working days the dates cover — so only an Hours or Minutes value is kept as sent
projectIdYesProject id the task belongs to
startDateYesStart date, ISO-8601 (required; pass null only for a milestone that gives endDate instead; applied for Admin/ProjectManager)
assignedToNoAssigned user id (optional)
descriptionNoDescription (optional)
isMilestoneNoCreate this as a milestone rather than a task (optional, default false)
wbsParentIdNoWBS parent task id — the task this one decomposes. Must be in the same project, and cannot be a milestone (optional)
durationUnitNoDuration unit, e.g. Days or Hours (optional)
targetVersionNoTarget version label (optional)
resourceNeededNoResource needed / FTE units (optional)
percentCompleteNoPercent complete 0-100 (optional)

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations: discloses role gating (Administrator/ProjectManager), specific error codes (400 for undefined status label, 422 for missing/inverted dates and for writing computed fields on a summary task), side effects (milestone forces endDate=startDate and collapses an existing range; duration 0; progress 0/100), and derived read-only fields (wbscode, issummary). This is the kind of non-obvious consequence disclosure 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and permissions are front-loaded and the acronym headings help, but the block is ~450 words and repeats the entire status-per-workspace and milestone explanations that already live in the input schema. The WBS/summary-task section is genuinely new information; the duplicated sections are not earning their space twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter creation tool with no output schema, this covers everything an agent needs: validation rules, permission gates, cross-tool prerequisites, hidden side effects, and the fact that derived fields will be populated on return. Nothing material is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does add real meaning the schema lacks — isMilestone's date coercion, wbsParentId being nesting rather than a scheduling dependency, assignedTo needing workspace membership, and Days durations being server-derived — but the status paragraph is largely reproduced verbatim in the schema's own status field, diluting the marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Create a task in a project') and immediately scopes it with role requirements. It also names the sibling boundaries explicitly (update_task for combined status+percentComplete, create_task_dependency for predecessors), so an agent can distinguish it from adjacent tools 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong conditional routing: call list_task_statuses before setting a status, use list_users to resolve assignedTo, use create_task_dependency for predecessors rather than wbsParentId. It doesn't enumerate when-not-to-use create_task (e.g., templates, recurring tasks), but the in-flow guidance is concrete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_task_dependencyCreate task dependencyAInspect

Create a parent→child dependency. The type decides which endpoints are constrained: FS (default) the child starts after the parent ends, SS the child starts after the parent starts, FF the child ends after the parent ends, SF the child ends after the parent starts. Requires Administrator or ProjectManager role. Re-creating an existing pair with a different type changes that type. Rejects self-links, cycles, unknown types, and date violations.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDependency type: FS, SS, FF or SF. Omit for FS (finish-to-start).
childTaskIdYesChild task id (the dependent task)
parentTaskIdYesParent task id (the prerequisite task)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses the auth requirement, the upsert-like behavior when re-creating an existing pair with a new type, and the exact rejection conditions (self-links, cycles, unknown types, date violations). For a non-idempotent, non-destructive write tool with only hint-level annotations, this is substantial coverage of what an agent needs to predict outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then type semantics, then constraints — no filler sentences. The four-clause type sentence is dense but each clause carries distinct information, so it is efficient rather than bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only hint annotations, the description fills the meaningful gaps: permissions, validation rejections, type semantics, and update-in-place behavior. It omits side effects on scheduling/recalculation after the link is created, which is the only material gap for a 3-param project-planning mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by unpacking the FS/SS/FF/SF semantics and default behavior — valuable because the enum is not enforced in the schema (enums: 0) and the schema only gives one-line glosses.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a parent→child dependency') with the directionality spelled out, which distinguishes it from delete_task_dependency, list_task_dependencies, and clear_task_dependencies 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage clearly (create a dependency between two tasks) and adds a prerequisite gate ('Requires Administrator or ProjectManager role') plus the re-create semantics. It never explicitly names an alternative sibling or a when-not-to-use, 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_assignmentDelete assignmentB
DestructiveIdempotent
Inspect

Delete an assignment by id. Administrator only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssignment id

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is largely covered. The description adds useful auth context with "Administrator only," but does not say whether the deletion is permanent or soft, whether related data is affected, or what happens if the id is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by the permission constraint. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter destructive tool whose annotations already cover destructiveness and idempotency, the definition is minimally viable. However, it lacks important context for a delete operation, such as permanence, cascading effects, or behavior when the assignment does not exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter and schema description coverage is 100%, so the schema already defines `id` as an integer assignment id. The description only restates "by id" and adds no syntax, format, or lookup semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Delete an assignment by id." This is clear enough to distinguish deletion from siblings like update_assignment, get_assignment, and list_assignments, though the description itself does not name or differentiate any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage condition given is "Administrator only." It does not explain when to choose this tool versus update_assignment or other assignment-management tools, nor does it state any exclusions or prerequisites beyond the admin permission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_commentDelete commentA
DestructiveIdempotent
Inspect

Delete a comment: its text is erased for good. The author may delete their own; an Administrator may delete anyone's.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds value annotations do not: the permanent erasure of text and the authorization model (self vs Administrator), which an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the action and effect front-loaded, followed by the permission rule. Every clause earns its place and nothing is repeated from annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter delete with annotations covering destructiveness and idempotency, the description supplies the key missing context: irreversibility and who may invoke it. It does not mention failure modes (e.g., deleting someone else's comment as a non-admin) or effects on threaded replies, which keeps it just short of 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'id' parameter, so the schema already documents it fully. The description does not add format or constraints beyond the schema, making 3 the correct baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a comment') and immediately clarifies the effect ('its text is erased for good'). It is clearly distinguishable from edit_comment and list_comments 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the permission condition (author may delete their own, Administrator anyone's), which tells the agent when the call is allowed. However, it never contrasts this with edit_comment or other alternatives, and gives 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.

delete_projectDelete projectA
DestructiveIdempotent
Inspect

DESTRUCTIVE: permanently delete a project and ALL of its tasks, assignments, and status history (cascade). Administrator only. There is no undo.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint and idempotentHint, but the description adds context the annotations cannot express: the cascade scope (tasks, assignments, status history), the administrator permission requirement, and the absence of any undo. These are exactly the facts an agent needs to decide whether calling is safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the most alarming fact (DESTRUCTIVE, cascade) front-loaded, followed by the access constraint and irreversibility. Every clause carries decision-relevant information with nothing repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, no output schema, and annotations already covering the safety profile, the description covers what is destroyed, who may do it, and that it is irreversible. It stops just short of saying whether a trashed project can still be recovered via list_trash or what happens to dependent entities outside the project.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single required 'id' parameter, so the schema already documents the input fully. The description adds no format, range, or lookup guidance beyond that, which is the baseline case for a fully documented single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('permanently delete a project') and immediately defines scope with 'ALL of its tasks, assignments, and status history (cascade)', which distinguishes it from the sibling delete_task and purge_task. An agent knows exactly what this tool removes 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the 'Administrator only' prerequisite and the 'no undo' warning. It never says when to choose this over related tools (delete_task, clear_project_baseline, or any trash/restore path), so an agent must infer the decision boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_raid_itemDelete RAID itemA
DestructiveIdempotent
Inspect

Remove a line from the RAID register. Administrator or ProjectManager. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRAID line id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: required roles, plan restriction, and the plan-limit 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is three short sentences that front-load the action and then state authorization and plan constraints. Every sentence adds operational value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete tool, the description plus annotations cover the key operational facts: destructive action, idempotency, required role, and plan restriction. Return behavior or not-found handling is not described, but no output schema exists to carry that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter 'id' is documented as 'RAID line id.' The description does not add syntax or format detail 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Remove a line from the RAID register.' That clearly distinguishes deletion from siblings like update_raid_item, create_raid_item, and list_raid_items, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage constraints: the caller must be an Administrator or ProjectManager and the workspace must be on a Pro plan, with a note about Free workspace behavior. It does not explicitly discuss when to choose deletion versus updating, but the access and plan exclusions provide useful context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_scenarioDelete scenarioA
DestructiveIdempotent
Inspect

Throw a scenario away. The plan is untouched. A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScenario id

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the underlying plan is unaffected and the operation requires Administrator/ProjectManager permissions. The trailing sentence about "each answer compares the scenario with the plan" is irrelevant to a delete and muddies the behavioral picture slightly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening and the "plan is untouched" clause are well front-loaded, but the final sentence describing how "each answer compares the scenario with the plan... both project end dates" is leftover from a read tool and does not earn its place in a delete definition. It wastes space and risks confusing the agent about the return value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The scope, permission requirement, and non-propagation behavior are covered, which is good for a destructive tool with no output schema. However, the stray sentence implying a comparison result is returned conflicts with the fact that no output schema exists, leaving the agent uncertain about what deletion returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema description coverage, the schema already explains "id". The description adds nothing specific about the id (e.g., where to obtain it), so the baseline 4 applies rather than a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Throw a scenario away" is a concrete verb+resource, and the description immediately clarifies what a scenario is ("a private copy of one project's dates") and distinguishes it from the plan and from apply_scenario. An agent can tell this apart from siblings like apply_scenario or delete_project 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the key context: the plan is untouched and changes only matter via apply_scenario, implying this is for discarding an experimental scenario. It does not explicitly say when not to use it (e.g., versus apply_scenario to commit changes), so it stops just 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_taskDelete taskA
DestructiveIdempotent
Inspect

Delete a task: it moves to the workspace's Trash, where an Administrator or Project Manager can restore it (restore_task; list_trash shows what is there) for 30 days before it is deleted for good. Administrator or Project Manager. Fails with a conflict if the task has child tasks — either WBS children (it is a summary task) or dependants; re-parent or delete them first. Deleting the last child of a summary task turns that task back into an ordinary one, keeping the dates the final roll-up gave it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds crucial behavior beyond them: the task moves to Trash rather than being erased, remains restorable for 30 days, requires an Administrator or Project Manager, fails on child/dependant tasks, and explains the last-child summary-task side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dense and front-loaded, with most sentences carrying real behavioral constraints. There is minor redundancy in the standalone 'Administrator or Project Manager' sentence and the first sentence is long, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive single-parameter tool with no output schema, the description covers retention period, permissions, recovery path, conflict rules, and summary-task side effects. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, id, and schema description coverage is 100%, so the schema already documents it as 'Task id'. The description does not add format or selection guidance beyond that, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a task') and immediately scopes it as a soft delete into Trash with a 30-day restore window. By naming restore_task and list_trash, it distinguishes this from restore and permanent-deletion siblings such as purge_task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit recovery context via restore_task and list_trash and states the key when-not condition: conflict when the task has WBS children or dependants, requiring re-parenting or deletion first. It stops short of explicitly routing to purge_task for permanent deletion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_task_dependencyDelete task dependencyA
DestructiveIdempotent
Inspect

Delete a single task dependency by its id. Requires Administrator or ProjectManager role.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDependency id

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new operational context by naming the required role (Administrator or ProjectManager), which is not derivable from any structured field. It stops short of explaining side effects such as whether dependent tasks are rescheduled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler. The action and scope come first, with the access precondition second where a blocking constraint belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive delete with full annotation coverage and no output schema, the description covers purpose, scope and authorization. The only meaningful gap is downstream effect (dependency removal impact on scheduling), which an agent might want before invoking a destructive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, so the schema already defines 'id' as the Dependency id. The description's 'by its id' restates that without adding format, source, or lookup guidance, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (delete a task dependency) plus the lookup key (id), and the word 'single' implicitly contrasts with the bulk sibling clear_task_dependencies. It does not name any sibling explicitly, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The qualifier 'single' hints that bulk removal is handled by a different tool (clear_task_dependencies), but the agent must infer that routing rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_task_reminderDelete task reminderA
DestructiveIdempotent
Inspect

Remove the caller's own reminder from a task. Returns not-found if no reminder is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id whose reminder should be removed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: deletion is restricted to the caller's own reminder (no cross-user deletion) and a call with no existing reminder yields not-found rather than a silent success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, the operation first and the failure mode second; nothing is repeated from the schema or annotations and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive tool with full annotation coverage and no output schema, the description covers the essential behaviors: ownership scope and the not-found outcome. What remains unsaid (whether other users' reminders on the same task are untouched, whether task existence is validated first) is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single taskId parameter is fully documented in the schema. The description adds no format, range, or ownership hints about taskId, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Remove) and a precisely scoped resource (the caller's own reminder on a task), which separates it from delete_task and set_task_reminder. It never names a sibling explicitly, so differentiation is achieved through resource precision rather than explicit routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"the caller's own reminder" implies the ownership precondition for use, but the description gives no explicit when-to-use/when-not-to-use guidance and points to no alternative (e.g. list_my_reminders to check first, or set_task_reminder to overwrite instead).

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 entryA
DestructiveIdempotent
Inspect

Delete a time entry. The owner may delete their own; an Administrator may delete anyone's. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTime entry id

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: who is authorized to delete and the plan-limit error behavior in Free workspaces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loaded with the core action, followed by permission rules and plan constraints. Every sentence adds useful information with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete tool with rich annotations, the description covers the essential action, authorization model, and plan gating. No output schema exists, and the annotations already cover destructiveness and idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter and schema coverage is 100%, so the schema already documents the only input. The description does not add syntax or format details about the time entry id beyond what the schema provides, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Delete a time entry.' It is clearly distinct from sibling tools like update_time_entry, log_time, and list_time_entries by operation type, though it does not explicitly name an alternative sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: owner versus Administrator permissions and the Pro-plan requirement, including the Free-workspace failure mode. It does not explicitly route between this and alternatives such as update_time_entry, but the delete operation is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_commentEdit commentA
Idempotent
Inspect

Rewrite one of the caller's OWN comments (nobody can edit someone else's). Replaces the whole body. To mention someone (they get a notification), write the token @Display Name in the body, e.g. "@Ani Rahma can you check this?" — the integer id is what counts (resolve it with list_users); a name without the token is plain text and notifies nobody. Returns the updated comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment id
bodyYesThe new full text

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses the ownership restriction, that the entire body is replaced, that mention tokens trigger notifications, and that the updated comment is returned. These are material behavioral details not captured by readOnlyHint, idempotentHint, or destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the action and ownership constraint, then moves efficiently through replacement behavior, mention syntax, and return value. The example earns its place by illustrating a non-obvious token format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with rich annotations, the description covers ownership, replacement semantics, mention syntax, and return behavior. Nothing important for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds essential meaning for the body parameter: the exact @[Display Name](userId) mention syntax, the requirement for an integer id, and the consequence that plain names notify nobody. That is substantial parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Rewrite one of the caller's OWN comments." It distinguishes this from add_comment and delete_comment by making clear it replaces an existing comment body, and it adds the ownership constraint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says when editing is allowed (only the caller's own comments) and explains the mention workflow needed when editing. It does not explicitly name add_comment or delete_comment as alternatives, but the operation boundary is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activityGet activityA
Read-onlyIdempotent
Inspect

Read the workspace's activity feed (the audit trail of who did what), newest first. Narrow it with the optional filters: one task or project (entityType + entityId), everything in a project (projectId), or everything one person did (actorId). Each event has an eventKind (e.g. task.created, task.status_changed, comment.created) and a raw payload. Pages by cursor: pass the reply's nextBefore as before to read further back. A Free workspace sees the last 90 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size 1-100 (optional, default 50)
beforeNoCursor: the nextBefore value from the previous page (optional)
actorIdNoOnly events by this user id (optional)
entityIdNoId of that task/project/comment (optional)
projectIdNoOnly events in this project (optional)
entityTypeNo"task", "project" or "comment" (optional; required with entityId)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, so the description's job is to add operational context — and it does: newest-first ordering, cursor-based pagination semantics, and a Free-workspace 90-day retention limit that materially changes what results the agent can expect. It does not describe rate limits or response envelope details, but for a read-only list that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each carrying distinct information: what it returns, how to filter, what an event looks like, how to paginate, and the retention constraint. The core identity is front-loaded and nothing is repeated from the schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 describing the event shape (eventKind values plus a raw payload) and the cursor/nextBefore paging contract, and it flags the 90-day data window. An agent has everything needed to call and page through it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns above baseline by explaining filter combination logic (entityType must pair with entityId; projectId and actorId are independent scopes) and by spelling out pagination flow, which the terse schema labels alone don't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read the workspace's activity feed") and disambiguates it from the rest of the catalog by defining it as the audit trail of who did what, ordered newest first. No sibling (get_task_status_history, list_comments) does the same thing, so an agent can select it confidently.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent how to narrow the feed: one entity via entityType+entityId, a whole project via projectId, or a person via actorId, plus the cursor rule (pass reply's nextBefore as before). It gives clear usage context but never names a sibling as a mutually exclusive alternative, 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.

get_agent_runGet an AI agent runA
Read-onlyIdempotent
Inspect

Read one agent run: its state (queued, running, proposed, completed, applying, applied, rejected, stale, failed), the summary, the plan (the proposal or the digest), the model, the tokens used and the credits charged, and any error. Poll this after run_agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRun id

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it enumerates the lifecycle states (queued through failed), lists returned fields including credits charged and any error, and frames the tool as a polling mechanism, though it omits details like behavior when the run id is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste: the first front-loads the core action and enumerates return contents efficiently; the second gives a terse, actionable polling instruction. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only one fully documented parameter, the description compensates by thoroughly enumerating the returned fields and lifecycle states. It also clarifies the polling usage pattern, making it complete enough for an agent to call the tool correctly without additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its single parameter ('id': 'Run id'), so the schema already explains the parameter fully. The description reinforces that this is a run identifier by context but adds no syntax, format, or meaning beyond what the schema provides, making 3 the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Read one agent run') and enumerates exactly what is returned: state, summary, plan, model, tokens, credits, and error. It distinguishes itself from the sibling list_agent_runs by emphasizing 'one' run, and from run_agent by its read-only polling role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states 'Poll this after run_agent', giving a clear primary use case. However, it does not mention alternatives like list_agent_runs for enumerating multiple runs or clarify whether it can be used outside the polling workflow, leaving a small gap in 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.

get_ai_creditsGet AI creditsA
Read-onlyIdempotent
Inspect

The active workspace's AI credit balance: available credits, how many are this month's allowance, the one-time trial and purchased packs, when the allowance resets, the packs on sale, and recent ledger lines. Each agent run holds credits first and settles to what the model actually used.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavior the annotations cannot: 'Each agent run holds credits first and settles to what the model actually used', which explains why balances may look momentarily reserved rather than settled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core noun phrase ('The active workspace's AI credit balance') followed by a compact enumeration and one clarifying sentence about settlement. The middle enumeration is a long comma run-on, but every item listed is information the agent would otherwise lack.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return shape, and it does: available credits, monthly allowance, trial credits, purchased packs, reset timing, purchasable packs, and recent ledger lines. What it lacks is any indication of units, magnitude, or how much ledger history is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The implicit 'active workspace' scoping is the only parameter-like concept and is stated in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get ... AI credit balance') scoped to 'the active workspace', then enumerates the components returned. It does not distinguish itself from the potentially overlapping sibling get_entitlements, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the content described — there is no explicit 'use this when…' clause, no exclusion, and no pointer to an alternative such as get_entitlements. For a zero-parameter read tool the implied use is fairly obvious, but nothing steers the agent between competing lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_assignmentGet assignmentA
Read-onlyIdempotent
Inspect

Get a single assignment by its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssignment id

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds only the singular-fetch nuance ('single assignment'), without additional details such as error behavior or return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It communicates the core action and lookup key immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-record getter with rich annotations and complete parameter schema coverage, the description is nearly sufficient. It does not describe return fields or not-found behavior, but those gaps are minor given the tool's simplicity and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the sole parameter 'id' is documented as 'Assignment id.' The description adds no further meaning beyond what the schema already provides, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Get a single assignment by its id.' That is clear and distinguishes a single-record fetch from list-style siblings such as list_assignments and list_assignments_by_task, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by its id' implies the tool should be used when an assignment id is already known, but the description does not explicitly state when to use this versus list_assignments or other retrieval tools. Usage guidance is therefore 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.

get_earned_valueGet earned valueA
Read-onlyIdempotent
Inspect

Earned-value figures for a project in its currency: BAC (budget), PV (planned value to date), EV (earned value), AC (actual cost), SPI and CPI (below 1 = behind schedule / over budget) and EAC (estimate at completion). Uses the project's baseline when it has one. Administrator or ProjectManager. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id
utcOffsetMinutesNoThe caller's UTC offset in minutes, so "to date" is the user's today (optional, default 0)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing the baseline-vs-no-baseline behavior, authorization requirements, plan gating with the actual failure mode, currency scoping, and how utcOffsetMinutes shifts the "to date" calculation. This is exactly the operational 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool returns, then constraints in descending importance (baseline, role, plan). The acronym list is dense but every term earns its place since there is no output schema to document return fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, describing the returned metrics is essential and it does so completely, including how to interpret SPI/CPI. Permissions, plan limits, baseline behavior, and timezone handling are all covered — 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.

Parameters3/5

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 reinforces the meaning of "to date" via PV but adds little syntax or behavior detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (earned-value figures for a project) and immediately enumerates the returned metrics with acronym expansions, so an agent knows exactly what it gets back. It is clearly distinguishable from siblings like get_project_costs or get_progress_trend.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: requires Administrator or ProjectManager role, Pro plan only, and warns that a Free workspace returns a plan-limit message. However it never names alternatives (e.g. get_project_costs) or states when not to use this tool, so 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.

get_entitlementsGet entitlementsA
Read-onlyIdempotent
Inspect

Return the active workspace's plan and usage: plan (free/pro), subscription status, seat and project limits vs current counts, and trial/period end dates. Time tracking, costs, the RAID register, share links and webhooks are Pro features.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered and the description's job is narrower. It adds real value by disclosing the returned content and the feature-gating semantics (which capabilities are Pro), though it says nothing about auth requirements, workspace scoping behaviour for non-active workspaces, or error cases on a free plan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the return payload and followed by the Pro-feature note that explains why the plan data matters. 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no input parameters, no output schema and full annotation coverage, the description carries the remaining burden by enumerating the returned fields and the plan gating rule. Nothing an agent needs in order to call it correctly or interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there is nothing to disambiguate; baseline 4 applies. The description correctly implies the workspace is implicit ('the active workspace's'), which is the one semantic point worth flagging for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource ('Return the active workspace's plan and usage') followed by an enumeration of exactly what comes back: plan tier, subscription status, seat/project limits vs counts, and trial/period end dates. That enumeration makes it unmistakable against neighbours like get_ai_credits or whoami, which return different slices of account data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer it should call this to check whether Pro-gated features (time tracking, costs, RAID, share links, webhooks) are available. There is no explicit 'use this when...' or 'do not use this for...' clause, and no named alternative such as get_ai_credits for credit-specific questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_progress_trendGet progress trendA
Read-onlyIdempotent
Inspect

Burn-up for one project (or the whole workspace): scope vs done, day by day over the last N days, plus planned vs earned percent and the schedule performance index (SPI < 1 = behind plan). Answers "are we on track / speeding up / slipping?". Team roles only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of history, 7-180 (optional, default 30)
projectIdNoProject id (optional; omit for the whole workspace)
utcOffsetMinutesNoThe caller's UTC offset in minutes (e.g. 420 for UTC+7), so "this week" and "today" are the user's own (optional, default 0 = UTC)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive, closed-world profile, so the bar is lower. The description still adds valuable behavior: the team-role access restriction and the SPI interpretation rule (SPI < 1 = behind plan), which 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the burn-up concept and packs the return contents, the diagnostic question, and the access restriction into three tight sentences with no filler. Parentheticals are used efficiently to cover project-vs-workspace scope and SPI direction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description explains the returned content well enough (scope vs done by day, planned vs earned percent, SPI). Safety is covered by annotations and the access restriction is stated, though the exact response shape and row granularity are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters, including utcOffsetMinutes, are already fully documented. The description reinforces that days means a trailing window and that omitting projectId selects the whole workspace, but it adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific artifact (burn-up), the scope (one project or the whole workspace), and the exact metrics returned (scope vs done day by day, planned vs earned percent, SPI). An agent can distinguish this reporting tool from siblings like get_earned_value 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context through the framing question ("are we on track / speeding up / slipping?") and a role restriction ("Team roles only"). It does not explicitly name an alternative tool or when-not to use this one, so it falls 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.

get_projectGet projectB
Read-onlyIdempotent
Inspect

Get a single project by id from the active workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds useful scope by noting retrieval is from the "active workspace," but does not mention not-found behavior, permissions, or return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single, front-loaded sentence with no wasted wording. It communicates the action, resource, lookup key, and workspace scope efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only single-entity lookup with rich annotations and a fully documented parameter schema, the description is largely complete. It could optionally clarify return content or not-found behavior, but those gaps are minor for this tool shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the sole parameter is documented as "Project id" with integer type. The description reinforces that lookup is by id but adds no format, validity, or source details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Get a single project by id." It implicitly distinguishes this from list_projects by emphasizing a single project, and from update/delete by using "Get," but it does not explicitly name sibling alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as list_projects or get_projects_report. The intended use is implied by "single project by id," but no exclusions or alternative-routing guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_costsGet project costsA
Read-onlyIdempotent
Inspect

A project's budget against its actual cost (logged time × hourly rates) and planned cost, with hours per person. Administrator or ProjectManager; a ProjectManager sees each person's hours but not their cost. Time with no rate set is reported as unpricedMinutes. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint already declaring safety, the description adds substantial context: role-based visibility (a ProjectManager sees hours but not cost), unpriced-time reporting as unpricedMinutes, and a specific plan-limit failure mode for Free workspaces. These are behaviors an agent cannot 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is computed, then permissions and edge cases. Dense but each sentence carries distinct information; the parenthetical rate formula is slightly heavy but earns its place by defining actual cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey return content, and it does: budget vs actual vs planned cost, per-person hours, and unpricedMinutes. It does not fully describe the response structure, but it is sufficient for an agent to decide to call it and interpret the key fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema already carries the burden. The description adds no syntax or format detail for projectId beyond what the schema states, which is the expected baseline at high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and defines the computation precisely: budget vs actual cost (logged time × hourly rates) and planned cost, with hours per person. That distinguishes it from siblings like get_project, get_earned_value and get_resource_usage 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions for use: Administrator or ProjectManager role, Pro plan only, and notes what a Free workspace returns. It doesn't explicitly route the agent between this and cost-adjacent siblings (e.g., get_earned_value, get_resource_usage), but the access conditions are concrete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_projects_reportGet projects reportA
Read-onlyIdempotent
Inspect

The Projects Report: per project, task counts by status, percent complete, start/finish, overdue count and next milestone; plus the workspace's overdue and at-risk tasks (with days late and assignees) and per-person open/in-progress/done counts. The best single call for "how are my projects doing?". Team roles only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the "Team roles only" authorization restriction and the detailed breakdown of what the response contains. With no output schema present, spelling out the returned sections is genuinely useful. It doesn't state whether archived/completed tasks are included, a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the report contents and closing with the use case and access restriction. The content enumeration is dense but each clause conveys a distinct returned section; no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no params, the description must carry the return-value burden, and it does so by listing every report section. Combined with the access note, an agent has enough to select and call it. Minor omission: no hint about scope limits (e.g., whether completed/archived projects or date ranges are included).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing parameter-level for the description to disambiguate, and it correctly spends no words on inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (a projects report) and enumerates the exact contents: per-project task counts by status, percent complete, dates, overdue counts, next milestone, plus workspace overdue/at-risk tasks and per-person counts. This clearly separates it from siblings like get_progress_trend, get_earned_value, or get_workload, which cover narrower analytics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"The best single call for 'how are my projects doing?'" gives an explicit usage scenario and positions it as the aggregate alternative to multiple narrower calls. "Team roles only" adds a prerequisite constraint. It stops short of naming specific sibling tools it replaces or when not to use it, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resource_usageGet resource usageA
Read-onlyIdempotent
Inspect

Return the resource-allocation summary for every workspace member: total allocated days, effective daily capacity, and whether they are overloaded. Useful for spotting over-assigned people.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds the shape of the result set (one row per member with an overload flag), but says nothing about how capacity is derived, whether all-time or current-period data is returned, or how large workspaces are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no padding. The output content comes first and the interpretive hint ('spotting over-assigned people') is deferred to the end, which is the right ordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields, which is the key thing an agent needs. The remaining gap is temporal scope — it is unstated whether the summary reflects all current assignments or a period — but nothing else material is missing for a zero-argument read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters and the schema is empty, so there is nothing for the description to disambiguate. Baseline for a zero-parameter tool applies; no credit is lost, but the description also has no chance to clarify a scope argument (e.g. a date range) that would have been useful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb-plus-resource: returns a resource-allocation summary per workspace member, and names the three concrete outputs (allocated days, effective daily capacity, overloaded flag). It is clear what the tool produces, though it never distinguishes itself from the similarly-scoped get_workload sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for spotting over-assigned people' implies a use case but gives no when-to-use rule, no exclusions, and no routing to alternatives such as get_workload — an agent must infer which of the two workload views to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scenarioGet scenarioA
Read-onlyIdempotent
Inspect

Compare one scenario with the plan as it stands now. A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScenario id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, and the description reinforces them rather than contradicting: changes in the scenario 'touch nothing until apply_scenario'. It adds genuinely new behavioral context by describing the response content (differing tasks, old and new dates, both project end dates) and the role requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the comparison purpose, but the phrase 'the plan as it stands now' appears twice with near-identical wording, so not every sentence earns its place. The access restriction is buried at the end rather than signaled up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description covers purpose, side-effect profile, permissions and what the answer contains. An agent could call it correctly; only the source of a valid scenario id and any behavior for a stale/applied scenario are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the 'Scenario id' description already carries the meaning. The body text only implies the id selects a single scenario, adding nothing about format or how to obtain a valid id (e.g. via list_scenarios). 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Compare one scenario with the plan as it stands now') and defines what a scenario is (a private copy of one project's dates). The mention of apply_scenario as the commit step distinguishes this read/compare operation from the mutation siblings without the agent needing to open another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear operating context: this is the non-destructive preview, nothing changes until apply_scenario, and it is restricted to Administrator/ProjectManager. It does not explicitly say when to prefer it over list_scenarios or create_scenario, so it falls short of a full when/when-not treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_taskGet taskB
Read-onlyIdempotent
Inspect

Get a single task by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds only the 'single task' scope and does not describe not-found behavior, permissions, or returned task fields, which is acceptable but minimal given the strong annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with the resource and lookup key front-loaded. It has no redundant or wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with comprehensive annotations and full schema coverage, the description is sufficient to invoke correctly. The main remaining gap is the absence of return-value detail, but 'Get a single task' reasonably implies a task object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as 'Task id'. The description reinforces that the id identifies a task but adds no format, validation, or lookup semantics beyond what the schema already provides, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get a single task by id.' This clearly identifies the operation and distinguishes it from list-style tools, but it does not explicitly differentiate it from nearby siblings such as get_task_status_history, get_task_time, or list_tasks_by_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by id' weakly implies that the tool is appropriate when a task id is known, but there is no explicit when-to-use guidance, no exclusions, and no named alternative such as list_tasks for broader retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_task_status_historyGet task status historyA
Read-onlyIdempotent
Inspect

Get the status-change timeline for a task (newest first), as the audit log of who moved it when.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts: results are ordered newest-first and include the actor and timestamp per change. It stops short of disclosing volume limits, pagination, or whether all transitions or only status changes are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler; the ordering constraint and the audit-log framing are front-loaded and both earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must carry return-value information, and it does so only partially — 'who moved it when, newest first' implies actor/timestamp/status fields but not the exact shape, entry count, or pagination. For a simple single-parameter read tool this is adequate but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (taskId) and schema coverage is 100%, so the schema already documents it fully. The description adds no information about the parameter itself — no mention of what happens for an unknown task id or whether the id refers to a top-level task vs subtask. 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (status-change timeline for a task), and adds ordering and content semantics ('newest first', 'audit log of who moved it when'). It is clearly distinguishable from get_task or get_activity by the explicit 'status-change timeline' scoping, though it does not name any sibling directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource name — you call this when you need the history of a task's status transitions — but there is no explicit when-to-use guidance, no mention of how it differs from get_activity, and no prerequisites (e.g., task must exist, permission required).

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 timeA
Read-onlyIdempotent
Inspect

Time logged on one task: total minutes from everyone, the estimate (from the task's effort) and the entries — all of them for an Administrator/ProjectManager, only the caller's own for a Member. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/non-destructive profile, and the description goes well beyond them: it discloses that the result set is permission-dependent (all entries for Administrator/ProjectManager, only the caller's own for a Member) and that a Free workspace returns a plan-limit message. Permission-scoped output and plan-gated failure behavior are exactly the non-obvious traits an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and the returned values, then the plan constraint. Every clause carries information — the em-dash enumeration of what is returned and the role split both earn their space; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return values and it does so (total minutes, effort-derived estimate, entries). It omits finer detail such as whether the estimate is null when effort is unset or whether entries are truncated for large tasks, which keeps it from a 5 for a non-trivial aggregate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage, so the schema already documents taskId fully. The description adds no format, scope, or edge-case detail about taskId beyond what is in the schema, making 3 the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Time logged on one task') and enumerates the three things returned: total minutes, the estimate from effort, and the entries. An agent can tell this is a per-task time aggregate rather than the raw entry listing of list_time_entries. It does not name any sibling explicitly, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a hard prerequisite — 'Pro plan only (a Free workspace gets a plan-limit message)' — which is real usage guidance. However, it never says when to reach for this versus get_task, list_time_entries, or get_earned_value, so the choice among 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.

get_userGet userA
Read-onlyIdempotent
Inspect

Get a single workspace member by their integer user id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser id

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the scoping detail that the target is a workspace member; it says nothing about missing-id behavior, error results, or visibility restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero redundancy; the resource, the singular scope, and the lookup key all appear immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full schema coverage and complete safety annotations and no output schema, the definition is close to sufficient. The only real gap is what happens on an unknown id, which an agent would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is typed as integer, so the baseline is 3. The description restates the id type and meaning but adds no syntax, range, or format guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a single workspace member') plus the lookup key ('by their integer user id'), which is unambiguous. It does not explicitly differentiate itself from list_users or whoami, so an agent must infer the distinction from the singular wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'single ... by their integer id' tells the agent this is the lookup for when an id is already known, leaving list_users as the alternative. There is no explicit when-to-use/when-not or sibling routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_working_calendarGet working calendarA
Read-onlyIdempotent
Inspect

Read the workspace's working calendar: working weekdays (ISO 1 = Monday … 7 = Sunday), hours per working day, and days off — public holidays (no userId) and people's leave (with userId). Task durations in days count working days only, and scheduling and workload use this calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real value beyond them by explaining the calendar's semantics — that durations in days are measured in working days and that scheduling/workload consume this data — which an agent cannot 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence that front-loads the resource and return contents, followed by the semantic note. Nearly every clause earns its place, though the userId phrasing is both wrong and verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must carry return-value explanation; it names the categories but not their shape or format (e.g., how hours-per-day and days-off are structured). The nonexistent userId parameter is left unresolved, creating a real ambiguity for a zero-argument tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, so the baseline would be 4. However, the description repeatedly references a 'userId' input ('public holidays (no userId)', 'with userId'), which does not exist in the schema — this actively misleads an agent into attempting to pass an argument the tool does not accept.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the workspace's working calendar') and enumerates exactly what it returns: working weekdays, hours per working day, and days off. This clearly separates it from siblings like add_day_off, remove_day_off, and get_workload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives domain context that implies when the result matters ('Task durations in days count working days only, and scheduling and workload use this calendar'), but never says explicitly when to call this tool or which alternative to pick. No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workloadGet workloadA
Read-onlyIdempotent
Inspect

Workload by week, from the current week: for each person, the hours their tasks ask of them against the hours they have (working calendar, capacity and leave). allocatedHours above capacityHours, or overDays > 0, means that person is over-booked that week. Team roles only.

ParametersJSON Schema
NameRequiredDescriptionDefault
weeksNoHow many weeks ahead (optional)
utcOffsetMinutesNoThe caller's UTC offset in minutes (e.g. 420 for UTC+7), so "this week" and "today" are the user's own (optional, default 0 = UTC)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe, read-only, idempotent operation. The description adds useful behavioral context beyond annotations: it starts from the current week, explains the available-hours inputs, and defines over-booking via allocatedHours above capacityHours or overDays > 0. It still does not discuss permissions or error behavior, so a 4 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and uses every sentence productively. The reporting scope and over-booking interpretation are presented without unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully identifies the key returned fields and over-booking logic, and the annotations cover the safety profile. It is largely complete for an agent to call the tool, though it does not fully describe the response shape or all possible returned fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description implies a forward-looking weekly range and user-local week boundaries, but does not add parameter-level syntax or defaults. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource and scope: weekly workload per person, comparing task hours against available hours from working calendar, capacity and leave. It is specific about the output and what over-booked means. It does not explicitly distinguish itself from similar reporting siblings such as get_resource_usage, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the weekly workload reporting context and the scope restriction 'Team roles only.' However, there is no explicit guidance on when to choose this tool versus alternatives like get_resource_usage, and no exclusions beyond the team-role restriction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agent_runsList AI agent runsA
Read-onlyIdempotent
Inspect

List recent agent runs in the active workspace, newest first, optionally for one project. Page back with before = the smallest id already seen.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeNoOnly runs older than this id (optional, for paging)
projectIdNoOnly runs for this project (optional)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds non-obvious behavior beyond that: deterministic ordering (newest first) and the direction of paging, which matter for correct iteration. It stops short of disclosing page size or default limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the core operation front-loaded, then scope, ordering, and paging guidance in descending priority. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing what a run record contains and what a page returns (size, cursor termination), and it does neither. Ordering and paging direction are covered, so it's adequate but with a clear gap for an agent that must interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a genuinely useful recipe not in the schema: `before` should be the smallest id already seen, which pins down the exact paging convention. `projectId` scoping is restated rather than extended, so it's a modest net gain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List recent agent runs") plus scope (active workspace, newest first, optional project filter). It is clearly distinguishable from get_agent_run by name and behavior, though the description never explicitly contrasts itself with that or other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent can infer this is the browsing/paging entry point for runs, and the pagination instruction gives a concrete procedure. There is no explicit "use get_agent_run when you have an id" routing or any when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsList AI agentsA
Read-onlyIdempotent
Inspect

List the AI agents this workspace can run — kind, whether it needs a projectId, whether its result can be applied, its typical cost in credits, and whether the caller's role may run it — and whether AI is configured on this server at all.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description earns credit for what it adds: the concrete shape of each returned entry and the side-signal that it also reports whether AI is configured on the server at all. That last clause matters behaviorally — a caller can learn AI is unavailable without a failed run — and is not derivable from any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and scope, with the em-dash clause carrying only substantive content. Every clause maps to a distinct piece of returned data, so nothing is filler despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description's main obligation is to describe what comes back, and it does so field by field. Minor gap: it does not say whether the list is filtered by the caller's role (only that per-agent runnability is reported) or note any ordering/absence case such as an empty list when AI is unconfigured.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly spends no words on input semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the AI agents this workspace can run") and then enumerates exactly what each entry conveys: kind, projectId requirement, applyability, credit cost, and role permission. This implicitly separates it from list_agent_runs and get_agent_run, but never names those siblings, so an agent scanning a long sibling list must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use, prerequisites, or alternative is given. The natural workflow (call this before run_agent or apply_agent_run to pick an agent) is only implied by the returned fields, such as 'whether its result can be applied' and 'typical cost in credits'. Usable 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.

list_assignmentsList assignmentsA
Read-onlyIdempotent
Inspect

List all user↔task assignments in the active workspace. Prefer list_assignments_by_task when you only need one task's assignees — this returns the entire workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only the scope hint that the result covers the entire workspace. It says nothing about response size, pagination, or ordering for what could be a large unfiltered list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, and the scoping statement is front-loaded ahead of the sibling routing guidance. Each sentence carries distinct, actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with rich annotations and no output schema, the description covers purpose, scope, and alternative routing — enough to invoke it correctly. The only missing piece is guidance on result volume or pagination for a workspace-wide list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics for the description to explain. Baseline 4 applies; the description correctly implies no filtering arguments exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List all user↔task assignments") plus an explicit scope ("in the active workspace"). It also names the sibling it is not (list_assignments_by_task), so an agent can distinguish them 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to prefer the alternative: "Prefer list_assignments_by_task when you only need one task's assignees." It also states the condition that selects this tool instead — the request spans the entire workspace — 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.

list_assignments_by_taskList assignments by taskA
Read-onlyIdempotent
Inspect

List the users assigned to one task (server-side filtered). Returns 404 if the task is not in the active workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavior ('Returns 404 if the task is not in the active workspace'), which tells the agent how failure manifests. It doesn't mention ordering or pagination, but for a filtered read that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste. The core operation is front-loaded and the 404 behavior follows as supporting detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, fully annotated, single-param read tool this is nearly complete: it names the returned entity (the users assigned) and the failure mode. With no output schema, a brief note on ordering or empty-result behavior would be the only addition, which is a small gap rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (taskId) with 100% schema coverage, so the schema already documents it. The description's phrase 'one task' reinforces that exactly one task id is passed, but adds no format or syntax detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the users assigned to one task') and adds the scoping qualifier 'server-side filtered', which separates it from the broader list_assignments and from get_assignment. It stops short of naming those siblings explicitly, so differentiation is implied by scope rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this when you have one task id and want its assignees rather than all assignments. The 404 note hints at a precondition (task must be in the active workspace), but there is no explicit when-to-use/when-not guidance or named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commentsList commentsA
Read-onlyIdempotent
Inspect

Read the comment thread on a task or a project, oldest first. Replies carry parentCommentId (threads are one level deep). A deleted comment appears only as a tombstone (isDeleted, no body) when a live reply still hangs off it. Mentions appear in bodies as @Name.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityIdYesId of the task or project
entityTypeYes"task" or "project"

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description adds substantial behavior: ordering is oldest first, replies use parentCommentId, threads are one level deep, deleted comments appear as tombstones only when a live reply exists, and mentions use a specific format. This is exactly the kind of context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and then packs useful behavioral details about ordering, threading, tombstones, and mentions without wasting space. Every clause contributes to correct invocation or interpretation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with full schema coverage and no output schema, the description is largely complete: it explains the main result shape, reply threading, deleted-comment tombstones, and mention syntax. It does not mention pagination or whether all comments are always returned, which would fully close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both entityId and entityType are already documented in the schema. The description reinforces that the thread belongs to a task or project, but adds no syntax or format details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read the comment thread on a task or a project.' It also adds ordering ('oldest first'), which clearly distinguishes this list operation from add_comment, edit_comment, and delete_comment siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it is for reading comments attached to either a task or a project. It does not explicitly name alternatives such as add_comment or edit_comment, nor does it state when not to use it, but the intended context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_fieldsList custom fieldsA
Read-onlyIdempotent
Inspect

List the workspace's custom task fields: id, name, type (text, number, date, checkbox, select, url) and, for a select, its options. Values are read with list_custom_field_values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing the shape of the returned records, including the enumerable type values (text, number, date, checkbox, select, url) and the conditional 'options' field for selects — context an agent cannot get 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence, front-loaded with the verb and resource, then the return fields, then the alternative-tool pointer. Every clause earns its place with no repetition of the title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema and no parameters, the description must carry the return-shape burden, and it does: it lists the returned attributes and type values. A mention of ordering, workspace scoping requirements, or whether archived fields are included would push this to a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema imposes nothing to explain and the baseline of 4 applies. The description correctly spends its words on output semantics instead of inventing parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the workspace's custom task fields') and enumerates exactly what is returned: id, name, the type enum, and select options. This makes it immediately distinguishable from the sibling list_custom_field_values, which the description explicitly names as the tool for values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence, 'Values are read with list_custom_field_values,' gives a clear routing rule: use this tool for field definitions, use the sibling for per-task values. There are no explicit exclusions or preconditions, but in a zero-parameter read tool that is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_field_valuesList custom field valuesA
Read-onlyIdempotent
Inspect

List custom-field values as (taskId, fieldId, value) rows — for one project, or the whole workspace. Join fieldId against list_custom_fields for the field's name.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoOnly this project's tasks (optional)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds behavior the annotations can't: the exact row tuple returned and the requirement for a follow-up lookup to make fieldId human-readable. It doesn't mention pagination or result-size limits, which is the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus a short join hint; the output shape and scope are front-loaded and every clause carries information. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by declaring the row tuple, and it flags the two-step name resolution. For a workspace-wide list it doesn't say whether results are paginated or bounded, which is the one thing an agent might still need before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is documented as optional, so the baseline is met. The description goes further by spelling out the consequence of omitting projectId — you get the whole workspace — which the schema's 'optional' alone does not make explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list custom-field values) plus the exact output shape — (taskId, fieldId, value) rows — and the scope (one project or whole workspace). It also distinguishes itself from the adjacent list_custom_fields tool by positioning that one as the source of field names, so an agent can pick between them immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: use with projectId for a single project, omit it for the whole workspace, and join fieldId against list_custom_fields to resolve names. It doesn't name an explicit exclusion or a conflicting alternative (e.g. reading a single task's fields via get_task), 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.

list_invitationsList invitationsA
Read-onlyIdempotent
Inspect

List all invitations (any status) for the active workspace. Administrator only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds genuinely new behavioral context by disclosing the admin-only authorization requirement, which matters for error handling. It says nothing about pagination, result ordering, or result size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste; the scope and status qualifier come first and the permission constraint follows. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with full annotation coverage, the description supplies the two things annotations can't: workspace scoping and admin gating. The only gap is behavior at scale (pagination/result caps), which is minor given there is no output schema to defer to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description correctly implies no inputs are needed to scope the call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all invitations') plus the scope ('active workspace') and status filter ('any status'), which distinguishes it from create_invitation and revoke_invitation. It doesn't explicitly name a sibling, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Administrator only' signals a prerequisite, and '(any status)' implies this is the unfiltered enumeration option. However, there is no explicit when-to-use guidance, no mention of how it relates to list_users or list_project_guests, and no note on what to do if the caller lacks admin rights.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_notificationsList my notificationsA
Read-onlyIdempotent
Inspect

Read the caller's own notification inbox (assignments, mentions, comments on their tasks, …), newest first. Each row has its kind, the event, who did it (actorName) and readAt (null = unread). Pages by cursor: pass nextBefore as before.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size 1-100 (optional, default 30)
beforeNoCursor: the nextBefore value from the previous page (optional)
unreadOnlyNoOnly unread notifications (optional, default false)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, so safety is covered; the description adds genuinely new behavior: result ordering (newest first), the fields each row carries (kind, event, actorName, readAt), and the null-means-unread convention. Cursor mechanics are described, though rate/limit behavior is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: scope first, then the row shape, then pagination. No filler, and the most decision-relevant information (what it reads and whose) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 shape and it does so — row fields, ordering, and the cursor round-trip. Combined with the fully documented schema and read-only annotations, an agent has everything needed to call this once and then page correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline 3 applies, but the description adds meaning the schema lacks: 'pass nextBefore as before' links the page token in the response to the `before` parameter, and 'readAt (null = unread)' ties into unreadOnly. Only `limit` is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the caller's own notification inbox') and enumerates the content types it covers (assignments, mentions, comments on their tasks). 'Caller's own' plus 'notification inbox' clearly separates it from list_my_reminders, list_comments and the mark_*_read siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context — the caller's own inbox only, newest first — and explains how to continue paging. It never names an alternative or an explicit when-not condition (e.g. use mark_all_notifications_read to clear, or unreadOnly instead of paging), 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_my_remindersList my remindersA
Read-onlyIdempotent
Inspect

List the caller's own task reminders in the active workspace, soonest first. Each entry includes the task id and title, the workspace, and the reminder time (UTC).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds value beyond that: it bounds the scope to the caller's own reminders in the active workspace and guarantees a deterministic ordering (soonest first), which is real behavioral 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Scope and ordering are front-loaded in the first sentence, and the return fields follow. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 describe the shape of the result, and it does: task id, title, workspace, and reminder time with an explicit UTC note. Combined with the ordering guarantee, 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.

Parameters4/5

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; the baseline for a no-param tool applies. The field list in the description describes return values, not inputs, and does not confuse the two.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb plus resource ("List the caller's own task reminders") and narrows scope with "in the active workspace, soonest first," which separates it from general lists like list_tasks. It never names a specific sibling, so sibling differentiation is implied by scope 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"The caller's own" implies this is the read path for reminders you own, and the sibling names set_task_reminder / delete_task_reminder hint at the write counterparts, but the description does not say when to use this versus list_tasks or list_my_notifications. Usage is inferable, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_workspacesList my workspacesA
Read-onlyIdempotent
Inspect

List every workspace the caller belongs to, with their role and which one is active/owned. Note: this connector acts in the workspace pinned in your current session token; switching the active workspace requires re-authenticating your AI client.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, closed-world safety profile, so the description is free to add the non-obvious constraint that the active workspace is fixed by the session token and cannot be changed via this tool. That is genuinely useful behavioral context beyond the annotations, though it says nothing about result size or format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first defines the operation and its return contents, the second delivers the session-pinning caveat. Nothing is redundant and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns, and it does so at the field level (role, active/owned). What remains unstated is the response shape (list vs. envelope) and whether results are paginated, which is minor for a small, parameterless list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline of 4 applies; the description correctly implies a no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every workspace the caller belongs to') and also specifies what each entry carries (role, active/owned flag). This is clearly distinguishable from sibling tools like list_users or whoami, which address different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives real operational context: the connector acts in the workspace pinned in the session token, and switching requires re-authentication. That tells the agent when this tool's output cannot be acted on directly, though it does not name an explicit alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_guestsList project guestsA
Read-onlyIdempotent
Inspect

List the workspace's guests, each marked with whether they may read this project. A guest is a member with the Guest role (invite with create_invitation role=Guest): they take a seat, sign in, and see only the projects granted to them, read-only. Administrator or ProjectManager.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description adds the calling role requirement and the fact that guests see only granted projects read-only. No mention of pagination or result size, which keeps 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and the key output distinction, then supplies the guest definition and auth requirement. The second sentence is dense but every clause (seat, sign-in, read-only scope, role) is load-bearing for correct interpretation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-param read-only list tool with full schema coverage and annotations, this is nearly complete; it also hints at return content (per-guest project read flag). It does not describe ordering or result limits, which prevents a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and its schema description coverage is 100%, so the schema fully documents projectId. The description adds nothing about the parameter itself, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource (list the workspace's guests), plus the distinguishing output detail that each guest is marked with project read access. That separates it from list_users and list_invitations 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context (guests of this project, requires Administrator or ProjectManager) and points at create_invitation role=Guest for the creation path. It does not explicitly state when-not-to-use or contrast with set_project_guests/list_users, 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.

list_projectsList projectsA
Read-onlyIdempotent
Inspect

List all projects in the caller's active Madda Tasks workspace. Returns the API's JSON array.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety behavior is well covered. The description adds that results are returned as the API's JSON array and are scoped to the active workspace, but it does not mention pagination, ordering, result limits, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no wasted wording. The primary action and scope are front-loaded, and the return format is mentioned briefly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple, parameterless, read-only list tool with rich annotations. Because no output schema exists, the description could say more about the shape of project objects or pagination behavior, but for a low-complexity list operation the description is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter semantics for the description to clarify. The baseline for a parameterless tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (List) and resource (projects), and adds scope: the caller's active Madda Tasks workspace. It implicitly distinguishes itself from get_project (single project), though it does not explicitly name siblings such as get_project or list_tasks_by_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case (listing all projects in the active workspace) is implied but not framed as when-to-use guidance. There is no explicit comparison to get_project, list_tasks_by_project, or other list tools, and no when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_raid_itemsList RAID itemsA
Read-onlyIdempotent
Inspect

List a project's RAID register — its risks, assumptions, issues and dependencies — with owner, due date, score and response. Any team role. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the bar is lower; the description still adds real value by naming the fields surfaced per item (owner, due date, score, response) and by disclosing the failure mode on Free plans. It stops short of describing ordering, pagination, or what an empty register returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler, front-loaded with the core action and scope, followed by the plan constraint as a secondary note. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter read tool with rich annotations and no output schema, the description is nearly sufficient: purpose, returned fields, roles, and plan gating are all present. The only gap is the absence of any statement about result ordering or size limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (projectId) at 100% schema description coverage, so the schema already carries the semantics. The description adds the concept of project scoping but no format or constraint detail beyond what the schema states; this is the baseline 3 case where structured data does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description supplies a precise verb and resource ('List a project's RAID register') and spells out the RAID acronym and the fields returned, so an agent can immediately distinguish it from create_raid_item/update_raid_item/delete_raid_item. It never explicitly names those siblings as alternatives, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Any team role. Pro plan only (a Free workspace gets a plan-limit message)' gives concrete caller preconditions and an explicit exclusion for Free workspaces. It does not, however, contrast this tool with other retrieval routes (e.g. list_projects or search_calls-style filtering), so when-to-use remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_recurring_tasksList recurring tasksA
Read-onlyIdempotent
Inspect

List every repeating task in the workspace: taskId, frequency, interval, endsOn and how many occurrences have been created so far.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new context by disclosing that results are workspace-wide with no filtering and by listing the exact fields returned, though it says nothing about pagination, ordering, or result caps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler: scope first, returned fields after the colon. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description does the necessary work by naming the returned fields, which is what an agent needs to decide whether to call it. It falls short only on result-set size/ordering behavior for a potentially large workspace-wide list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. It correctly implies no filtering arguments exist by saying it lists every repeating task.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and a precisely scoped resource (every repeating task in the workspace), and enumerates the fields returned (taskId, frequency, interval, endsOn, occurrence count). The 'repeating' qualifier implicitly separates it from list_tasks, but no sibling is named explicitly, keeping it 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.

Usage Guidelines3/5

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 to set_task_recurrence and stop_task_recurrence, but the description never says when to call it versus list_tasks or how to act on the results. No prerequisites, exclusions, or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_saved_viewsList saved viewsA
Read-onlyIdempotent
Inspect

List saved views — named filter/group/sort settings for the task list, board, table, calendar or Gantt — for one project, or with no projectId the workspace-wide ones. The caller's own plus everyone's shared ones, newest first. config is stored as the app wrote it; read it, don't rewrite it. Guests cannot list views.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoProject id (optional; omit for workspace-wide views)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the read-only annotations: returns the caller’s own views plus everyone’s shared ones, newest first, and config is stored as the app wrote it. The guest restriction is also a useful behavioral constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded around the core listing behavior, with no wasted sentences. The clauses about config immutability and guest access each add useful scope or constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with one optional parameter and no output schema, the description supplies enough context to call it correctly. It covers scope, ordering, visibility, config handling, and guest restrictions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents projectId and its omission behavior. The description repeats the workspace-wide meaning but does not add syntax or format detail beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list saved views. It defines what a saved view is (named filter/group/sort settings across task list, board, table, calendar, or Gantt), which distinguishes it from the many list_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly explains the projectId condition: provide one project’s views, or omit it for workspace-wide views. It also states that guests cannot list views. It lacks explicit alternatives, but there is no close sibling that lists saved views, so the guidance is effectively complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scenariosList scenariosA
Read-onlyIdempotent
Inspect

List a project's what-if scenarios (id and name). A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds what annotations cannot: an authorization requirement (Admin/ProjectManager only) and the semantic meaning of what a scenario holds relative to the live plan. The middle sentence describing the comparison payload is somewhat opaque ('each answer'), slightly muddying rather than fully clarifying the behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and scope, and the definition of a scenario earns its place by disambiguating it from the baseline plan. The 'each answer compares...' sentence is dense and its referent is unclear, mildly diluting an otherwise tight three-sentence definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by stating the returned fields (id and name) and the authorization requirement, which is what an agent needs before calling. The vague comparison sentence is the only incompleteness, leaving the exact difference report ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the lone projectId parameter is documented in the schema, so the schema does the heavy lifting. The description only implies project scoping via 'a project's' and adds no format or constraint detail beyond that, which matches the baseline 3 for fully-covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List a project's what-if scenarios') and immediately brackets the payload to id and name. It also defines what the resource is ('a private copy of one project's dates'), which lets an agent separate it from get_scenario (single), create_scenario, and apply_scenario.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for using it and names apply_scenario as the counterpart that actually propagates changes, making the read-only enumeration role obvious. It also states the access prerequisite (Administrator/ProjectManager only). It stops short of explicitly routing to get_scenario for single-scenario detail, leaving that to inference from the sibling name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_task_dependenciesList task dependenciesA
Read-onlyIdempotent
Inspect

List all task dependencies (parent→child links) in the active workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds two useful facts: it returns ALL links with no filtering, and links are directional (parent→child), which matters when interpreting the graph. Missing pagination/volume expectations keeps 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the parenthetical and scope clause each carrying real information. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with a full annotation set and no output schema, the description covers what is needed to select and call it. It could add a note on return volume or ordering, but no output schema means nothing critical is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; the description correctly implies there are no filter arguments by scoping results to the active workspace.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list task dependencies) and clarifies the data's shape as parent→child links scoped to the active workspace. It doesn't explicitly name how it differs from create_task_dependency / delete_task_dependency / clear_task_dependencies, but the read-only, all-encompassing framing makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the tool to enumerate dependency links before mutating them, and 'in the active workspace' signals there is no project/task filter argument. There is no explicit when-to-use or when-not-to-use statement and no alternative named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksList tasksA
Read-onlyIdempotent
Inspect

List all tasks across every project in the active workspace. Returns the API's JSON array, in each project's outline order. To find a task by name, search is far cheaper on a large workspace. A Guest sees only the projects granted to them, without assignees. Pass milestonesOnly=true for the workspace's schedule gates alone — the quickest answer to "what's coming up" on a large workspace, since it filters server-side. A milestone marks a dated gate rather than a span of work (launch date, sign-off, go/no-go). The server holds it to one date — endDate is forced to equal startDate, so naming either one is enough — with duration 0 and progress that is only ever 0 or 100 (100 exactly when it is in the workspace's finished status). Setting isMilestone on a task that already has a date range collapses it onto its start date. WORK BREAKDOWN STRUCTURE. Tasks nest via wbsParentId, and every task carries a read-only wbscode — its dotted outline number within the project ("1", "2.3", "2.3.1") — plus issummary. wbsParentId is NOT a scheduling dependency: a WBS child sits INSIDE its parent's span and in fact defines it, whereas a predecessor runs BEFORE its successor. Predecessors are their own resource — create_task_dependency — and are unrelated to nesting. A task with at least one WBS child is a SUMMARY TASK and owns none of its own schedule: its startDate, endDate, duration, percentComplete and status are all recomputed from its children (dates span the children; progress is their span-weighted average). Writing any of those on a summary returns 422 — change the children instead. wbscode is derived from tree position, so it shifts whenever tasks are reordered or re-parented: display it, never store or match on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
milestonesOnlyNoReturn only milestones (optional, default false)

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds substantive behavior: Guest visibility narrows to granted projects and strips assignees, results come back in each project's outline order, and milestonesOnly filters server-side. It also discloses the 422 constraint on summary tasks, which an agent cannot learn 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the bulk of the text is a WBS/milestone treatise covering re-parenting, wbscode derivation, predecessor-vs-parent distinctions and 'set_task_parent'-style write behavior that an agent listing tasks does not need. Far more than a one-parameter read tool warrants, and the actionable parts are buried mid-paragraph rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, stating 'Returns the API's JSON array, in each project's outline order' usefully covers the return shape, and permission scoping plus server-side filtering round it out. Complete enough to call correctly, though the volume of unrelated WBS material makes it harder to find what is relevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's type/default are already documented, so the baseline is 3. The description does earn some credit by defining what a milestone actually is (dated gate, endDate forced to startDate, duration 0, progress 0/100), which is meaning the schema lacks — but it stops short of 4 because the boolean's own semantics are fully covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb, resource and scope: 'List all tasks across every project in the active workspace.' That scope statement alone separates it from list_tasks_by_project and get_task without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes name-based lookup to search ('search is far cheaper on a large workspace') and explains when milestonesOnly is the right choice ('the quickest answer to "what's coming up"'). It never states when to prefer list_tasks_by_project or get_task, so the sibling map is only partly drawn.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasks_by_projectList tasks by projectA
Read-onlyIdempotent
Inspect

List tasks belonging to one project (server-side filtered). Pass milestonesOnly=true for just that project's milestones.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id
milestonesOnlyNoReturn only milestones (optional, default false)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description only adds 'server-side filtered', a minor note about where filtering happens; it says nothing about result size, pagination, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, and the scoping fact plus the key flag tip are both front-loaded. Nothing repetitive or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list tool with full schema coverage, complete annotations, and no output schema to explain, the description covers what an agent needs. Slightly short of a 5 because it leaves the ordering/result-size behavior of the listing unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented inline. The description clarifies milestonesOnly as 'just that project's milestones', marginally reinforcing the schema, but adds no format, constraint, or edge-case detail beyond it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource ('List tasks') with an explicit scope constraint ('belonging to one project', 'server-side filtered'), which implicitly distinguishes it from the unscoped sibling list_tasks. A sibling tool name is never cited outright, so the differentiation is inferential 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'server-side filtered' plus the milestonesOnly pointer implies when to reach for this tool, but it never states when to prefer the sibling list_tasks instead, nor any prerequisites (e.g. that projectId must be valid/accessible). 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.

list_task_statusesList task statusesA
Read-onlyIdempotent
Inspect

List the active workspace's task statuses — its Kanban columns and the only labels a task's status may be set to. Each carries a label (the value stored on a task), sortOrder, progress, and the isInitial / isTerminal flags marking where new tasks start and what counts as finished. Call this before setting a status on a workspace you have not seen: the set is per workspace and is not the same everywhere.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, closed-world behavior, so the burden is light. The description goes further by disclosing the returned fields (label, sortOrder, progress, isInitial/isTerminal) and the key non-obvious trait that results vary per workspace.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: identity and scope first, then what each status carries, then the prescriptive usage cue. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers return shape (label, sortOrder, progress, isInitial/isTerminal) and the cross-workspace variability caveat, which is exactly what the missing output schema would otherwise have had to convey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so schema descriptions are moot and the baseline is 4. The description correctly implies no filtering/inputs are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List ... task statuses') scoped to the active workspace, and it explains what a status actually is (Kanban columns / the only permitted status labels). An agent can distinguish this from list_tasks, get_task_status_history, or list_custom_fields 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger with rationale: 'Call this before setting a status on a workspace you have not seen: the set is per workspace and is not the same everywhere.' That implies the when-not case (already-known workspace) but never names a sibling alternative or states exclusions outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesList templatesA
Read-onlyIdempotent
Inspect

List project templates: the built-in gallery (ids like "builtin:…", categories construction / agency / software) followed by this workspace's own saved templates (numeric ids). Each shows its task count and length in days. Use an id with create_project_from_template.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the gallery's names: "en" or "id" (optional, default en)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds useful behavior beyond that: result ordering (built-in gallery first, then workspace templates), the id formats, and the per-item attributes (task count, length in days).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler: identity and ordering first, item contents second, and the follow-on action last. Everything is front-loaded and each clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by describing what each returned entry contains (id, task count, length in days) and how ids are shaped. Only pagination or result-size behavior is unaddressed, a minor gap for a small list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema coverage, the schema already documents "lang" including its default and enum-like values. The description doesn't mention language at all, so it adds nothing beyond the schema here; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List project templates") and immediately distinguishes two sub-populations: the built-in gallery with "builtin:…" ids and this workspace's saved templates with numeric ids. 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes downstream consumption to create_project_from_template ("Use an id with create_project_from_template"), which is the main follow-on action. It lacks an explicit when-not clause or mention of the sibling save_project_as_template for creating templates, 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.

list_time_entriesList time entriesA
Read-onlyIdempotent
Inspect

A person's time entries between two days (a timesheet), at most three months at a time. Defaults to the caller; another person's needs Administrator or ProjectManager. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesLast day, yyyy-MM-dd
fromYesFirst day, yyyy-MM-dd
userIdNoWhose entries (user id; optional, default the caller)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, closed-world safety profile, and the description adds what they cannot: authorization requirements, the plan gate, and the exact failure mode on Free ('a plan-limit message'). It omits pagination or result-size behavior, which is the one behavioral gap left.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool returns, then the permission rule, then the plan restriction. Every clause carries distinct information and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the definition still conveys shape ('a timesheet'), the required authorization, and the plan precondition, which is nearly everything an agent needs to call it correctly. A note on result volume or ordering would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so from/to formats and the userId default are already documented in structured fields. The description only adds the constraint that the from–to window is capped at three months, useful but marginal beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('a person's time entries between two days (a timesheet)') and pins the scope with a hard window of at most three months. That is enough to separate it from log_time, update_time_entry, and get_task_time without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear applicability conditions: defaults to the caller, another person's entries require Administrator or ProjectManager, and the workspace must be on the Pro plan. It stops short of naming an explicit alternative for cases like per-task time breakdowns, so it is strong context rather than full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_trashList trashA
Read-onlyIdempotent
Inspect

List the workspace's deleted tasks (the Trash), newest first, with who deleted them and when. Trashed tasks are deleted for good after 30 days. Administrator or ProjectManager.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoOnly this project's trashed tasks (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent, non-destructive behavior, so the description adds valuable context beyond them: 30-day permanent deletion, newest-first ordering, and who/when metadata. It does not describe pagination or result-size limits, but the added retention and permission details are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste. The core purpose is front-loaded, followed by retention and role requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no output schema, the description is nearly complete: it explains what is returned, ordering, retention, and access requirements. It could mention pagination or result limits, but those omissions are minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single projectId parameter is already documented by the schema. The description does not add any further meaning or syntax for that optional filter, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: list the workspace's deleted tasks (the Trash). It adds ordering, metadata, retention, and access context, making it clearly distinct from sibling list tools like list_tasks and list_tasks_by_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the required roles (Administrator or ProjectManager), which gives clear usage context. However, it does not explicitly route the agent to related alternatives such as restore_task or purge_task when acting on trashed items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersList usersA
Read-onlyIdempotent
Inspect

List the members of the active workspace (id, username, email, role, capacity, availability). Use this to resolve the integer user id needed for task assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add scope context — which it does by specifying the listing is limited to the active workspace's members. Because no output schema exists, the field enumeration is genuinely useful behavioral detail; only pagination/inactive-user handling is left unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The resource and returned fields come first, and the actionable use case follows immediately — well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the returned fields, plus it explains why an agent would call it. Minor gaps remain: whether inactive or guest members are included, and whether the result is ordered or truncated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. The description confirms no filtering is required, which is consistent with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the members of the active workspace') and enumerates the fields returned (id, username, email, role, capacity, availability). The 'active workspace' scoping makes it distinguishable from get_user (single user) and list_project_guests (project scope) 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to resolve the integer user id needed for task assignment' gives an explicit, actionable trigger for calling the tool. It stops short of naming when not to use it (e.g. for a single user by id, use get_user), so it lacks full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_timeLog timeAInspect

Log the caller's own time on a task for one day. At most 24 hours per day in total, not on a future day, note up to 500 characters. Any team role, on any task in the workspace. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesThe day worked, yyyy-MM-dd
noteNoWhat was done (optional)
taskIdYesTask id
minutesYesMinutes worked (e.g. 90 for 1h30)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which only say non-readonly, non-destructive, non-idempotent) by disclosing the hard constraints an agent would otherwise trip over: 24 hours per day total, no future dating, 500-character note limit, and plan-gating that surfaces a plan-limit message. This is exactly the kind of precondition detail 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what the tool does before the constraints. No filler, and every clause carries a rule or scope fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a small creation tool with full schema coverage: everything needed to call it successfully, including limits and plan requirements, is present. Minor gap is that it does not state what happens on success or how to correct a mistaken entry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding validation semantics the schema lacks: the note length cap, the per-day hour ceiling, and the no-future-date rule, all of which constrain the 'minutes', 'note', and 'date' parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (log) and resource (time on a task), plus the crucial scoping detail that it is the caller's own time rather than someone else's. That distinguishes it from sibling mutations like update_time_entry and delete_time_entry without 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: any team role, any task in the workspace, Pro plan only, with the consequence for Free workspaces spelled out. It stops short of naming the alternative tools (update_time_entry / delete_time_entry) for correcting or removing an existing entry, so the agent must infer that this tool only creates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_all_notifications_readMark all notifications readA
Idempotent
Inspect

Mark every unread notification of the caller's as read. Returns how many were marked.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-destructive, idempotent, closed-world behavior, so the safety profile is covered. The description adds the caller-scope restriction (only your own notifications) and, importantly, the return value ('how many were marked') that no output schema supplies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the operation and its scope front-loaded and the return behavior following immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter mutation with no output schema, the description covers what it does, whose notifications are affected, and what comes back. Minor gaps remain (e.g. whether it spans all workspaces or only the current one), but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The caller-scoped framing is consistent with the empty schema rather than adding conflicting detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('mark ... notifications as read') with explicit scope ('every unread', 'of the caller's'), which implicitly separates it from the singular sibling mark_notification_read. It does not name that sibling outright, so an agent must infer the bulk-vs-single distinction from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'every unread' implies the bulk-clearing use case, but there is no explicit when-to-use or when-not guidance, and mark_notification_read is never mentioned as the alternative for single items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_notification_readMark notification readA
Idempotent
Inspect

Mark one of the caller's notifications as read.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNotification id

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the important traits: a non-read-only mutation that is idempotent, non-destructive, and closed-world. The description adds only the authorization scope ('the caller's'), and says nothing about behavior for an already-read notification, an unknown id, or what the call returns. Annotations carry most of the weight here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler and the scope ('caller's', 'one of') front-loaded. It is efficient but borders on under-specified rather than maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema notification mutation with full annotation coverage, the description covers what is needed to invoke correctly. Only edge-case outcomes and the id's provenance are missing, which are minor for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema coverage ('Notification id'), so the schema already fully documents it. The description adds no format, source, or sourcing hint (e.g., that ids come from list_my_notifications), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb plus resource ('Mark ... as read') scoped to 'one of the caller's notifications', which implicitly separates it from the bulk sibling. It never names mark_all_notifications_read outright, so differentiation is inferential 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one of the caller's notifications' implies this is the single-item counterpart to mark_all_notifications_read, but no when-to-use rule or alternative is stated. An agent must infer the split from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_auto_schedulePreview auto scheduleA
Read-onlyIdempotent
Inspect

Show what auto-scheduling one project would change, without changing anything: every task whose dates its dependencies and the working calendar would move, old vs new. Administrator or ProjectManager. Show this to the user before apply_auto_schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description still reinforces it with 'without changing anything' and adds two things the annotations don't: the authorization requirement and the shape of the result (affected tasks with old vs new dates). It stops short of covering failure modes, e.g. what happens if the project has no dependencies or the calendar is unset.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence with the no-side-effects guarantee front-loaded, followed by two short clauses for the permission and ordering. The middle clause ('every task whose dates its dependencies and the working calendar would move') is grammatically tangled and costs a re-read, which is the only waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with no output schema, the description still explains what comes back (per-task old vs new dates), why it matters, and how it pairs with the applying tool. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single projectId parameter, so the baseline of 3 applies. The description adds only that the scope is 'one project', which is implied by the parameter anyway; no extra syntax or constraints are offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show what auto-scheduling one project would change') and immediately scopes it as a dry run. It explicitly distinguishes itself from the mutating sibling apply_auto_schedule, so an agent can pick the right one 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ordering rule — 'Show this to the user before apply_auto_schedule' — which is the exact when-to-use condition for a preview tool. It also states the required role (Administrator or ProjectManager), covering the precondition an agent must check first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_levellingPreview levellingA
Read-onlyIdempotent
Inspect

Show which tasks workload levelling would slide later so nobody is booked beyond their capacity, across every project of the workspace — without changing anything. Tasks keep their length. Administrator or ProjectManager. Show this to the user before apply_levelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
utcOffsetMinutesNoThe caller's UTC offset in minutes (e.g. 420 for UTC+7), so "this week" and "today" are the user's own (optional, default 0 = UTC)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real value beyond them: 'Tasks keep their length' tells the agent levelling only shifts start/end rather than shortening work, and 'across every project of the workspace' discloses the blast radius of the preview. It leaves unanswered how far tasks slide or whether weekends/holidays are factored in, keeping it 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the no-change guarantee are front-loaded in the first sentence. It is tight overall, but the trailing 'Administrator or ProjectManager.' is a sentence fragment that interrupts flow before the final imperative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only preview tool with a single fully documented optional parameter, the description covers purpose, scope, side-effect profile, and permission requirement. Without an output schema, it could say a bit more about what the preview returns (per-task shifted dates?), but nothing critical to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single utcOffsetMinutes parameter is fully documented in the schema, including the UTC+7 example and the 'today/this week' semantics. The description adds nothing about it, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it shows which tasks workload levelling would slide later, across every project of the workspace. It is clearly distinguishable from apply_levelling (which mutates) and from preview_auto_schedule, since the description names the levelling concept and the no-change scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Show this to the user before apply_levelling' — naming the alternative and the exact ordering condition. It also states the negative constraint ('without changing anything'), so the agent knows when not to reach for the mutation sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purge_taskPurge taskA
DestructiveIdempotent
Inspect

DESTRUCTIVE: permanently delete a task that is already in the Trash — no undo. Administrator only. A live task must be deleted (delete_task) first. Fails with a conflict while trashed tasks that were under it in the breakdown remain; purge those first. Confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the trashed task

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds genuine context beyond them: no undo, an Administrator-only permission requirement, and a specific conflict failure mode when trashed descendants remain in the breakdown. These are the operational details an agent cannot infer from the hint flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the DESTRUCTIVE marker, then prerequisites, then failure mode, then the safety instruction. Every sentence carries distinct decision-relevant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive mutation with no output schema, the description covers safety profile, authorization, prerequisite ordering, and failure behavior. Nothing an agent needs in order 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage, so the schema already fully documents 'id'. The description adds that the id must reference a trashed (not live) task, which mildly sharpens the schema's 'Id of the trashed task' but adds little new syntax or format detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('permanently delete a task that is already in the Trash') and explicitly separates it from the sibling delete_task, which only trashes live tasks. An agent can distinguish purge_task from delete_task and restore_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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions ('a live task must be deleted (delete_task) first'), the ordering constraint against descendant trashed tasks, and a directive to confirm with the user before calling. When-to-use, when-not-to-use, and the alternative are all stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_agent_runReject an AI proposalA
Idempotent
Inspect

Set a proposal aside (state proposed or stale → rejected). Nothing in the plan changes; the credits are already spent. Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRun id

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is partly covered. The description adds valuable context beyond annotations: it clarifies that rejecting a proposal does not change the plan and that credits are already spent (non-refundable), and it states the authorization scope. It does not describe the response shape, but that is minor for a simple state-change tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the first front-loads the action and state transition; the second supplies the key behavioral and authorization context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with full schema coverage and no output schema, the description supplies everything an agent needs: the action, the state transition, the fact that nothing else changes, non-refundable credits, and the required role. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter ('id') with 100% schema description coverage, so the schema already documents it fully. The description adds no parameter-specific meaning. Per the rubric, high schema coverage yields a baseline of 3 even when the description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Set a proposal aside') and resource ('proposal'), and adds the state transition (proposed or stale → rejected). It does not explicitly distinguish itself from the sibling apply_agent_run, which is the natural alternative, but the purpose 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus apply_agent_run or other agent-run tools. The only contextual cue is the role restriction ('Administrator/ProjectManager only'), which is a prerequisite, not usage guidance. An agent must infer that this is the rejection counterpart to apply_agent_run.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_day_offRemove day offA
DestructiveIdempotent
Inspect

Remove a holiday or leave entry by its id (from get_working_calendar). Administrator or ProjectManager. Returns the whole calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDay-off id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds important context not in annotations: required roles and that the whole calendar is returned. It stops short of stating whether removal is soft or permanent, but the destructive hint carries that weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the action and target, with no wasted text. The id source, permissions, and return behavior each earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no output schema, the description covers the id source, authorization, and return shape ('Returns the whole calendar'). It leaves minor gaps around invalid-id behavior and soft-vs-hard deletion, but the annotations cover the main destructive signal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by telling the agent that the id comes from get_working_calendar, which the schema's bare 'Day-off id' does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove a holiday or leave entry') and clearly distinguishes itself from the sibling add_day_off. An agent can identify the operation and target 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains where to obtain the required id ('from get_working_calendar') and who may call it ('Administrator or ProjectManager'). It does not explicitly exclude cases or name alternatives, but the context is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reorder_tasksReorder tasksA
Idempotent
Inspect

Set the display order of a project's tasks, as shown in the task list and as the row order of the Gantt chart. Requires Administrator or ProjectManager role. taskIds must list EVERY task in the project exactly once, in the desired top-to-bottom order — call list_tasks_by_project first and reorder that full set, since a partial list is rejected. Once the project has any WBS nesting, the order must also be the tree's depth-first walk: every task follows its own WBS parent, and a summary task's descendants stay together directly beneath it. Anything else is rejected — use set_task_parent to change a task's level, and this tool only to reorder within a level. Returns the project's tasks in their new order.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdsYesEvery task id in the project, in the desired display order
projectIdYesProject id

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (non-read-only, non-destructive, idempotent), and the description adds crucial operational context: required role, the full-set invariant, rejection of partial lists, WBS depth-first ordering constraints, and the return shape. These are material behavioral traits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although detailed, the description is dense and front-loaded with the core operation, then prerequisites, constraints, and alternatives. Each sentence addresses a distinct decision-relevant fact, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a constrained mutation with two parameters and no output schema, the description covers role requirements, preparation, ordering rules, rejection conditions, hierarchy alternatives, and return behavior. 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, establishing a baseline of 3, but the description substantially enriches taskIds semantics: it must contain every task exactly once, in top-to-bottom order, and must respect WBS depth-first traversal. That goes well beyond the schema's brief 'desired display order' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: setting the display order of a project's tasks across both the task list and Gantt chart. It explicitly distinguishes this from set_task_parent, making the boundary between reordering within a level and changing hierarchy unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit prerequisites (Administrator or ProjectManager role), required preparation (call list_tasks_by_project first), constraints (every task exactly once; no partial lists), and the alternative for changing hierarchy (set_task_parent). This is a complete when/how/alternative guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_taskRestore taskA
Idempotent
Inspect

Bring a task back from the Trash. Any trashed WBS parent above it is restored too, so it returns to its place in the breakdown. Administrator or ProjectManager. Returns the restored task.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the trashed task

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (idempotent, non-destructive, not read-only), so the bar is lower. The description still adds meaningful behavior the annotations cannot express: the cascade that restores trashed parent WBS items, the authorization requirement, and the return value ('Returns the restored task').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct information: action, cascade side effect, permission gate, and return value. Purpose is front-loaded and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, non-destructive operation with rich annotations, this covers everything an agent needs: what it does, the side effect on parents, who may call it, and what comes back. Only minor gaps remain, such as error behavior when the id is not in the trash.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented as 'Id of the trashed task'. The description's word 'Trashed' reinforces that the id must reference a trashed item, but adds no format or sourcing 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Bring a task back from the Trash') plus the cascade rule for parent WBS items. The trash framing implicitly separates it from delete_task (move to trash) and purge_task (permanent removal), 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is clear: undo a deletion by restoring a trashed task. It also states the required role (Administrator or ProjectManager), which is real usage guidance. It does not explicitly point at list_trash for finding the id or exclude purge_task as the alternative when the user wants permanent removal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_invitationRevoke invitationA
DestructiveIdempotent
Inspect

Revoke a pending invitation by its token. Administrator only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesInvitation token to revoke

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds two things annotations do not: an authorization requirement (administrator) and a state constraint (only pending invitations). It still omits what happens to the invitee or the failure mode for non-pending tokens.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the action stated first and the permission constraint immediately after. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with rich annotations and no output schema, the description covers what is revoked, by what identifier, and who may do it. Only the post-condition (does the invite link immediately become invalid?) is left implicit, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'token' parameter, so the schema carries the semantics. 'By its token' only confirms that the token uniquely identifies the invitation, adding no format or sourcing detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Revoke a pending invitation') with a clear identifier ('by its token'), which separates it from create_invitation and list_invitations. It does not explicitly distinguish itself from the nearby revoke_share_link, but the resource noun is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Administrator only' gives a real precondition, and 'pending' implies state scoping. However, there is no explicit guidance on when to prefer this over revoke_share_link or what to do if the invitation is already accepted/expired, leaving usage 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.

run_agentRun an AI agentAInspect

Start an AI agent run. It spends the workspace's AI credits (402 when there are none: a Pro workspace buys a pack, a Free one upgrades). A run is ASYNCHRONOUS: run_agent returns the run at once in state "queued". Call get_agent_run with its id every few seconds until the state is "proposed" (a plan or re-plan waiting for a decision), "completed" (a digest — nothing to apply) or "failed" (see error). Most runs take under a minute. A proposal changes nothing until apply_agent_run; show it to the user and let them decide first. Kinds and their input (a JSON object, passed as a string): "plan-generator" (no projectId; Administrator/ProjectManager) drafts a new project: {"goal": "what the project is", "startDate": "yyyy-MM-dd", "endDate": optional, "constraints": optional, "language": "en"|"id"|…, "maxTasks": 3–300}. "schedule-doctor" (projectId; Administrator/ProjectManager) re-plans a project that slipped: {"instruction": "what happened, e.g. the pour slipped 9 days" (optional), "language"}. "status-digest" (projectId; any team role) writes a status report: {"audience": "team"|"client"|"exec", "from": "yyyy-MM-dd", "to": "yyyy-MM-dd" (default the last 7 days), "language"}; it ends "completed" and its text is in plan.text.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesAgent kind: plan-generator, schedule-doctor or status-digest
inputYesThe agent's input as a JSON object string, e.g. {"audience":"client"}. Use {} for the defaults.
projectIdNoProject id — required by schedule-doctor and status-digest, omitted for plan-generator

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that runs consume AI credits (402 when exhausted, with Pro/Free consequences), that execution is asynchronous with a 'queued' initial state, typical duration under a minute, and that a proposal changes nothing until apply_agent_run. That mutation-cost and side-effect context is not in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and async semantics, then moves to per-kind detail; nearly every clause carries operational information. It is dense and semicolon-heavy, running the kind catalogue into one long paragraph, so it loses a little scannability, but nothing is gratuitous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 explaining the return states and where results live (status-digest text in plan.text, error on 'failed'). For a three-parameter async mutation tool this covers everything needed to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning the schema cannot: which kind needs projectId ('plan-generator' must omit it), and the exact accepted input object per kind including field ranges (maxTasks 3–300), date formats, optional vs required fields, and the default 7-day window for status-digest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start an AI agent run') and immediately names the three agent kinds, which distinguishes it from list_agents, get_agent_run and apply_agent_run. An agent can tell what this does and what it does not do (it does not apply the result) 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the full workflow: call this, then poll get_agent_run every few seconds until proposed/completed/failed, then show the proposal to the user and use apply_agent_run to commit. It also flags the 402 credit case and states the role required per kind, which is exactly the routing information an agent needs.

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 templateAInspect

Save a project's task breakdown (titles, nesting, relative dates, milestones, dependencies) as a workspace template others can start projects from. People, progress and comments are not copied. Administrator or ProjectManager.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
projectIdYesProject id to capture
descriptionNoTemplate description (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare the generic write profile (readOnly=false, destructive=false, idempotent=false); the description adds substantive scope: what is copied (titles, nesting, relative dates, milestones, dependencies) and what is deliberately not (people, progress, comments). That exclusion list is exactly the kind of context annotations can't convey. It stops short of saying what happens on a duplicate name or that repeated calls produce additional templates, which matters given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both load-bearing: the first front-loads the capture scope, the second delivers the exclusion list and the permission requirement. Nothing is redundant with the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter creation tool with no output schema, the description covers source, destination artifact, data scope, and authorization well. The only gap is the return value (the new template's identifier) and duplicate-name behavior, which an agent would need for follow-up calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the schema, making 3 the baseline. The description only marginally enriches them by implying projectId is the source captured and that dates are stored relatively; it adds no format, ID-resolution, or naming-collision detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It gives a specific verb and resource ('save a project's task breakdown ... as a workspace template') and enumerates exactly what is captured, so the agent knows the output artifact precisely. It is also easy to separate from the inverse sibling 'create_project_from_template' and from 'list_templates'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies a real prerequisite – 'Administrator or ProjectManager' – which tells the agent whether the call will be permitted. It doesn't explicitly direct the agent to 'list_templates' to check for name collisions or to 'create_project_from_template' for the reverse flow, so there are no stated alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_project_baselineSet project baselineA
DestructiveIdempotent
Inspect

Capture a baseline snapshot of every task in the project (title, status, dates, progress) for plan-vs-actual comparison. Overwrites any existing baseline for those tasks. Requires Administrator or ProjectManager role.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds valuable specifics beyond them: that it overwrites prior baseline data and that it requires Administrator or ProjectManager role. It doesn't clarify whether re-running is a no-op vs a re-snapshot, but the added auth and overwrite context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it does, the overwrite consequence, and the auth prerequisite – each earning its place, with the core action front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param mutation tool with rich annotations and no output schema, the description covers action, scope, side effect, and auth. Minor gap: it doesn't state the result (e.g., number of tasks baselined or empty-project behavior), but that is a small omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (id) exists and schema description coverage is 100%, so the schema fully documents it. The description adds no extra semantics about the parameter, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (capture) and resource (baseline of every task in the project), enumerates what is captured (title, status, dates, progress), and names the purpose (plan-vs-actual comparison). It is clearly distinguishable from clear_project_baseline and the various get_* reporting siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The plan-vs-actual purpose gives a clear context for when to use it, and it warns that an existing baseline will be overwritten. However, it doesn't explicitly contrast with clear_project_baseline or get_earned_value, so the agent must infer the alternative route.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_project_budgetSet project budgetA
Idempotent
Inspect

Set a project's currency and budget. Administrator or ProjectManager. Pro plan only (a Free workspace gets a plan-limit message). Returns the project's costs.

ParametersJSON Schema
NameRequiredDescriptionDefault
budgetNoBudget amount (optional; omit to clear the budget)
currencyYesThree-letter currency code, e.g. USD or IDR
projectIdYesProject id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover write/idempotent/non-destructive/non-open-world semantics, and the description adds real context beyond them: authorization role requirement, plan gating with the exact failure mode, and a note on the return value (project costs). It stops short of explaining what happens to a budget when it is cleared, which is the only 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then qualifications, then the return value. No padding or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema, the description covers permissions, plan gating, mutation behavior, and the return payload. Only the effect of clearing the budget on existing costs is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is already documented, including the omit-to-clear semantics for budget. The description merely restates that currency and budget are what's being set, adding no format or validation detail beyond the schema's 'three-letter currency code' note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Set) and resource (project's currency and budget) in the first sentence, which is enough to distinguish it from the general update_project sibling. It does not explicitly contrast with update_project, which limits it to a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions: must be Administrator or ProjectManager, and must be on a Pro plan (Free workspaces get a plan-limit message). This tells the agent when the call will succeed, but it never names update_project as the general-purpose alternative or says when to use which.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_project_guestsSet project guestsA
DestructiveIdempotent
Inspect

REPLACE the set of guests who may read a project with exactly the user ids given (an empty list removes them all) — call list_project_guests first and add to or remove from that set. Every id must be a guest of this workspace. Administrator only. Returns the updated list.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdsYesUser ids of every guest who should have access
projectIdYesProject id

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint and idempotentHint, and the description reinforces this with the crucial consequence that omission from the list revokes access and that an empty list removes everyone. It adds the admin requirement, the workspace-guest validation rule, and the return value — real context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence: the destructive replace semantics lead, followed by the prerequisite and constraint. No filler, and the parenthetical about the empty list is placed exactly where it prevents a costly mistake.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 semantics, prerequisites, authorization, validation constraints, and the return value. An agent could call this correctly without inspecting anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining that userIds is a full replacement set and that an empty array revokes all access — meaning the schema's 'every guest who should have access' does not convey on its own.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (REPLACE) and resource (the set of guests who may read a project), and defines the exact semantics — the list is the complete desired state, not an addition. This distinguishes it from list_project_guests and from any implicit add/remove alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs the agent to call list_project_guests first and derive the new set from it, and names the precondition that every id must be a guest of this workspace plus the admin-only restriction. Both when-to-use and the required prerequisite sequence 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_task_custom_fieldSet task custom fieldA
Idempotent
Inspect

Set one custom field on one task; an empty value clears it. The value must suit the field's type: a number, an ISO date (yyyy-MM-dd), true/false for a checkbox, one of the options for a select, an http(s) URL for a url. Administrator and ProjectManager on any task; a Member only on a task assigned to them.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe value as text; empty string to clear
taskIdYesTask id
fieldIdYesField id from list_custom_fields

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses two important behavioral traits: an empty value clears the field, and permissions differ by role (Administrator/ProjectManager vs. Member only on assigned tasks). It does not cover error handling for invalid values or response behavior, but it adds substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is two dense sentences with the core action and clearing behavior front-loaded, followed by value-type constraints and permissions. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with full schema coverage and annotations, the description is largely complete: it covers scope, clearing, type requirements, and permissions. The only minor gap is that it does not mention what happens on invalid input or describe the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter basics are already documented. The description still adds meaningful semantics for the `value` parameter by mapping field types to expected formats (number, ISO date, boolean, select option, http(s) URL), which is useful domain guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource with scope: 'Set one custom field on one task.' It also explains the clearing behavior, so an agent can immediately distinguish this from broader task updates or custom-field listing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context by listing the acceptable value forms per field type and by spelling out role-based permissions. It does not explicitly name alternatives such as update_task for built-in fields, 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.

set_task_parentSet task parentA
Idempotent
Inspect

Move a task within its project's work breakdown structure — indent it under another task, or pass wbsParentId=null to lift it back to the top level. Requires Administrator or ProjectManager role. WORK BREAKDOWN STRUCTURE. Tasks nest via wbsParentId, and every task carries a read-only wbscode — its dotted outline number within the project ("1", "2.3", "2.3.1") — plus issummary. wbsParentId is NOT a scheduling dependency: a WBS child sits INSIDE its parent's span and in fact defines it, whereas a predecessor runs BEFORE its successor. Predecessors are their own resource — create_task_dependency — and are unrelated to nesting. A task with at least one WBS child is a SUMMARY TASK and owns none of its own schedule: its startDate, endDate, duration, percentComplete and status are all recomputed from its children (dates span the children; progress is their span-weighted average). Writing any of those on a summary returns 422 — change the children instead. wbscode is derived from tree position, so it shifts whenever tasks are reordered or re-parented: display it, never store or match on it. The new parent must be in the same project, must not be a milestone, and must not be one of this task's own descendants (no cycles); nesting is capped at 10 levels, measured against the deepest leaf of the subtree being moved. Indenting a task under a leaf turns that leaf into a summary task, replacing its hand-entered schedule with the roll-up of its new children. The server also renumbers the whole project's display order and outline codes, so re-read the project afterwards rather than assuming other tasks are unchanged. Returns the project's tasks in their new order.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id to move
wbsParentIdNoNew WBS parent task id, or null to make this a top-level task

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation and idempotency profile, but the description adds substantial behavior the annotations cannot: cycle prevention, same-project and non-milestone parent constraints, a 10-level nesting cap measured from the deepest leaf, the leaf-to-summary conversion side effect, 422 on writing summary-task fields, and project-wide renumbering of wbscode/display order. This is exactly the extra context an agent needs before mutating a hierarchy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the null special case, and most sentences carry distinct operational value (summary roll-up, 422 behavior, wbscode instability). It is long, and the density means some details (wbscode formatting examples) could be trimmed, but little is truly redundant for a hierarchy mutation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a mutation tool with no output schema, the description covers prerequisites, failure modes, side effects, and even the return value (the project's tasks in new order). An agent has everything needed to call it and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, and the description largely restates the null semantics. It does add meaningful parameter constraints that the schema lacks: the new parent must be in the same project, must not be a milestone, must not be a descendant, and depth is capped at 10. That pushes it above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (move a task) and resource (WBS parent), with the exact two modes: indent under another task or pass wbsParentId=null to lift to top level. It explicitly distinguishes itself from create_task_dependency, which handles a different concept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit usage conditions (re-parenting within WBS, null to promote) and names the alternative concept to avoid confusing it with (predecessors via create_task_dependency). It also states the role prerequisite (Administrator or ProjectManager), so an agent knows when it will fail for permission reasons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_task_progressSet task progressA
Idempotent
Inspect

Set a task's percentComplete (0-100; any team role — a Guest can change nothing). Reconciliation: 100 forces the workspace's finished status (and writes a status-history row); below 100 the status is left alone — progress moving on its own never changes it. On a milestone the value lands on 0 or 100 only — anything in between snaps to 0, since a gate is either reached or not. Returns the task after reconciliation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id
percentCompleteYesPercent complete, 0-100

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which only cover idempotent, non-destructive, non-read-only). It discloses the status-history side effect at 100, the no-op on status below 100, the milestone snapping rule, and the permission model (any team role, Guest excluded) — exactly the behavioral context an agent needs before 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then side-effect rules in a logical order, and every sentence carries information. The parenthetical asides ('any team role — a Guest can change nothing') are slightly compressed to the point of ambiguity but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description closes the loop by stating it returns the task after reconciliation. Combined with permission requirements, side-effect disclosure, and parameter edge cases, nothing material is missing for a 2-param mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the 0-100 bounds are restated and the milestone snap-to-0 behavior changes how an agent should choose the value. The 'id' parameter is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set a task's percentComplete') plus the accepted range, which cleanly separates it from set_task_status and update_task among the siblings. An agent knows exactly what this mutates 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The reconciliation paragraph effectively tells the agent when to reach for this versus set_task_status: progress only touches status at 100, otherwise status is untouched. It stops short of naming set_task_status or update_task explicitly as alternatives, so the routing is inferential rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_task_recurrenceSet task recurrenceA
Idempotent
Inspect

Make a task repeat, or change how it repeats. Each occurrence is created automatically as an ordinary task, shifted from this one's dates by the rhythm (e.g. weekly, interval 2 = every two weeks). The task must be dated and must not be a summary task. Changing the rhythm starts the series counting afresh. Administrator or ProjectManager.

ParametersJSON Schema
NameRequiredDescriptionDefault
endsOnNoNo occurrence starts after this date, ISO-8601 (optional; omit for no end)
taskIdYesTask id
intervalNoEvery how many days/weeks/months, 1-365 (optional, default 1)
frequencyYes"daily", "weekly" or "monthly"

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (non-read-only, idempotent, non-destructive, closed-world), it explains that occurrences are ordinary tasks shifted by rhythm, that changing rhythm restarts the series count, and that the task must be dated and non-summary. These are substantive behavioral details not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with purpose, then behavior, constraints, and permissions. Every sentence contributes information; there is no repetition of schema text beyond the helpful rhythm example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition covers prerequisites, permission requirements, and recurrence behavior for a mutation tool whose annotations already establish safety. It omits return/response expectations and does not clarify what happens to already-existing future occurrences when the rhythm changes, which is a minor completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so taskId, frequency, interval, and endsOn are already documented. The description adds a useful interval/frequency example ('weekly, interval 2 = every two weeks') but leaves most parameter semantics 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (make/change task recurrence) and resource, and the first sentence immediately distinguishes setting recurrence from general task updates. It stops short of naming the sibling stop_task_recurrence, so the differentiation is implicit 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear preconditions (task must be dated, not a summary task) and the required role (Administrator or ProjectManager). It does not explicitly state when to use stop_task_recurrence or list_recurring_tasks instead, so there are no explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_task_reminderSet task reminderA
Idempotent
Inspect

Create or reschedule the caller's reminder on a task (one reminder per user per task — this upserts). Any team role (not Guest) may set their own reminder. Rescheduling re-arms the email even if the previous time already fired. remindAt must be an ABSOLUTE UTC instant in ISO-8601 (e.g. "2026-07-01T09:00:00Z"). This differs from task start/end dates, which are local wall-time strings — convert the user's local time to UTC before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id to remind about
remindAtYesWhen to remind, absolute UTC ISO-8601, e.g. 2026-07-01T09:00:00Z

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: one-reminder-per-user-per-task upsert behavior, role restriction excluding Guests, and the fact that rescheduling re-arms the email even after it has fired. These are non-obvious behavioral traits an agent could not derive from readOnlyHint/idempotentHint alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each carrying a distinct piece of information: purpose/upsert, permissions, rescheduling effect, and the timezone contract. The purpose is front-loaded and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers what it does, who may do it, what it overwrites, and the single biggest correctness trap (UTC vs local time). Nothing an agent needs in order 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.

Parameters4/5

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, but the description adds real meaning: remindAt must be an absolute UTC instant, and it contrasts this with task start/end dates that are local wall-time, instructing the agent to convert before calling. Minor duplication of the ISO-8601 example keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create or reschedule the caller's reminder on a task') and immediately clarifies the upsert semantics ('one reminder per user per task — this upserts'). An agent can distinguish this from delete_task_reminder and list_my_reminders 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear eligibility context ('Any team role (not Guest) may set their own reminder') and explains that rescheduling re-arms an already-fired email, which tells the agent when reusing the tool is appropriate. It does not explicitly point at delete_task_reminder or list_my_reminders as alternatives, 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_statusSet task statusA
Idempotent
Inspect

Set a task's status (any team role — a Guest can change nothing). Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100. Reconciliation: the status brings its own progress with it, so this OVERWRITES percentComplete (see list_task_statuses for each status's value). To set a status without taking its progress, use update_task with both status and percentComplete in one call — the workspace's finished status still forces 100. Returns the task after reconciliation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id
statusYesNew status. Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, idempotent=true, destructive=false), and the description goes well beyond them: undefined labels return 400, changing status overwrites percentComplete, the finished status always forces 100, and the task is returned post-reconciliation. That is exactly the side-effect information an agent needs before mutating progress data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical guidance (call list_task_statuses first, status overwrites percentComplete) is front-loaded, but the closing "Reconciliation:" paragraph restates the overwrite/update_task/finished-status rules almost verbatim from the preceding sentences, wasting space without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers the return value ("Returns the task after reconciliation"), the validation failure mode, the permission boundary, and the progress side-effect — nothing an agent needs in order 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the status parameter's schema description is a near-verbatim copy of the prose, so the description adds little that the schema does not already carry. Baseline 3 applies when the schema does the heavy lifting and the prose merely mirrors it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Set a task's status") and immediately scopes it to workspace-defined labels, which distinguishes it from the neighbouring set_task_progress and update_task tools. An agent can identify the operation and its constraints 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to call list_task_statuses before setting a value, and names update_task as the alternative when the progress side-effect is unwanted. It also states a when-not condition indirectly via the Guest permission note and the 400 rejection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shift_scenario_taskMove a task in a scenarioAInspect

In the scenario only, move one task by some calendar days (negative = earlier; it lands on the next working day) and push whatever its dependencies then force to move. Each call moves it again, so it is not idempotent. Phases and undated tasks cannot be moved (422). A scenario is a private copy of one project's dates. Changes made in it touch nothing until apply_scenario; each answer compares the scenario with the plan as it stands now (every task that differs, old and new dates, and both project end dates). Administrator/ProjectManager only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScenario id
daysYesCalendar days to move it, non-zero; negative = earlier
taskIdYesTask id

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses dependency cascading, that the target date snaps to the next working day, the 422 failure modes, the Administrator/ProjectManager permission requirement, and that changes are inert until apply_scenario. It also describes what the response contains (task-by-task diff plus both project end dates).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope in the first sentence, then layers constraints, commit semantics, response content, and permissions. Every sentence carries information, though the paragraph is dense enough that a reader must hold several clauses at once.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers permissions, error path, non-idempotency, side effects on dependencies, the apply lifecycle, and return content. 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.

Parameters4/5

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 move is in calendar days and the result lands on the next working day. It does not elaborate on the id/taskId parameters, which the schema already names clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'move one task by some calendar days' in 'the scenario only'. It is clearly separable from update_task (edits task fields) and apply_scenario (commits the scenario), both of which appear as siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use it ('in the scenario only'), when not to ('Phases and undated tasks cannot be moved (422)'), and routes the commit step to apply_scenario. It also warns that repeated calls compound movement, which is a usage-relevant condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_task_recurrenceStop task recurrenceA
DestructiveIdempotent
Inspect

Stop a task repeating. Occurrences already created stay. Administrator or ProjectManager.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask id

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds value the annotations cannot: already-created occurrences are preserved, and the operation requires Administrator or ProjectManager rights. It stops short of saying whether the recurrence rule itself is deleted or merely halted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short fragments, purpose front-loaded, zero filler. The telegraphic permission clause is terse but readable and earns its place by flagging an access requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and a trivial one-parameter surface, with annotations covering safety. The description supplies the two things structured fields can't: preservation of existing occurrences and the permission requirement. Only the fate of the recurrence rule itself is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required parameter with 100% schema description coverage, so the schema carries the semantics. The description adds nothing about taskId (e.g. whether it must be the parent task of a recurring series). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (stop) plus resource (task recurrence) with a clarifying restatement: 'Stop a task repeating.' An agent can distinguish it from set_task_recurrence and list_recurring_tasks by name alone. It does not explicitly name those siblings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the fact that it disables recurrence, but the description never states when to reach for this versus set_task_recurrence (which presumably can also alter/clear recurrence) or list_recurring_tasks for discovery. No preconditions beyond the permission note are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_workspace_ownershipTransfer workspace ownershipA
DestructiveIdempotent
Inspect

CONSEQUENTIAL: hand workspace ownership to another member. Requires Administrator AND being the current owner. After this you lose owner rights — including billing/subscription control, which only the new owner can then manage. Pass the target's integer user id (use list_users to resolve). Confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
newOwnerUserIdYesInteger user id of the member who should become the new owner

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description goes further by spelling out the consequence: loss of owner rights and billing/subscription control transferring to the new owner. That is material downstream-effect context not derivable from the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the 'CONSEQUENTIAL' risk marker, then prerequisites, consequence, parameter resolution, and confirmation — each sentence carries distinct, non-redundant content with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive mutation with no output schema, the description covers risk, authorization requirements, side effects, parameter sourcing, and confirmation protocol. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single property is already typed as an integer user id, so the description adds only the resolution hint ('use list_users to resolve'). Helpful but modest beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('hand workspace ownership to another member') with the scope constraint that the caller must currently be owner. No sibling tool overlaps this action, so an agent can identify it immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names prerequisites (Administrator AND current owner), routes parameter resolution to the sibling list_users, and instructs the agent to confirm with the user before calling. This is exactly when-to-use plus how-to-prepare guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_assignmentUpdate assignmentA
Idempotent
Inspect

Update an existing assignment (task, user, or role). Only the fields you pass are changed; the rest are preserved (the API PUT is a full replace, so this tool reads the current assignment first and merges). Requires Administrator or ProjectManager role. Pass an empty string to clear the role. The task and user must belong to the active workspace. Returns the updated assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssignment id
roleNoAssignment role label (optional; omit to leave unchanged, empty string to clear)
taskIdNoMove to a different task id (optional; omit to leave unchanged)
userIdNoReassign to a different user id (optional; omit to leave unchanged)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: explains that the underlying API PUT is a full replace and this tool internally reads-then-merges, which is exactly the kind of side-effect an agent cannot infer from idempotentHint/destructiveHint alone. Also discloses the role requirement, the empty-string clear sentinel, the workspace membership constraint, and the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, each carrying distinct information (scope, merge behavior, auth, clear convention, cross-field constraint, return value). Front-loaded with the purpose and zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description states it returns the updated assignment. Mutation semantics, permission requirements, partial-update behavior, and cross-field validation are all covered, so 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.

Parameters4/5

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 still adds meaning by explaining the merge semantics of omitting a field, restating the empty-string-to-clear convention for role, and imposing the cross-field constraint that taskId/userId must resolve within the active workspace.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (update an existing assignment) and enumerates the mutable fields (task, user, role). An agent can immediately distinguish this from create_assignment, delete_assignment, and 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the partial-update contract explicitly ('only the fields you pass are changed; the rest are preserved') and gives preconditions (Administrator/ProjectManager role, task and user must belong to the active workspace). It does not explicitly name an alternative tool for full-replace or create semantics, 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_projectUpdate projectA
Idempotent
Inspect

Update a project. Only the fields you pass are changed; the rest are preserved (the API PUT is a full replace, so this tool reads the current project first and merges). Requires Administrator or ProjectManager role. Pass an empty string to clear the description. Returns the updated project.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id
nameNoNew project name (optional; omit to leave unchanged)
descriptionNoNew description (optional; omit to leave unchanged, empty string to clear)

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the internal read-merge-write behavior against a PUT that is a full replace, the permission prerequisite, the empty-string clearing convention, and the return payload. This is exactly the kind of implementation detail an agent cannot infer from idempotentHint/destructiveHint alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the merge semantics and auth requirement before the edge case. The opening 'Update a project' restates the name/title, but the rest is dense with substance and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description states what is returned, and it covers permissions, merge behavior, and the clearing convention. For a 3-parameter mutation tool, 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.

Parameters4/5

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 adds value by explaining the omit-vs-empty-string distinction for the optional fields, which is the main semantic trap here. It could say more about what happens when both name and description are omitted, but the key ambiguity is resolved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a project') and clarifies it is a partial update, which separates it from full-replace or specialized setters like set_project_budget. It doesn't explicitly differentiate itself from those specialized siblings, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational context: only passed fields change, role requirement (Administrator or ProjectManager), and how to clear the description. It lacks an explicit statement of when to prefer this tool over sibling setters such as set_project_budget or set_project_guests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_raid_itemUpdate RAID itemA
Idempotent
Inspect

Change a RAID line. Only the fields you pass change (the tool reads the line first and merges). Pass an empty string to clear description, response or dueDate, and ownerId 0 to clear the owner. Administrator or ProjectManager. kind is risk, assumption, issue or dependency; status is open, in_hand or closed. Probability and impact run 1-5: a risk needs both (score = probability × impact), an issue keeps only impact, the other kinds neither. dueDate is yyyy-MM-dd. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRAID line id
kindNoNew kind (optional)
titleNoNew title (optional)
impactNoNew impact 1-5 (optional)
statusNoopen, in_hand or closed (optional)
dueDateNoNew due date yyyy-MM-dd, empty to clear (optional)
ownerIdNoNew owner user id, 0 to clear (optional)
responseNoNew response (optional)
projectIdYesProject id the line belongs to
descriptionNoNew details (optional)
probabilityNoNew likelihood 1-5 (optional)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, it discloses read-then-merge behavior, exact clearing semantics for empty strings and ownerId 0, required role, plan-limit failure behavior, valid kind/status values, probability/impact rules, and date format. This is unusually rich behavioral context for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded: it starts with the core action and merge behavior, then moves through clearing rules, permissions, enums, scoring, date format, and plan limits. Every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter update tool with no output schema, the description covers the critical operational details an agent needs: partial-update semantics, clearing behavior, role authorization, plan restrictions, enum values, date format, and cross-field probability/impact rules. Return-value details are the only minor omission, but they are not essential for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds material meaning: which fields can be cleared and how, how owner clearing works, valid kind/status values, probability/impact constraints, risk scoring, and dueDate format. It meaningfully improves correct parameter use beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: "Change a RAID line." It immediately clarifies partial-update merge behavior, which distinguishes it from create/delete operations. It does not explicitly name sibling tools, so it falls slightly short of the highest clarity level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is for changing an existing RAID line and that only supplied fields are changed. It also gives prerequisites such as Administrator/ProjectManager role and Pro plan only. It does not explicitly state when to use this versus create_raid_item or delete_raid_item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_taskUpdate taskA
Idempotent
Inspect

Update a task. Only the fields you pass are changed; the rest are preserved (the server PUT is a full replace, so this tool reads the current task first and merges). Members may edit body fields and progress but their date changes are ignored server-side — as is a change to isMilestone, which is planner-owned like the dates. Pass an empty string to clear a text field. Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100. Dates are ISO-8601 strings. An ordinary task must end up with BOTH startDate and endDate, and startDate must be on or before endDate — the server rejects a missing or inverted range with 422. A milestone needs only one of the two: the isMilestone invariants run first and copy it to the other. A child task's startDate must also be >= its parents' end dates. Dates you omit are left as they are, so a task that is already dated stays valid; a task that predates the rule (restored from an older backup) needs both dates supplied on the first edit. A milestone marks a dated gate rather than a span of work (launch date, sign-off, go/no-go). The server holds it to one date — endDate is forced to equal startDate, so naming either one is enough — with duration 0 and progress that is only ever 0 or 100 (100 exactly when it is in the workspace's finished status). Setting isMilestone on a task that already has a date range collapses it onto its start date. WORK BREAKDOWN STRUCTURE. Tasks nest via wbsParentId, and every task carries a read-only wbscode — its dotted outline number within the project ("1", "2.3", "2.3.1") — plus issummary. wbsParentId is NOT a scheduling dependency: a WBS child sits INSIDE its parent's span and in fact defines it, whereas a predecessor runs BEFORE its successor. Predecessors are their own resource — create_task_dependency — and are unrelated to nesting. A task with at least one WBS child is a SUMMARY TASK and owns none of its own schedule: its startDate, endDate, duration, percentComplete and status are all recomputed from its children (dates span the children; progress is their span-weighted average). Writing any of those on a summary returns 422 — change the children instead. wbscode is derived from tree position, so it shifts whenever tasks are reordered or re-parented: display it, never store or match on it. To move a task within the breakdown use set_task_parent, not this tool. Returns the updated task.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask id
titleNoNew title (optional)
statusNoNew status (optional). Status values are DEFINED PER WORKSPACE — there is no fixed list. Call list_task_statuses to see this workspace's labels before setting one; a label it does not define is rejected with 400. A new workspace starts with "Open", "InProgress", "Review", "Done", but any of those may have been renamed, reordered, removed or added to. Each status also carries a progress value, and CHANGING A STATUS OVERWRITES percentComplete with it (the workspace's starting status is 0, its finished status 100). To set a status without taking its progress, send status and percentComplete together in one update_task call — except for the finished status, which always forces 100.
endDateNoEnd date ISO-8601 (optional; omit to keep the stored one, which must leave endDate >= startDate)
durationNoDuration value (optional). In Days it is derived from the dates (working days) and a sent value is overwritten
projectIdNoMove to a different project id (optional)
startDateNoStart date ISO-8601 (optional; omit to keep the stored one, which must leave startDate <= endDate)
assignedToNoAssigned user id (optional)
descriptionNoNew description (optional)
isMilestoneNoConvert to/from a milestone (optional; omit to leave unchanged)
durationUnitNoDuration unit (optional)
targetVersionNoTarget version (optional)
resourceNeededNoResource needed (optional)
percentCompleteNoPercent complete 0-100 (optional)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses behavior far beyond annotations: server-side read-then-merge despite a full-replace PUT, member role limits (date changes and isMilestone silently ignored), specific rejection codes (400 for undefined status, 422 for missing/inverted ranges and summary-task writes), and milestone forcing of endDate/duration/progress. These are exactly the non-obvious traits an agent needs before mutating a task.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the merge rule, and the single heading (WORK BREAKDOWN STRUCTURE) helps, but the block is roughly 350 words with the entire per-workspace status/progress explanation repeated verbatim from the status property's schema description. Valuable content, but it is overlarge and mid-paragraph transitions ('WORK BREAKDOWN STRUCTURE.') do little to structure the read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation tool with no output schema, nearly every risky path is covered: validation failures, role-based no-ops, milestone and summary-task invariants, and the return value ('Returns the updated task'). Nothing essential to a correct call is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema does not: empty string clears a text field, omitted dates are preserved, milestones accept either date and copy it, and summary-task fields are rejected. Date invariants (startDate <= endDate, child >= parent end dates) are spelled out rather than left to the terse schema hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a task') and immediately clarifies the merge contract, which is the key semantic. It explicitly distinguishes itself from set_task_parent ('To move a task within the breakdown use set_task_parent, not this tool') and from create_task_dependency for scheduling links. An agent can tell what this tool owns 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong conditional guidance: call list_task_statuses before setting a status, send status and percentComplete together to avoid progress overwrite, change children instead of summary tasks, use set_task_parent for re-parenting. What's missing is routing to the obvious siblings set_task_status and set_task_progress when only status or progress changes, which would help the agent choose between near-duplicate tools.

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 entryA
Idempotent
Inspect

Rewrite one of the caller's own time entries. This REPLACES the entry: pass every field, including the note (omitting it clears it) — read the current values with get_task_time or list_time_entries first. Only the entry's owner may change it. Pro plan only (a Free workspace gets a plan-limit message).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTime entry id
dateYesThe day worked, yyyy-MM-dd
noteNoNote (optional; omitting it clears the existing note)
taskIdYesTask id
minutesYesMinutes worked

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses the full-replacement contract: every field must be passed, and omitting the note clears it. It also adds auth (owner-only) and plan-tier constraints that the annotations do not express. This is exactly the context an agent needs before a non-idempotent-looking overwrite.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the replace semantics, then the read-first prerequisite, then permission and plan constraints. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 what an agent needs for a 5-parameter mutation: replacement semantics, ownership restriction, plan gate, and a pointer to the read tools for current values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the operation is a wholesale replace, so all fields including note must be supplied, and a missing note is destructive of the existing value. The only gap is that it does not add format or coupling detail for id/taskId/date beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Rewrite one of the caller's own time entries" gives a specific verb (rewrite/update) plus resource (time entry), and narrows scope to the caller's own entries. It separates cleanly from log_time (create), delete_time_entry (remove), and get_task_time/list_time_entries (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicit prerequisites and alternatives: read current values with get_task_time or list_time_entries first, and only the entry's owner may change it. It also names an exclusion condition (Free workspace gets a plan-limit message), so the agent knows when the call will fail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiWho am IA
Read-onlyIdempotent
Inspect

Return the caller's current Madda Tasks session: user id, username, email, primary role, and the ACTIVE workspace (tenantSlug/tenantName). All other tools operate within this workspace. Roles: Administrator, ProjectManager, Member, or Guest — a Guest only reads the projects granted to them, so most tools refuse a Guest.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new context: the workspace becomes the scope for all other tools, and role enumeration (Administrator/ProjectManager/Member/Guest) explains that a Guest will be refused by most tools — useful for interpreting the result. It does not say what happens if the session is unauthenticated or expired.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with what is returned, followed by the workspace-scoping rule and the role model. No filler or restated title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 compensates by naming every returned field. For a zero-parameter, read-only session tool it covers everything an agent needs 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description appropriately spends its space on return contents rather than nonexistent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource (the caller's current session), and enumerates the exact fields returned (user id, username, email, role, active workspace). This clearly separates it from siblings like get_user and list_my_workspaces, which look up other users or all workspaces rather than the current session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains that all other tools operate within the workspace returned here, giving strong implicit guidance to call this for context. It does not explicitly say 'call this first' or name an alternative for identity lookups, 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 104 tool updates
    • First observedadd_comment
    • First observedadd_day_off
    • First observedapply_agent_run
    • First observedapply_auto_schedule
    • First observedapply_levelling
    • First observedapply_scenario
    • First observedclear_project_baseline
    • First observedclear_task_dependencies
    • First observedcreate_assignment
    • First observedcreate_invitation
    • First observedcreate_project
    • First observedcreate_project_from_template
    • First observedcreate_raid_item
    • First observedcreate_scenario
    • First observedcreate_share_link
    • First observedcreate_task
    • First observedcreate_task_dependency
    • First observeddelete_assignment
    • First observeddelete_comment
    • First observeddelete_project
    • First observeddelete_raid_item
    • First observeddelete_scenario
    • First observeddelete_task
    • First observeddelete_task_dependency
    • First observeddelete_task_reminder
    • First observeddelete_time_entry
    • First observededit_comment
    • First observedget_activity
    • First observedget_agent_run
    • First observedget_ai_credits
    • First observedget_assignment
    • First observedget_earned_value
    • First observedget_entitlements
    • First observedget_progress_trend
    • First observedget_project
    • First observedget_project_costs
    • First observedget_projects_report
    • First observedget_resource_usage
    • First observedget_scenario
    • First observedget_share_link
    • First observedget_task
    • First observedget_task_status_history
    • First observedget_task_time
    • First observedget_user
    • First observedget_working_calendar
    • First observedget_workload
    • First observedlist_agent_runs
    • First observedlist_agents
    • First observedlist_assignments
    • First observedlist_assignments_by_task
    • First observedlist_comments
    • First observedlist_custom_field_values
    • First observedlist_custom_fields
    • First observedlist_invitations
    • First observedlist_my_notifications
    • First observedlist_my_reminders
    • First observedlist_my_workspaces
    • First observedlist_project_guests
    • First observedlist_projects
    • First observedlist_raid_items
    • First observedlist_recurring_tasks
    • First observedlist_saved_views
    • First observedlist_scenarios
    • First observedlist_task_dependencies
    • First observedlist_task_statuses
    • First observedlist_tasks
    • First observedlist_tasks_by_project
    • First observedlist_templates
    • First observedlist_time_entries
    • First observedlist_trash
    • First observedlist_users
    • First observedlog_time
    • First observedmark_all_notifications_read
    • First observedmark_notification_read
    • First observedpreview_auto_schedule
    • First observedpreview_levelling
    • First observedpurge_task
    • First observedreject_agent_run
    • First observedremove_day_off
    • First observedreorder_tasks
    • First observedrestore_task
    • First observedrevoke_invitation
    • First observedrevoke_share_link
    • First observedrun_agent
    • First observedsave_project_as_template
    • First observedsearch
    • First observedset_project_baseline
    • First observedset_project_budget
    • First observedset_project_guests
    • First observedset_task_custom_field
    • First observedset_task_parent
    • First observedset_task_progress
    • First observedset_task_recurrence
    • First observedset_task_reminder
    • First observedset_task_status
    • First observedshift_scenario_task
    • First observedstop_task_recurrence
    • First observedtransfer_workspace_ownership
    • First observedupdate_assignment
    • First observedupdate_project
    • First observedupdate_raid_item
    • First observedupdate_task
    • First observedupdate_time_entry
    • First observedwhoami

Publisher details

Operator
MaddaTech · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Free on every Madda Tasks plan, including Free. Users need a Madda Tasks account (free, no card). Dynamic client registration is disabled: the MCP client must send the public OAuth client id madda-tasks-mcp with no secret (in Claude: Advanced settings → OAuth Client ID). Write tools follow the signed-in user's workspace role and plan limits. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control, automate, and query desktop project-management schedules in real time via native Windows COM, including task/WBS management, resource and cost assignment, baselines, critical path, status reporting, and PDF export.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to track time, manage the project board with epics, milestones, schedules and dependencies, and generate shareable reports through a single authenticated connection.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources