TaScan
Server Details
36 MCP tools for projects, tasks, workers, QR/NFC tags, and AI remediation. Task. Scan. Done.
- Status
- Healthy
- Uptime
- 99.7% over 38 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- snowbikemike/tascan-mcp
- GitHub Stars
- 1
- Server Listing
- TaScan MCP Server
TDQS
Scored across 90 tools
The tools are heavily specialized with detailed descriptions, but at 90 tools there are several closely related clusters—dispatch/send/schedule/instruction, get_report/generate_report/list_reports, get_worker/get_worker_passport, and the analyze/recommend/dispatch/auto_resolve protocol steps—that an agent could easily pick wrong. No two tools are truly identical, so careful reading resolves most ambiguity.
Almost all tools follow tascan_<verb>_<noun> in snake_case, and get/list are used consistently for singular/plural reads. There are a few noun-phrase names (tascan_org_analytics, tascan_project_digest, tascan_zone_compliance) and bare tascan_find, but the pattern is predictable overall.
90 tools is far beyond a coherent MCP surface and exceeds the 50+ 'extreme mismatch' threshold. Even allowing for TaScan's broad domain, this should be split into per-domain servers (tasks, workers, SMS, AI ops, invoices/reports) to be usable.
Coverage is impressively broad across projects, task lists, tasks, subtasks, workers, zones, tags, invoices, SMS, reports, AI agent dispatch, evidence, and receipts, with CRUD for most primary entities. Gaps are minor and mostly secondary-resource lifecycle operations (no delete/update for tags/assets/invoices, no direct issue state change), so agents can complete workflows without dead ends.
Available Tools
90 toolstascan_add_subtasksAInspect
Add one or more subtasks to a task (bulk). Subtasks support typed responses: "number" for per-set data (reps, weight, distance), "text" for notes, "choice" for options, "checkbox" for simple steps. Set-logging example: task "Bench Press" with subtasks Set 1/Set 2/Set 3 each response_type "number" — each completed set stores its value and timestamp, giving per-set timing for progression tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Parent task ID | |
| subtasks | Yes | Array of subtasks to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful runtime behavior beyond annotations: it explains that each completed 'number' set 'stores its value and timestamp, giving per-set timing for progression tracking' and clarifies response_type semantics. Annotations only say the call is not read-only and not destructive; the description adds the important data-capture behavior. It doesn't cover idempotency or bulk edge cases, but the safety profile is already covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the typed-response taxonomy, then a worked example. No filler; the example earns its place by making the response_type semantics concrete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two required parameters and a fully described schema, the description plus schema is enough to construct a correct call: task_id, subtasks with title, optional sort_order/description/response_type/response_config. It lacks an explicit note about the return value or bulk limits, but no output schema exists and the interactions are simple, so this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for task_id and subtasks, so baseline is 3. The description adds value by giving concrete examples of response_type values ('number' for per-set data like reps/weight/distance, 'choice' for options) and illustrating the set-logging scenario, which goes slightly beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'Add one or more subtasks to a task (bulk)' – specific and distinct from tascan_add_tasks and other sibling mutation tools. It also names the key domain feature (typed responses), further narrowing the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete use case (set-logging with Bench Press / Set 1/2/3 and response_type 'number') that tells an agent when bulk subtask creation is the right pattern. It doesn't explicitly state when not to use alternatives like tascan_update_subtask or tascan_delete_subtask, but gives clear context for the primary scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_add_tasksAInspect
Add one or more tasks to an event (task list). Supports bulk creation. IMPORTANT: Set response_type correctly — use "text" for info collection (names, phones, emails, notes), "photo" for visual verification (inspections, serial numbers, damage checks), "checkbox" only for simple confirmations. NOTE: To dispatch tasks to an AI agent use tascan_dispatch_to_agent instead. Writing into an agent inbox list requires the agent:dispatch permission (agent:dispatch:code for CODE:/SHELL: titles) — without it the call is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | Array of tasks to create | |
| list_id | Yes | Task list (event) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark the operation as non-read-only and non-idempotent; the description adds crucial runtime behavior: permission requirements (agent:dispatch, with agent:dispatch:code variant), refusal without permission, and bulk-creation capability. There is no contradiction with the readOnlyHint=false/destructiveHint=false annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then bulk capability, then the highest-risk parameter guidance, then sibling routing and permission warning. Each sentence earns its place and the IMPORTANT/NOTE formatting highlights the critical parts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a rich schema and no output schema; the description covers the main decision points (response_type, dispatch alternative, permissions) but does not describe the return value or failure modes beyond refusal. For a bulk creation tool this is a minor gap, so it is near-complete rather than fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already contains detailed response_type guidance nearly verbatim (text for info collection, photo for proof, checkbox for confirmations). The tool description restates and emphasizes that guidance but does not add new meaning beyond the schema, so it stays at the high-coverage baseline of 3. The permission note is about authorization, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and target ('Add one or more tasks to an event (task list)') and notes bulk creation, so the agent knows exactly what the tool does. The note routing AI-agent dispatch to tascan_dispatch_to_agent also distinguishes this tool from a closely related sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-not instruction: 'To dispatch tasks to an AI agent use tascan_dispatch_to_agent instead.' It also warns that writing into an agent inbox list requires agent:dispatch permission and that the call is refused without it, giving clear conditions for use. This is strong routing guidance beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_analyze_issueAIdempotentInspect
Step 1 of the Closed-Loop Autonomous Operations Protocol. Retrieves full issue context including worker info, message thread, project history, and recent similar issues. Use this data to reason about the root cause and generate a remediation plan. Also supports server-side AI analysis via POST (calls Anthropic API directly).
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID to analyze | |
| server_side_ai | No | If true, the server calls Anthropic API directly for AI analysis (default: false — returns raw data for MCP client to analyze) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-destructive, and readOnlyHint false. The description adds valuable context by disclosing that server_side_ai triggers a POST to the Anthropic API, explaining why the tool is not purely read-only and highlighting potential external side effects. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences each contribute useful information: protocol context, retrieval details, and the server-side AI capability. It is efficient, though the protocol framing at the start delays the core verb; overall it is appropriately sized and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description gives a reasonable summary of the returned data (worker info, message thread, project history, similar issues) and explains the behavior for both default and server_side_ai modes. It covers the tool's complexity well, though exact response formatting is not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the server_side_ai parameter's behavior (raw data vs. direct AI analysis) but does not introduce new semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves full issue context, listing specific data types (worker info, message thread, project history, similar issues), and also mentions the server-side AI analysis option. It clearly distinguishes itself from sibling tools like list_issues or auto_resolve by framing it as Step 1 of the Closed-Loop Autonomous Operations Protocol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by labeling it as 'Step 1 of the Closed-Loop Autonomous Operations Protocol' and states its intended purpose ('Use this data to reason about the root cause and generate a remediation plan'). However, it does not explicitly mention alternatives or when not to use this tool, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_apply_templateAInspect
Apply a pre-built template to a task list, adding all template tasks
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID | |
| template_slug | Yes | Template slug (e.g. "conference-load-in", "warehouse-receiving") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-readOnly, non-idempotent, non-destructive operation. The description adds that it 'adds all template tasks', confirming an additive effect, but it does not disclose potential duplication on re-application or error behavior. Little is added beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and clearly states the action and target. No unnecessary words or repetitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with annotations and full schema coverage, the description is mostly complete. It clearly communicates the core functionality but could add context about whether existing tasks are preserved or if applying twice duplicates tasks. However, the non-destructive hint partially covers this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the schema (list_id and template_slug) with examples in the template_slug description. The tool description reinforces their role but does not add additional semantic meaning beyond what the schema already provides. Baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'apply' with a specific resource 'pre-built template to a task list' and the outcome 'adding all template tasks'. This distinguishes it from sibling tools like tascan_add_tasks, which focus on adding tasks individually rather than through a template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a template_slug is available, but it does not explicitly state when to use this tool over alternatives (e.g., tascan_add_tasks) or mention any prerequisites like listing templates first. Usage is inferred but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_assess_conditionAInspect
Run an AI condition assessment of an asset from a photo. The model scores 0-100 with the asset's full assessment history in context, so it reads degradation over time — returning the Condition Delta Score vs the previous assessment, defects, wear indicators, maintenance recommendations, and a degradation trajectory. Sensor-free predictive maintenance.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset ID (from tascan_register_asset or tascan_list_assets) | |
| photo_url | Yes | Public URL of the assessment photo | |
| worker_name | No | Who took the photo (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by explaining that the model uses 'the asset's full assessment history in context' and returns specific outputs (delta score, defects, wear indicators, recommendations, trajectory). It does not contradict the annotations (readOnlyHint=false, destructiveHint=false) and provides meaningful insight into how the tool operates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence front-loading the core purpose and the second efficiently describing the return values and behavioral context. There is no redundant or unnecessary information; every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, which it does thoroughly (delta score, defects, wear indicators, recommendations, trajectory). It also explains the use of historical context. However, it does not address edge cases (e.g., no previous assessment) or response format specifics, leaving a small gap. Overall, it is nearly complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the input schema. The description adds some contextual relationship (e.g., history context for asset_id) but does not provide additional parameter-level details beyond what the schema offers, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Run an AI condition assessment of an asset from a photo.' It goes beyond a simple statement by specifying unique outputs like 'Condition Delta Score' and 'degradation trajectory,' which distinguishes it from sibling tools like tascan_condition_history or tascan_recommend_fix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need a photo-based AI condition assessment with historical context. It implies the use case but does not explicitly name alternatives or exclusions, which prevents a 5. However, the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_auto_resolveBInspect
FULL Closed-Loop Autonomous Operations Protocol in one call. Server-side AI analyzes the issue, generates remediation tasks, creates a task list, and dispatches to the worker — all without human intervention. This executes Patent Claim 7: autonomous operations from issue detection through physical-world instruction delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue ID to auto-resolve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by detailing the server-side AI analysis, creation of a task list, and dispatch to a worker, including physical-world instruction delivery. This complements the annotations (readOnlyHint=false, destructiveHint=false) and provides a clear picture of the multi-step side effects without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and not overly long, but it contains marketing-like phrasing such as 'FULL Closed-Loop Autonomous Operations Protocol' and a patent claim reference that may be unnecessary for practical understanding. The core behavior is present but could be stated more directly and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description does not explain what the tool returns or the outcome after dispatch, such as a confirmation, task list, or status update. It also omits prerequisites like the issue being in a resolvable state, leaving the agent without a full understanding of result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers issue_id with 100% description coverage, so the schema documents the parameter adequately. The description does not add extra meaning about the parameter format, source, or constraints, leaving the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool performs a full autonomous resolution workflow: analyzing the issue, generating remediation tasks, creating a task list, and dispatching to a worker. This goes beyond simply saying 'auto-resolve' and distinguishes it from sibling tools like tascan_analyze_issue or tascan_add_tasks by emphasizing the complete closed-loop behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when full autonomous resolution without human intervention is desired, but it does not explicitly state when to use this tool versus alternatives. It lacks exclusions or a direct comparison with sibling tools, such as suggesting tascan_analyze_issue for only analysis or tascan_dispatch_instruction for only dispatch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_cancel_scheduled_smsADestructiveIdempotentInspect
Cancel a scheduled text that has not been sent yet (status pending). A row already sending, sent, failed or cancelled is refused (409) — a sent text cannot be recalled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduled_sms row id from tascan_schedule_sms / tascan_list_scheduled_sms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that non-pending rows are refused with 409 and that sent messages cannot be recalled. This adds meaningful behavioral context to the destructiveHint and idempotentHint annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences deliver the action, the precondition, and the key error condition without repetition or filler. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers the valid target state, the invalid states, the error behavior, and the fundamental limitation. Combined with the annotations, an agent has everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already fully described as the scheduled_sms row id from tascan_schedule_sms / tascan_list_scheduled_sms. The description adds no additional parameter-level meaning, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact operation (cancel) and the target resource (a scheduled text/SMS row) and specifies the relevant state (pending). This clearly distinguishes it from scheduling, sending, and generic deletion tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states an explicit precondition — the text must be pending — and explicit forbidden states: sending, sent, failed, or cancelled. It also makes the hard limitation clear with 'a sent text cannot be recalled,' so an agent knows exactly when to use this tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_complete_subtaskAInspect
Complete a subtask, optionally recording a typed response_value (e.g. the weight or reps for that set). Each completion is timestamped, so consecutive set completions yield per-set durations. Returns progress including all_subtasks_complete — when true, complete the parent task with tascan_complete_task.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional notes | |
| worker_id | No | Worker performing the completion (optional) | |
| subtask_id | Yes | Subtask ID to complete | |
| response_value | No | Typed response value (for number/text/choice subtasks), e.g. "165" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent operation. The description adds valuable behavioral detail beyond this: each completion is timestamped, per-set durations are derivable from consecutive completions, and the returned progress includes the all_subtasks_complete flag. This helps the agent understand the timing semantics and downstream implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences with no wasted words. The core action is first, then the optional parameter behavior, then progress/return behavior and the related parent-completion step. Important operational details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the operation's purpose, optional behavior, return key, and next action. While an output schema is absent, the description provides the most relevant return information (all_subtasks_complete and timestamping). Some details like error behavior or what happens when all_subtasks_complete is false are not spelled out, but are reasonably inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. However, the description enriches response_value by explaining its purpose with a concrete example ('weight or reps') and indicating it applies to number/text/choice subtasks. This goes beyond what the schema alone communicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('complete a subtask') and the optional response_value for typed data. It also distinguishes the tool from tascan_complete_task by explicitly mentioning that completing the parent task is a separate step once all subtasks are complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use this tool to complete a subtask and optionally record a typed response value. It also gives explicit guidance on the next step after completion (calling tascan_complete_task when all_subtasks_complete is true), which is a direct alternative-routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_complete_taskAInspect
Complete an ORDINARY task on behalf of a worker. Inserts a completion record and timer event. Use this to simulate or record task completions via the API. Coordination-cycle tasks (a CODE:/REVIEW: build or review, a Decision / Question / Integrate / Parked card on a project Decisions list — tasks that carry coord) are refused with 403 for every key tier: builds and reviews are completed by their runner, decisions only by the human on the worker page.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional completion notes | |
| task_id | Yes | Task ID to complete | |
| worker_id | Yes | Worker ID performing the completion | |
| response_value | No | Response value (for text/number/choice tasks) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses concrete side effects beyond the annotations: it inserts a completion record and a timer event. It also reveals the 403 refusal behavior for coordination-cycle tasks, which is valuable behavioral context not available from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary action, and every sentence contributes useful information: action, side effects, usage context, and exclusions. It is dense but not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essential context: what the tool does, what side effects it causes, and when it fails. The only minor gap is that it does not describe the return value or post-completion state, but this is not critical for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds some context (such as 'on behalf of a worker' clarifying worker_id), but it does not meaningfully elaborate on response_value or notes, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: completing an ORDINARY task on behalf of a worker. It also distinguishes this from coordination-cycle tasks, which are explicitly excluded, and from subtask completion by using the phrase 'ORDINARY task' and the 403 refusal conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('simulate or record task completions via the API') and when not to use it (coordination-cycle tasks, builds/reviews, decisions). It even names the alternative completion paths for excluded cases, making the routing decision explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_condition_historyARead-onlyIdempotentInspect
Get an asset's longitudinal condition history — score trend over time, every assessment with grade, delta, findings, and who assessed it. The per-serial-number condition ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds value by detailing the output: score trend, grades, deltas, findings, and assessor. This goes beyond the annotations by describing the return structure. It does not mention edge cases (e.g., empty history) or response limits, but the annotations cover the core behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The first sentence is front-loaded with the verb and resource, then lists specifics. Every word earns its place; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and no output schema, the description covers the core purpose and return contents. However, it lacks details on response ordering (chronological?), pagination (if many assessments), and error handling for missing assets. The annotations (openWorldHint=false) hint at limited results, but completeness is adequate but not fully fleshed out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (asset_id) with description 'Asset ID', and schema coverage is 100%. The description does not add type or format details for asset_id (e.g., is it a UUID or serial number?), but the phrase 'per-serial-number condition ledger' weakly implies asset_id corresponds to a serial number. This adds marginal meaning beyond the schema, keeping the score at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and explicitly identifies the resource ('asset's longitudinal condition history'), detailing what it returns: score trend, assessments with grade, delta, findings, and assessor. It distinguishes itself from sibling tools like tascan_get_scan_history and tascan_get_report by focusing on condition history, and the 'per-serial-number condition ledger' clarifies scope by serial number.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying 'longitudinal condition history' and listing the contents (grades, trends, findings), so an agent knows to use this when needing historical condition data. However, it does not explicitly state when not to use it or name alternative tools (e.g., tascan_get_report for summaries). The context is strong enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_create_cycleAInspect
Start an unattended build-review-decide cycle (protocol v0.2). Queues T1 CODE: (or SHELL:) with your build_brief on the AI Inbox and T2 REVIEW: with your review_brief, born blocked on T1. T1 (2026-09-24 throughput): kind=review_only mints T1 as CAPTURE: instead — the executor stores the bundle from the repo at HEAD without a model call and the review runs on that; dry_run=true runs the dispatch PREFLIGHT only (nothing queued) and prints every problem at once (codes title_too_long, brief_rule, brief_names_unbundled_path, artifact_over_cap, migration_as_context (tascan repo only), idempotency_replay, kind_invalid — bad kind, bad revisable_by, review_only + task_type SHELL/RESEARCH, review_only + max_questions 0), then what the API could NOT check (unchecked[]: artifact_missing_at_head always — only the executor sees the repo, and a CAPTURE naming a missing path fails with "[artifact_missing_at_head]" in its error; artifact_over_cap for any path without a byte count — pass artifact_bytes; idempotency_replay only if its lookup failed) and warnings[] (a build_brief naming a context file outside the bundle); a real create that the API refuses prints the same problems[] list (when the transport hands the tool only the first problem's text, the tool re-runs the preflight and prints the whole list). The local executor builds, stores the exact bytes of artifact_paths as a bundle (build_ref = sha256 over the manifest), the independent reviewer reviews THAT bundle, an approve verdict mints a Decision task for the human authority (one SMS), Approve mints an Integrate task for the deploy id. Revise verdicts spawn revisions (cap max_revisions, default 3); reject, human Reject, scope violations or exhausted revisions PARK the cycle (a Parked task with Resume with notes / Close). REQUIRES agent:dispatch:code. Duplicate protection: the same idempotency_key, or (keyless) the same briefs + paths on a live root, within 24 h is refused by the preflight as idempotency_replay (400, nothing queued, the existing root_id in the problem) and printed as DUPLICATE with that root_id; only a replay the preflight could not see (a race) comes back from the RPC as 200 created=false, printed the same way. Optional reviews[] attaches a multi-lens review panel (design item 14a) in place of the single OpenAI review — one review task mints per lens and every blocking lens must approve before the Decision task mints. Track with tascan_get_cycle_report (root_id). Nothing spawns a cycle on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Cycle kind (default build). review_only = no model builds anything: T1 is "CAPTURE: <title>", a local-executor task that stores artifact_paths from the repo at HEAD as the bundle (same build_ref, size cap and scope check as a CODE build) and completes in seconds; T2 REVIEW then reviews that bundle. Use it to get an independent review of documents or of code already committed by hand. Stored as coord.kind_of_cycle on the root. | |
| repo | No | Which codebase on the executor the build runs in — an alias from the executor's allowlist (tascan-agent/repos.json), e.g. "tascan" (default), "merchskipper", "inkskipper", "rangerlizzy", "cardvault", "take1", "fitcheck", "safegrid", "eternity", "maniacs". artifact_paths are relative to that repo. An unknown alias is refused by the executor (repo_unknown) and the cycle parks. | |
| title | Yes | Short human title (1-200 chars). T1 becomes "CODE: <title>" ("CAPTURE: <title>" when kind=review_only), T2 "REVIEW: <title>". | |
| dry_run | No | true = PREFLIGHT only: the API validates the whole dispatch and returns every problem at once (code, path, detail) plus the unchecked[] list (what only the executor / the RPC can decide) and warnings[] — nothing is queued, no idempotency key is consumed. Recommended before every real create. Default false. | |
| reviews | No | Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. "code-correctness", "security", "ui-ux"), brief: 1-8000 chars of cycle-specific context for that lens, provider: "openai"|"anthropic"|"gemini", model?: 1-100 chars, blocking?: boolean (default true — at least one entry must be blocking or the whole array is refused), max_tool_calls?: integer (openai only)}. One REVIEW: task mints per lens, all blocked on T1; the Decision task mints only once every blocking lens has approved the same build. Omit for today's single OpenAI code review. | |
| task_type | No | T1 prefix (default CODE). CAPTURE is never caller-settable: kind=review_only makes T1 "CAPTURE:" itself. With kind=review_only the value is sent as given — CODE is accepted (T1 is still CAPTURE), SHELL / RESEARCH are refused by the API as kind_invalid. | |
| project_id | Yes | Working project (UUID). Its Decisions and Agent Questions lists are created on the first cycle (coord_ensure_lists). Requires the org human authority to be configured (coord_set_authority) — otherwise 403. | |
| build_brief | Yes | The executor prompt (1-40000 chars). Executed verbatim by the local Claude Code runner as a CODE:/SHELL: task — write it as a complete instruction, name the files, forbid nothing the runner already forbids (deploy/commit/push are refused by its context). | |
| preview_url | No | Optional https preview link shown on the Decision task. | |
| review_brief | Yes | The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref. Still required even when `reviews[]` is given (kept as T2's legacy description text). | |
| revisable_by | No | review_only cycles only — who fixes a revise verdict. dispatcher (default): the cycle parks on revise as today and you re-dispatch. executor: a revise spawns a revision CAPTURE task (up to max_revisions) that is born blocked on a question task "Revise the documents, then answer to release" addressed to you — fix the files in the repo, answer that question (tascan_post_message kind=answer), and the capture re-runs on the fixed HEAD. Build cycles always revise through the executor regardless of this field. | |
| max_questions | No | Questions a runner may ask per task before the attempt fails (default 3). | |
| max_revisions | No | Revision cap (default 3): at most max_revisions + 1 builds and reviews. | |
| artifact_bytes | No | Optional {path: bytes} for artifact_paths — the byte length of each file in your checkout. The API cannot read the repo, so artifact_over_cap (262144-byte reviewable cap per file) is only checked for paths you give a byte count; every other path is reported under unchecked (artifact_over_cap, unchecked_at_api) — never guessed from an earlier stored bundle. Same on dry_run and the real create. | |
| artifact_paths | Yes | Repo-relative paths the build binds (1-64). Exactly these files are stored as the bundle and hashed into build_ref; files the executor touches OUTSIDE them fail the scope check and park the cycle. No .., not absolute, no drive letter, no backslash. | |
| idempotency_key | No | Optional caller key (≤ 200 chars). The same key within 24 h is refused as idempotency_replay (nothing queued) and printed as DUPLICATE with the existing root_id — safe to retry after a lost answer. | |
| integrate_title | No | Optional title template for the Integrate task (default "Integrate: <title>"). | |
| checkpoint_title | No | Optional title template for the Decision task (default "Decision: <title>"). | |
| max_cost_micro_usd | No | Per-cycle spend cap summed over every attempt, in micro-USD (default 5000000 = USD 5). A claim that could overrun it is refused (budget_exhausted). | |
| integrate_description | No | Optional description template for the Integrate task. | |
| checkpoint_description | No | Optional description template for the Decision task; the build_ref, preview and findings summary are appended. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark read/write/idempotent/destructive hints; the description far exceeds that by disclosing side effects (minting tasks, parking cycles, revision limits), duplicate-prevention behavior, preflight limitations (unchecked[]), and error codes. No statement contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, but it is a single extremely dense paragraph with long parenthetical enumerations of validation codes and edge cases. It earns its place content-wise, yet poor visual structure makes it harder for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers side effects, preflight validation, failure modes, duplicate handling, revision/review behavior, optional panels, permissions, and tracking. A caller has the information needed to decide on dry_run versus a real create and to interpret the cycle afterward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline applies; the description largely repeats semantics already present in the schema (kind=review_only, dry_run, artifact_bytes, idempotency_key). It adds protocol-level context like build_ref sha256 and DUPLICATE root_id, but not enough new per-parameter meaning to rise above the high-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening sentence names a specific verb and resource: 'Start an unattended build-review-decide cycle' and immediately spells out concrete behavior (queues T1 CODE:/T2 REVIEW:). This clearly distinguishes it from the many create_* and list_* siblings; it is unmistakably the cycle-creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear invocation context: dry_run performs a PREFLIGHT-only validation, a real run queues multiple tasks, and tracking is routed to tascan_get_cycle_report(root_id). It also states the required permission (REQUIRES agent:dispatch:code), though it does not explicitly enumerate when-not-to-use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_create_eventAInspect
Create a new event (task list) within a project. Supports team_mode (shared completions) and multi_instance (each worker gets isolated copy — great for surveys, onboarding, info collection). team_mode and multi_instance cannot both be true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name | |
| team_mode | No | Team mode — shared completions | |
| project_id | Yes | Project ID | |
| description | No | Event description | |
| multi_instance | No | Multi-instance — each worker gets isolated copy | |
| assigned_worker_ids | No | Worker UUIDs to assign to this event. Each gets a personal tap-to-open link. Note: a worker holds one event assignment per project — assigning moves them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds mode semantics and the rule that team_mode and multi_instance cannot both be true, which is not available from annotations. It does not contradict the annotations. Some side effects, like worker assignment moving, are only hinted in the schema param note rather than the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action is front-loaded, and the mode explanation follows naturally in compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The main purpose, project placement, mode semantics, and the key constraint are present, and all parameter details are covered by the schema. It is silent on return behavior or what happens after creation, which is a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all 6 parameters, so the baseline is 3. The description adds extra value by elaborating what team_mode and multi_instance mean and exposing the exclusivity constraint beyond the schema's one-line property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Create), resource (event/task list), and scope (within a project). It also names the two mode flags, which distinguishes it from project/worker/zone creation siblings even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful context for when multi_instance is valuable ('surveys, onboarding, info collection') and notes the mutual-exclusion constraint. However, it does not mention alternatives like tascan_update_event or tascan_create_project, nor give 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.
tascan_create_invoiceAInspect
Create a client invoice and get its shareable link. Two ways to bill: (a) pass explicit line_items, or (b) pass project_id or task_list_ids plus hourly_rate (quarter-hour billing from first→last verified completion per list) or flat_rate_per_list, and TaScan builds one line per list from VERIFIED work (" — 7/7 tasks verified · Sep 1 · 1.25h"); lists with no completions are skipped. A single-list invoice also mints a client-facing Service Report (acknowledge → pay) and links it. Returns invoice number, totals, url, and the work it billed.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Payment terms / thank-you shown on the invoice | |
| status | No | Default sent | |
| billing | No | Billing rules for auto line items. mode: hourly (default when hourly_rate given) | day_rate | flat. Overtime/double time are computed PER WORK DAY from verified completions: hours over overtime_after_hours (default 8) bill at overtime_multiplier (1.5×), hours over double_time_after_hours (12) at double_time_multiplier (2×); set overtime:false to disable. per_diem adds one line × work days (or per_diem_days). expenses are pass-through lines. | |
| due_date | No | YYYY-MM-DD (default: 30 days out) | |
| tax_rate | No | Fraction, e.g. 0.0825 for 8.25% | |
| min_hours | No | Minimum billable hours per list (e.g. 1) | |
| line_items | No | Explicit lines instead of auto-billing | |
| project_id | No | Bill every list in this project (auto line items) | |
| client_name | Yes | Bill-to name (person or company) | |
| hourly_rate | No | Dollars per hour for auto line items | |
| client_email | No | ||
| client_phone | No | ||
| company_name | No | Your company name on the attached Service Report (defaults to the org name) | |
| task_list_ids | No | Bill just these lists (auto line items) | |
| payment_options | No | Pay-how-you-like buttons on the invoice (defaults to the org's saved handles). Keys: venmo (@handle), cashapp ($cashtag), paypal (paypal.me name), zelle (phone/email), applecash (phone), other (free text e.g. "cash or check"). Stripe card checkout is separate and only shows when the org has invoice_payments enabled. | |
| flat_rate_per_list | No | Dollars per list for auto line items (used when no hourly_rate) | |
| attach_service_report | No | Mint + link a Service Report for single-list invoices (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It goes well beyond the annotations by revealing non-obvious behavior: auto lines come only from VERIFIED work, lists with no completions are skipped, billing is quarter-hour from first to last verified completion, and single-list invoices also mint a linked Service Report. Annotations only supply read/destructive/idempotent hints, so the description carries the behavioral burden and succeeds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, and every clause earns its place — including the illustrative line format. It is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 17 parameters and no output schema, it names the key decision inputs and the return package (invoice number, totals, url, work billed). The remaining parameter details are already in the schema, so nothing needed for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 88%, the schema documents individual fields, but the description explains parameter interactions: line_items bypasses auto-billing, project_id/task_list_ids plus hourly_rate or flat_rate_per_list drives generated lines, and attach_service_report behavior is exposed. This adds meaning the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with an explicit action and resource — 'Create a client invoice and get its shareable link' — and immediately distinguishes the two billing paths. This differentiates it from sibling update/list/request tools even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit conditional guidance for choosing explicit line_items vs project_id/task_list_ids auto-billing, including the rate options. It does not explicitly route to sibling tools such as tascan_update_invoice, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_create_projectAInspect
Create a new TaScan project (top-level container for events)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name | |
| location | No | Project location / venue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive, non-idempotent operation. Description adds no additional behavioral context such as permissions, uniqueness constraints, or return behavior. It merely restates the create action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with the action and resource; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with complete schema and annotations, the description provides enough context by explaining the project is a top-level container for events. It does not mention return values, but the absence of an output schema lowers the requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage with descriptions for 'name' and 'location'. Tool description adds no parameter detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Create' with resource 'TaScan project' and clarifies its role as 'top-level container for events', distinguishing it from sibling tools like tascan_create_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description does not explicitly state when to use this tool over siblings; it only implies usage via the project concept. No alternative tools or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_create_workerAInspect
Create a new worker (taskee) in the organization
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Worker name | |
| No | |||
| phone | No | Phone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write. The description adds the 'taskee' alias and organizational scope, but does not disclose any additional behavioral traits such as validation rules, uniqueness constraints, or required permissions. It is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler, front-loading the operation ('Create') and resource ('worker'). It earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema is well-documented and annotations cover the safety profile, the description lacks information about return values (no output schema) or any preconditions. For a simple create operation, this is a minor gap, but it's not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (name, email, phone each have descriptions). The description adds no additional meaning beyond the schema, which meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'create' and resource 'worker' (with alias 'taskee'), clearly distinguishing from sibling tools like tascan_update_worker and tascan_list_workers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no explicit guidance on when to use it vs alternatives (e.g., tascan_register_agent may be an alternative for adding agents, or tascan_list_workers to check existing). Usage is implied by the action 'create' but no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_create_zoneAInspect
Create a geofenced work zone. Delivery zones route workers who open the project Site Gate (geo.html?project=...) to this zone's task list when GPS places them inside the radius. Set enforce_on_list=true to zone-lock the task list — workers cannot start it from outside the zone.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Zone center latitude | |
| lng | Yes | Zone center longitude | |
| kind | No | What the fence MEANS. work_site: expected here (auto clock-in, list on enter). hazard: enter allowed under conditions — required_ppe + photo checkpoint verified by AI vision, the OSHA row. containment: must stay inside; leaving = breach. restricted: must stay out; entering = breach. Default work_site. | |
| name | Yes | Zone name (e.g. "Stage Left", "Loading Dock") | |
| polygon | No | Polygon/rectangle zone instead of a circle: vertices as [[lat,lng], ...], at least 3. lat/lng/radius_m are then computed (centroid + bounding radius) — still pass lat/lng but they are overridden. | |
| radius_m | No | Radius in meters (default 150, min 10, max 100000) | |
| project_id | No | Project this zone belongs to | |
| description | No | Shown to workers on the Site Gate page | |
| notify_email | No | Alert recipient override — defaults to all org admins | |
| required_ppe | No | Hazard zones: PPE the worker must show at entry (pick-list so the audit reads the same words) | |
| task_list_id | No | Task list the Site Gate routes workers to when they are inside this zone | |
| auto_clock_in | No | Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan. | |
| enter_message | No | What the worker sees / is texted on entry (default is generated from the rule) | |
| auto_clock_out | No | Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan. | |
| notify_on_exit | No | Email the manager when a worker leaves this zone (accountability — sign in then disappear) | |
| alert_on_breach | No | Email + SMS the admin on containment-exit / restricted-enter (default true) | |
| enforce_on_list | No | Zone-lock the task list — it cannot be started from outside the radius | |
| notify_on_enter | No | Email the manager when a worker enters this zone (danger areas) | |
| ppe_photo_required | No | Hazard zones: pop a photo checkpoint on entry (default true when required_ppe is set) | |
| sms_worker_on_exit | No | Text the worker on exit | |
| task_list_on_enter | No | Task list dispatched to the worker (in-app + SMS) when they cross into the zone | |
| sms_worker_on_enter | No | Text the worker the rule/list on entry, even if the app is closed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that zones perform GPS-based task-list routing and that enforce_on_list locks the task list to workers inside the radius. It does not cover return values or auth, but annotations already establish this as a non-read-only, non-idempotent mutation. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the core action first and the enforcement option second. It avoids repeating schema content and contains no filler. The geo.html URL detail is specific but earns its place by clarifying the routing mechanism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-parameter creation tool, the schema carries most of the burden, and the description supplies the essential zone-routing mental model plus a key behavioral toggle. It does not state the return value, but no output schema exists and the annotations already convey the side-effect profile. This is sufficiently complete for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 22 parameters with 100% coverage, so the baseline is high. The description adds meaning by connecting lat/lng/radius/task_list_id to the routing behavior and by explaining why a caller would set enforce_on_list=true. It does not document parameter syntax, but the schema already does that thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a geofenced work zone,' a clear verb-direct object pair that identifies the resource and distinguishes this from other create_* tools. It then adds the zone's routing behavior, so an agent knows what a zone is for. No ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what created zones do and highlights the enforce_on_list behavior, giving useful context. However, it never explicitly says when to use this tool versus update_zone or list_zones, and it offers no exclusions or alternatives. The selection cue is mostly carried by the tool name and the verb 'create.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_delete_eventADestructiveIdempotentInspect
Delete an event (task list) and all its tasks and completions. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds critical context: the cascade deletion of tasks/completions and irreversibility, which are not inferable from annotations alone. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. Every phrase adds value: the resource, cascade scope, and irreversibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and no output schema, the description adequately covers purpose, effect, and irreversible nature. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter list_id is fully described in the schema as 'Task list (event) ID to delete' (100% coverage). The description does not add additional parameter-level details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete), the resource (event/task list), and the scope (all tasks and completions), distinguishing it from sibling delete tools for tasks and projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit 'when to use' guidance or named alternatives, but the scope 'all its tasks and completions' implies a cascading delete, differentiating it from tascan_delete_task. It provides clear context but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_delete_projectADestructiveIdempotentInspect
Delete a project and all its events, tasks, and completions. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, but the description adds crucial behavioral details: it cascades to events, tasks, and completions, and is irreversible. This goes beyond the structured hints and informs the agent about the full impact of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first states the action and scope, the second emphasizes irreversibility. Every word adds value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter, the description adequately covers the behavior (cascade deletion) and consequence (irreversible). No output schema exists, but delete operations typically return simple success indicators. The description is complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter project_id with a description 'Project ID to delete'. The tool description adds no additional semantic detail beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete), the resource (a project), and the scope (all its events, tasks, and completions). It distinguishes itself from sibling delete tools like tascan_delete_event and tascan_delete_task by specifying the project-level cascade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when removing an entire project and its associated data. It does not explicitly name alternatives or state when not to use it, but the scope is unambiguous and the context is sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_delete_subtaskADestructiveIdempotentInspect
Delete a subtask and its completions. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| subtask_id | Yes | Subtask ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the deletion cascades to completions and is irreversible, which is valuable beyond the annotations' destructiveHint and idempotentHint. It does not contradict the provided annotations and gives clear context about what gets destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences contain all essential information. The primary action is front-loaded and the irreversibility warning is immediate, with no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation with one clearly documented parameter, the description sufficiently covers the object being deleted, the cascading effect, and permanence. It does not describe return values, but there is no output schema and the tool's purpose is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully describes the single 'subtask_id' parameter. The description does not add parameter-level details, but none are needed given the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action 'Delete a subtask and its completions' with a clear verb and resource, and explicitly notes the irreversible nature. It clearly distinguishes itself from sibing delete_task by targeting subtasks and their associated completions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool instead of alternatives such as tascan_update_subtask or tascan_complete_subtask. The resource name implies the usage, but the description does not state conditions, exclusions, or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_delete_taskADestructiveIdempotentInspect
Delete a specific task and its completions. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds value beyond annotations by explicitly noting the cascade effect ('and its completions') and the irreversible nature of the operation, which is not fully captured by 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that immediately state the primary action and a key consequence. Every word is purposeful, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the small parameter surface, the lack of an output schema, and the presence of annotations (destructive, idempotent), the description covers the essential functional context. It explains what is deleted and the irreversible nature, which is sufficient for an agent to invoke it correctly. It could mention edge cases like non-existent tasks, but that is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter 'task_id' with a clear description. The tool description does not add additional parameter-level context, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Delete' with a clear resource 'a specific task and its completions', which distinguishes it from sibling delete tools for events and projects. The additional note that the action is irreversible further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool (when deleting a task) but does not explicitly contrast with alternatives like deleting events or projects. No exclusions or prerequisites are mentioned, so usage guidance is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_delete_workerADestructiveIdempotentInspect
Tombstone a worker record (is_active=false). REFUSES if the worker has any task/subtask completions or payments — merge those into the real worker with tascan_merge_workers instead. Never hard-deletes.
| Name | Required | Description | Default |
|---|---|---|---|
| worker_id | Yes | Worker ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already mark the tool as destructive, the description adds meaningful behavioral detail: it is a soft delete (is_active=false), it refuses under certain conditions, and it never hard-deletes. This goes well beyond the annotations and clarifies exactly what 'delete' means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core operation stated first, followed by the key exception and the correct alternative. Every sentence adds value; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the operation, the safety guardrail, the alternative path, and the soft-delete behavior. Nothing essential is missing for an agent to decide whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the worker_id parameter is already described as 'Worker ID to delete.' The description reinforces that the target is a worker record but does not add significant new semantics beyond the schema, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Tombstone a worker record'), identifies the exact resource, and clarifies the operation sets is_active=false. It also distinguishes itself from tascan_merge_workers, so an agent can tell which tool handles which scenario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the condition under which the tool refuses ('any task/subtask completions or payments') and names the alternative tool to use in that case (tascan_merge_workers). This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_dispatcher_actionAInspect
Record a chief-of-staff dispatcher action on a coordination cycle as a receipt (protocol v0.2 D6, POST /coord/cycles/:root/dispatcher-actions): hand_review_approve, hand_review_revise, park, bundle_recovery, migration_apply, deploy or decision. Mints a completed task + completion under the Chief of Staff worker and a dispatcher_action ledger event on the root. kind=deploy additionally requires evidence.deploy_id (a Netlify deploy id) and composes the same integrate-as-note every root gets with coord_record_integration when the root is authorized — one call that does both records. Requires agent:dispatch.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which dispatcher action this is. | |
| root_id | Yes | The cycle root task id (tascan_list_cycles / tascan_create_cycle). | |
| summary | Yes | Human-readable summary (1-4000 chars) — becomes the recorded completion notes. | |
| evidence | No | Optional evidence object (serializes to at most 8000 chars). For kind=deploy this must include deploy_id: 24 lowercase hex, optionally prefixed deployed: and/or followed by a build-ref hex prefix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only mark it a non-read, non-destructive write), the description discloses concrete side effects ('Mints a completed task + completion under the Chief of Staff worker and a dispatcher_action ledger event on the root'), the auth requirement ('Requires agent:dispatch'), and a conditional path for kind=deploy. This is exactly the behavioral context the rubric credits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and every clause earns its place — kinds, side effects, deploy exception, auth. However, it is a single dense multi-clause sentence mixing protocol jargon ('protocol v0.2 D6'), conditional logic, and side effects, which makes parsing slightly harder than a structured two- or three-sentence form would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no output schema, the description covers purpose, kinds, side effects, auth, and the deploy-specific composition. The remaining gaps are the unauthorized branch of the deploy path ('when the root is authorized' but no behavior stated for the unauthorized case) and no indication of the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds cross-parameter meaning beyond the schema: it ties kind=deploy to evidence.deploy_id as a required conditional, and maps root_id to the cycle root via the endpoint path. The per-parameter descriptions in the schema already carry the format details, but the description frames the kind/evidence interplay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Record'), resource ('chief-of-staff dispatcher action on a coordination cycle'), and outcome ('as a receipt'), then enumerates the seven valid kinds. It distinguishes itself from siblings by citing the POST endpoint and explicitly clarifying its relationship to coord_record_integration ('one call that does both records').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use — recording dispatcher actions as receipts, with the seven kinds enumerated — and explicitly flags the deploy case where it composes coord_record_integration. However, it does not explicitly state when not to use it or contrast it with the dispatch siblings (tascan_dispatch_instruction, tascan_dispatch_to_agent), 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.
tascan_dispatch_instructionAInspect
Step 3 of the Closed-Loop Autonomous Operations Protocol. Dispatches remediation to the worker via MULTI-CHANNEL delivery: (1) issue thread message, (2) in-app notification, (3) progress feed update, (4) SMS if phone on file, (5) optional remediation task list creation. Closes the loop from digital AI analysis to physical worker execution.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_agent | No | Name of the AI agent dispatching (default: TaScan AI) | |
| issue_id | Yes | Issue ID this instruction relates to | |
| send_sms | No | Send SMS to worker (default: true if phone on file) | |
| worker_id | No | Target worker ID (defaults to the worker who reported the issue) | |
| instruction | Yes | Clear, actionable instruction for the worker to execute | |
| remediation_tasks | No | Optional array of tasks to create as a remediation task list. Each: { title, description, response_type, requires_photo, is_safety_checkpoint, sort_order } | |
| recommendation_summary | No | One-line summary for the task list description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool's multi-channel effects (thread message, notification, feed update, SMS, task creation), which goes beyond the annotations that only indicate non-read-only and non-destructive. This gives the agent critical context about side effects such as SMS delivery and optional task creation, enhancing behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose and then detailing the specific channels. Each element earns its place; the channel list is necessary and concise. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter dispatch tool with no output schema, the description covers the main behavior and side effects. It lacks information about return values or error conditions, but these are not typically required in a tool description. The protocol context adds completeness, though it could explicitly mention what happens after dispatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have descriptions in the schema (100% coverage), so the baseline is met. The tool description adds context about remediation_tasks ('optional remediation task list creation') and send_sms ('SMS if phone on file'), but these are also covered in the schema descriptions. The description does not significantly clarify parameter formats or relationships beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool dispatches remediation to a worker via multi-channel delivery, with a specific verb and resource. It distinguishes from sibling tools like tascan_dispatch_to_agent by explicitly specifying 'to the worker' and listing concrete delivery channels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context as 'Step 3 of the Closed-Loop Autonomous Operations Protocol,' implying it is used after analysis and recommendation, but it does not explicitly state when to use it over alternatives like tascan_dispatch_to_agent or tascan_send_task_email. No exclusions or alternatives are mentioned, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_dispatch_to_agentAInspect
PREFERRED tool for sending work to an AI agent. Dispatches a task to the agent's inbox — picked up and executed automatically. No list ID needed. REQUIRES the agent:dispatch permission on this connection (CODE:/SHELL: tasks also require agent:dispatch:code) — reconnect and tick the agent checkbox(es) if refused. Routing is by TITLE PREFIX only: CODE: SHELL: PLAN: MCP: → local Claude Code on Mike's PC; RESEARCH: WRITE: REVIEW: → cloud; no prefix (DEFAULT) → local while the PC agent is alive, else cloud. The cloud agent refuses CODE/SHELL/PLAN/MCP. Use "agent" param to target a specific agent (default: claude-code-local). Use tascan_list_agents to discover available agents; track progress with tascan_get_task (its "agent" block).
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The full task text. START it with CODE: SHELL: PLAN: MCP: RESEARCH: WRITE: or REVIEW: for routing (prefix-only — nothing may precede it), or leave it unprefixed (DEFAULT). The whole text is stored in the task description; the first 140 chars become the title. | |
| agent | No | Agent ID or name to dispatch to (default: claude-code-local). Use tascan_list_agents to see options. An unknown agent is an error, never a silent fallback. | |
| priority | No | Priority level (default: normal). The urgent marker is placed AFTER the routing prefix so it never breaks routing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes substantially beyond the annotations: describes automatic pickup/execution, exact routing behavior, cloud agent refusal of CODE/SHELL/PLAN/MCP, default fallback when the local PC agent is dead, and the requirement for agent:dispatch permission. These are non-obvious behaviors an agent must know before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-structured: purpose first, then permissions, routing, fallback, agent targeting, and tracking. Every sentence carries load-bearing operational information; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, this description is remarkably complete: it covers invocation, permissions, routing rules, error behavior, default agent, and how to monitor the dispatched task via tascan_get_task. An agent has everything necessary to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds high-value semantics beyond the schema: the full routing-prefix system, the default agent value, permission nuances per task type, and the pointer to tascan_list_agents for valid agent IDs. This pushes it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: dispatches work to an AI agent's inbox for automatic execution. The 'PREFERRED tool for sending work to an AI agent' framing and routing details clearly set it apart from sibling tools like tascan_dispatch_instruction and tascan_send_task_email.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational context: when to target an agent, how routing prefixes select the destination, permission requirements, and how to discover agents or track progress. It does not explicitly state when NOT to use this tool versus alternatives like tascan_dispatch_instruction, so some exclusion guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_evidence_policyAIdempotentInspect
Read or author a task's evidence policy (protocol v0.2 V9b, GET|PUT /evidence/policy/:task_id — one route, two methods, so one tool). action=get evaluates the pinned policy against the evidence ledger so far: whether it is usable and satisfied, and its progress (read tier). action=set authors/updates a policy in your org's namespace when definition is given (definition.require is a non-empty array of requirement objects; definition.min_count, when set, must be an integer from 1 through definition.require.length) or, when definition is omitted, pins the task to an existing active policy_id (write tier).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | get = GET (evaluate, read tier). set = PUT (author/pin, write tier). | |
| task_id | Yes | Task ID (UUID) in your organization. | |
| version | No | action=set only: optional version for a new/updated policy definition (default 1). Ignored when only pinning an existing policy. | |
| policy_id | No | action=set only, required: lowercase letters/digits/underscore/dot, starting with a letter, up to 80 chars, e.g. loto_v1. | |
| definition | No | action=set only, optional: policy definition to create or update — require (array, required), min_count, window, any_of, allow_fallback. Omit to pin the task to the existing active policy_id instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral nuance: it is one route with two methods, action=set has two distinct modes (author vs. pin), and it adds concrete validation rules such as require being a non-empty array and min_count constrained to require.length. It also clarifies what action=get evaluates. This adds substantial context beyond the idempotent/destructive hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose before expanding into action-specific detail. It is longer than the average tool description, but the length is earned because the tool genuinely has two operations and nested parameter semantics. Some protocol route detail could arguably be trimmed, but it remains relevant to explaining why one tool covers two methods.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex five-parameter tool with a nested object and no output schema, the description covers most invocation concerns: action semantics, pinning vs authoring, validation constraints, and what get evaluates. It does not describe the response shape or error behavior, which would have made it fully complete given the absence of an output schema, but the core usage is well specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning beyond the schema by explaining the behavioral difference between providing and omitting definition, the pinning workflow, the version-ignored-when-pinning rule, and the validation constraints on definition fields. This goes well above 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read or author a task's evidence policy.' It then separates the two operations into action=get (evaluate) and action=set (author/pin), which distinguishes this combined read/write tool from the many sibling get/update tools. This is far from a tautology and gives an agent a precise mental model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when each action applies: use action=get to evaluate the pinned policy; use action=set to author/update or pin. It also gives conditional guidance for definition omission versus provision. It does not explicitly name sibling alternatives or exclusions, but the dual-action structure makes the intended usage contexts clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_findARead-onlyIdempotentInspect
Cross-entity search: find projects, task lists, tasks, workers, or condition assets by name in one call — with ids and parent context to disambiguate. Use this instead of walking projects→lists→tasks or guessing ids from display names.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional: restrict to one entity type | |
| query | Yes | Search text (min 2 chars, case-insensitive substring) |
TDQS
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 clear. The description adds that the tool returns 'ids and parent context to disambiguate,' which is useful but does not detail pagination, result limits, or exact output format. Given the annotations cover the core behavioral traits, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. The second sentence provides immediate usage guidance. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, entity types, and usage context. It hints at the return format ('ids and parent context') but without an output schema, a more explicit description of the result structure would improve completeness. Still, for a search tool with 2 parameters and 5 entity types, it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—both parameters have descriptions in the schema. The description adds 'by name' which aligns with the schema's 'case-insensitive substring' but does not provide additional meaning beyond what the schema already states. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('find') and resource ('projects, task lists, tasks, workers, or condition assets'), lists all entity types, and explicitly contrasts with the alternative of walking the hierarchy. This clearly distinguishes the tool from sibling list and get tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'instead of walking projects→lists→tasks or guessing ids from display names.' It implies the alternative (sequential browsing or ID guessing) but does not provide explicit when-not-to-use scenarios, such as when IDs are already known. Still, it offers clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_find_duplicate_workersARead-onlyIdempotentInspect
Find candidate same-person worker records with per-signal match detail (Patent 4 §6.25(b) signals: phone reuse, name similarity, GPS pattern correlation). Turns identity fragmentation from an accidental discovery into a monitorable metric, and feeds the merge workflow its candidate list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Or: search duplicates by display name | |
| threshold | No | Min confidence 0-1 (default 0.15) | |
| worker_id | No | Anchor worker to find duplicates OF (preferred — enables phone + GPS signals) | |
| include_orphans | No | Also consider org-less (orphan) worker records — off by default |
TDQS
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 clear. The description adds meaningful behavioral context beyond these annotations: it discloses that matches are candidate-level, that detail is per-signal, and that the output is a candidate list intended for the merge process. This goes beyond simply restating the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the core function front-loaded and the workflow significance in the second sentence. It is appropriately sized, though the parenthetical 'Patent 4 §6.25(b)' reference is cryptic and adds little agent-facing value; the text is still concise overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent tool with fully documented optional parameters, the description covers the essential context: what it finds, what signals it uses, and how the output relates to the merge workflow. It does not spell out the exact return shape, but the absence of an output schema and the 'per-signal match detail' phrasing provide sufficient orientation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema descriptions already explain each parameter well, including the preferred worker_id anchor, the threshold default, and the orphan flag behavior. The description does not add much parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find candidate same-person worker records', which is much more specific than a generic list or search. It also names the concrete signals (phone reuse, name similarity, GPS pattern correlation) and explicitly positions the tool as feeding the merge workflow, distinguishing it from merge_workers and list_workers without needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is appropriate: it surfaces duplicate candidates for identity resolution and feeds the merge workflow. It does not explicitly name alternatives or state when not to use it, but the workflow cue is strong enough for an agent to infer the intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_generate_qrAIdempotentInspect
Generate a QR code for a task list (event) that workers can scan to access tasks
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds the worker-scanning context but does not disclose output format or side effects beyond generating a QR code. It adds some value without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. The key information is front-loaded: action, resource, and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one param, no output schema), the description adequately covers purpose and usage. It does not explain the return value, but the lack of an output schema makes that omission less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter list_id, which the description echoes ('task list (event)'). The description does not add syntax or format details beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action 'Generate' and the resource 'QR code for a task list (event)', with the purpose 'workers can scan to access tasks'. This distinguishes it from sibling tools, as no other tool mentions QR codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when workers need to access tasks via a scannable QR code. It does not explicitly name alternatives or exclusions, but the context of physical scanning is clear enough relative to siblings like tascan_send_task_email.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_generate_reportAIdempotentInspect
Mint a shareable report and get its link. Types: completion (full proof-of-work for one list: tasks, responses, subtasks, photos, GPS + place names, timing, QR pair), service (client-facing version of a list with YOUR company branding and a Client Acknowledgment button — the ack files into the list thread), project (every list in a project rolled up), evidence (compliance Evidence Pack; admin sign-in required to view). Links are stable — the same list/project returns the same link. Optionally text the link to a phone through the TaScan SMS lane.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| list_id | No | Required for completion / service | |
| message | No | Service report: a note to the client shown under the header | |
| send_note | No | Short intro for the text, e.g. "Here is your report from Love Productions:" | |
| project_id | No | Required for project / evidence | |
| show_issues | No | Service report: include reported issues (default false) | |
| company_name | No | Service report branding (defaults to the org name) | |
| show_workers | No | Service report: show worker names (default true) | |
| send_to_phone | No | Text the link to this number (E.164 or 10-digit US) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey idempotency and non-destructiveness, and the description adds useful behavioral context beyond them: links are stable, evidence reports require admin sign-in to view, service acknowledgments file into the list thread, and SMS delivery is optional. Nothing here contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded with the core action and output. The colon-delimited type list is readable, and every clause contributes meaning, though it is a single long paragraph and could theoretically be tightened without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent the outcome ('get its link') and covers the main decision points: choosing a report type, required IDs, service customization, and optional SMS delivery. It does not exhaustively describe all 9 parameters, but the high schema coverage compensates, and the core calling decision is fully supported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so the schema already documents most parameters. The description adds value by explaining what each report type semantically contains, clarifying that list_id vs project_id depends on type, and describing the purpose of service report branding and acknowledgment behavior beyond raw parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Mint a shareable report and get its link.' It then enumerates four distinct report types with concrete contents, making the tool's purpose unmistakable and differentiating it from sibling get/list report tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when each report type is appropriate (completion, service, project, evidence) and states which ID each requires via the schema and prose. It does not explicitly name alternatives like tascan_get_report, but the 'Mint a shareable report' framing strongly implies generation rather than retrieval, and no exclusions are needed beyond the type prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_buildARead-onlyIdempotentInspect
Manifest of a stored build bundle by build_ref (protocol v0.2 build_artifacts): the exact files the executor produced for the cycle's artifact_paths, each with sha256, byte length and whether text content is stored (binary or over-cap files keep the sha only). build_ref = sha256 over the manifest, computed in the database once; the reviewer reviews THESE bytes, the human approves THIS ref, the integrate task records THIS ref. Read tier. Use tascan_get_build_file to read a file. Truncated at 12000 chars. Reading the manifest is discovery, not a read of any file.
| Name | Required | Description | Default |
|---|---|---|---|
| build_ref | Yes | sha256:<64 hex> (or the bare 64 hex) — from tascan_get_task (coord.build_ref / agent.runs[].build_ref) or tascan_get_cycle_report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by explaining the manifest is truncated at 12000 chars, computing build_ref (sha256 over the manifest), and that binary or over-cap files only store the sha. It also clarifies the discovery semantics, which goes beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that packs essential information: purpose, content, computation, truncation, and sibling distinction. Every sentence adds value, front-loading the semantic difference from file reads. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's single parameter, clear annotations (read-only, idempotent), and that the output schema is not provided (but the description describes what the manifest contains), this is complete. An agent can call it correctly, understand what it returns, and know to use tascan_get_build_file for file content. The truncation limit and read semantics are stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents build_ref's format (sha256:<64 hex>). The description adds context that build_ref is a SHA256 over the manifest and how to obtain it (from tascan_get_task or tascan_get_cycle_report), which is additional meaning beyond the schema. Slight deduction for not fully detailing the manifest's structure beyond what's listed, but it's adequate for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manifest of a stored build bundle by build_ref' and details what the manifest contains (files with sha256, byte length, text content status), which precisely identifies the resource and scope. It distinguishes itself from siblings by specifying it is metadata/discovery, not a file read, and explicitly names the sibling for reading a file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides usage context: 'Use tascan_get_build_file to read a file', and clarifies that 'Reading the manifest is discovery, not a read of any file'. It explains the protocol version and that build_ref is derived from tascan_get_task or tascan_get_cycle_report, giving clear when-to-use guidance and when-not-to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_build_diffADestructiveIdempotentInspect
Store an already-computed diff for one file of a build bundle against a base commit (protocol v0.2 item 6, POST /coord/builds/:build_ref/diff — the parser has no GET for this path; a deployed function ships no git object database, so tascan-agent/deployer.js computes the diff text with its own persistent worktree and this route only validates + stores it via coord_set_artifact_diff). build_sha256 must equal the artifact's own stored sha256 or the call is refused; storing a diff replaces that file's stored full content with the diff going forward. There is currently no REST route that reads a stored diff back (GET /builds/:build_ref and /builds/:build_ref/file do not surface it) — this tool only writes one. Requires agent:dispatch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Repo-relative path from the build manifest (tascan_get_build). | |
| text | Yes | The already-computed diff text (up to 262144 characters). This tool never computes a diff itself. | |
| base_ref | Yes | The commit-ish the diff was computed against (1-200 chars). | |
| build_ref | Yes | sha256:<64 hex> (or the bare 64 hex) of the build the diff is about. | |
| truncated | No | True if text is itself a truncated diff. | |
| base_sha256 | No | Optional 64-hex sha256 of the file at base_ref. | |
| build_sha256 | Yes | 64-hex sha256 of the file at build_ref/path — must match the stored artifact's own sha256. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds valuable detail: the call is refused if build_sha256 does not match the artifact's stored hash, storing replaces the file's full content going forward, and agent:dispatch permission is required. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core action. Every clause carries useful context, though the long parenthetical about protocol internals and the repeated 'only writes one' could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write-only tool with no output schema and 7 fully documented parameters, this description covers what the tool does, why it exists, its validation rule, its destructive side effect, the lack of any read-back path, and its required permission. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a precise description. The prose adds the high-level constraint that build_sha256 must equal the stored artifact hash and repeats that the tool never computes a diff, but it does not materially extend the per-parameter meaning already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Store an already-computed diff for one file of a build bundle against a base commit.' It also anticipates the misleading tool name by explicitly stating the route is write-only and that no GET path reads a stored diff back, distinguishing it from tascan_get_build/tascan_get_build_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: the parser has no GET for this path, the deployer precomputes the diff, and this route only validates and stores it. It explicitly says there is no REST route that reads the stored diff back and that this tool only writes one, providing a firm when-not. It does not name alternative tools, but the endpoint references imply them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_build_fileARead-onlyIdempotentInspect
Read one file from a stored build bundle by build_ref and path (protocol v0.2 build_artifacts) — the exact bytes the executor produced, not a working-tree read. Returns up to 12000 chars per call with offset/limit paging (next_offset when truncated), plus the file's sha256 and byte length. Binary or over-cap files return no content (the sha256 still binds them). Read tier; this is what the independent reviewer reads. The header lines (path, build, sha256, chars a-b of total) are the record a reviewer's read is bound to; read every chunk until the range covers the whole file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Repo-relative path exactly as listed by tascan_get_build. | |
| limit | No | Characters to return (1-12000, default 12000). | |
| offset | No | Character offset to start from (default 0). | |
| build_ref | Yes | sha256:<64 hex> (or the bare 64 hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnly/idempotent annotations: per-call character cap, offset/limit paging with next_offset, sha256 and byte-length return values, truncation behavior for binary/over-cap files, and the binding semantics of header lines. An agent knows exactly what will happen on repeated or partial reads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but purposeful: the first clause names the operation, the middle explains limits and output, and the final sentence gives operational guidance for paging and record-binding. No filler; every sentence adds information needed to call or interpret the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description covers the return payload, paging mechanics, sha256/byte-length metadata, binary/over-cap edge cases, and the reviewer-binding semantics. An agent has enough contextual detail to invoke the tool and handle partial or empty results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful semantic context by framing limit/offset as paging over characters, explaining that truncated reads return next_offset, and emphasizing that path must refer to the exact build-listed artifact. This goes slightly beyond the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Read one file'), a precise resource ('stored build bundle'), and the selection keys ('by build_ref and path'). It also differentiates itself from a working-tree read and from the related tool tascan_get_build, so an agent can tell exactly what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: this is the read tier for exact executor-produced build artifacts and is what the independent reviewer reads. It implicitly excludes working-tree reads and other list-style build tools, though it does not spell out a formal when-to-use vs. when-not-to-use against each alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_cycle_reportARead-onlyIdempotentInspect
The audit report of one coordination cycle by its root task id (protocol v0.2, get_cycle_report): every step task (build, review, checkpoint, integrate, question, parked) with its revision and state, every execution attempt with runner, outcome, build_ref and usage/cost, every completion (receipt id = completion id, receipt hash), every reviewer verdict, every human decision and answer, the full trail (messages), the ledger events and the hash-chain verdict per task, plus spend against the cap. A computed summary (stage, attempts, verdicts, decisions, receipts, spend, chains_ok) comes first; pass full=true for the complete JSON (large). Read tier. This is the ONLY per-cycle notification surface: cycle steps do not e-mail or text anyone except the one checkpoint / human-question SMS.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | true = the complete report JSON (tasks, runs, completions, messages, events, bundles, chains) after the summary, capped at 12000 chars. Default: summary only. | |
| root_id | Yes | The cycle root = the T1 build task id (returned by tascan_create_cycle; a non-root cycle task returns its root_id in the error). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/destructive annotations, the description discloses important behaviors: 'Read tier,' default summary-only behavior, the effect of full=true, the 12000-char cap on the complete JSON, and the fact that a computed summary is returned first. These details significantly help an agent anticipate response size and shape without an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause contributes: scope, contents, summary-first behavior, full mode, size cap, read tier, and notification uniqueness. The main purpose and identifier are front-loaded, and there is no filler or repetition within the description itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what the agent will receive, and it does so thoroughly: it lists all report sections, the computed summary fields, the full-JSON option, the size cap, and the root_id resolution path. An agent has enough context to select and invoke the tool correctly even without knowing the exact JSON keys.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents full and root_id well. The description reinforces the same semantics, including the root_id provenance and the full=true behavior, but does not add substantial new parameter-level meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-plus-resource framing: 'audit report of one coordination cycle by its root task id' and enumerates the exact contents (tasks, runs, completions, verdicts, decisions, ledger events, hash-chain verdicts, spend). It clearly differentiates this from general report/list tools by scoping it to a single cycle and calling it 'the ONLY per-cycle notification surface.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when a per-cycle audit report or notification surface is needed. It also provides concrete invocation guidance for root_id: 'returned by tascan_create_cycle; a non-root cycle task returns its root_id in the error.' It lacks an explicit named alternative or when-not-to-use statement, but the 'ONLY per-cycle notification surface' claim effectively rules out sibling notification tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_eventARead-onlyIdempotentInspect
Get details of a specific event (task list) including its tasks
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context that an 'event' is a 'task list' and that the response includes its tasks. This goes beyond the annotations to clarify the response scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence that is front-loaded with the action and resource, and it includes the key behavioral note about including tasks. There is zero redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only operation with one fully documented parameter, rich annotations, and no output schema, the description sufficiently indicates what the tool returns (details plus tasks). No additional context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter list_id is fully documented in the schema ('Task list (event) ID') with 100% coverage. The description only reiterates the 'event/task list' relationship without adding syntax, format, or parameter-specific details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), the resource ('specific event'), and adds the crucial parenthetical '(task list)' to clarify terminology. It also notes 'including its tasks', which distinguishes it from siblings like tascan_list_events (listing many events) and tascan_get_task (fetching a single task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'specific event' implies this is for fetching one event by ID, but there is no explicit guidance on when to use this versus tascan_list_events for enumeration or tascan_get_task for a task's details. Usage context is implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_projectARead-onlyIdempotentInspect
Get details of a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds no extra behavioral context beyond restating the read-only nature. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler words. It directly states the tool's purpose without redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and rich annotations, the description is adequate. It does not explicitly define what 'details' includes (e.g., whether it returns tasks within the project), but the low complexity and clear scope make this an acceptable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'project_id' parameter clearly described as 'Project ID'. The description does not add additional meaning beyond the schema, so it relies on the structured definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('project'), and clearly scopes to a single project via the project_id parameter. It distinguishes from sibling tools like tascan_list_projects (list all) and tascan_get_task (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the tool name and parameter: use when you need details for a specific project. However, there is no explicit guidance about when to prefer this over tascan_list_projects or any alternatives, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_receiptARead-onlyIdempotentInspect
Fetch the signed Action Receipt (Ed25519 JWS) for one completed task by completion_id (tascan_get_task -> completions[].id). Returns a readable summary (what, who, verification, evidence hashes, outcome, ledger chain) plus receipt_id/serial/kid, the compact JWS and the public verify URL. Verify offline against the JWKS or online by POSTing a JSON body whose jws field holds the compact receipt. Read outcome and verification separately: outcome completed = the executor returned and a result was recorded; verification.result = the verdict of a named policy; all-null verification with reason no_policy_run = no policy ran. Never treat outcome=completed as success without a policy verdict you trust (protocol 8.3 C11). Verifier: 6.8. profile=public returns the separately signed public export profile (protocol 6.10): it withholds the raw org, list, project, worker, run and trace ids (each a 16-hex id_hash) and storage locators, and binds to the full receipt - the form for anyone outside the org. Read tier.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | full (default) = the org view with the unsigned private block; public = the separately signed public export profile: no raw org, list, project, worker, run or trace id (each is a 16-hex id_hash), no storage locators, plus a binding to the full receipt it was derived from - the form to hand to anyone outside the org | |
| completion_id | Yes | task_completions.id (UUID) - from tascan_get_task -> completions[].id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description aligns with these (read operation). It adds significant behavioral context: explains the return contents (summary, JWS, verify URL), verification methods (offline/online), the distinction between outcome and verification.result, and the security caveat about not treating outcome=completed as success without a policy verdict. This goes beyond annotations to disclose how the tool behaves and what the results mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but not overly long. It front-loads the primary purpose and source of the required parameter, then covers verification, outcome interpretation, and the profile variant. While comprehensive, it is somewhat dense and could be slightly more scannable, but every sentence provides necessary context. Slight reduction could be made, but it remains focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with rich annotations and fully described parameters, the description covers the essential aspects: what is returned, how to verify, the meaning of key fields, and the security caveat. It even references protocol sections for deeper context. Given no output schema, the description provides sufficient guidance on the return structure and interpretation. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters with 100% coverage. The description adds value by explaining the completion_id source (from tascan_get_task -> completions[].id) and elaborating on the profile enum's full vs. public distinction, clarifying the public profile's privacy implications. This enriches beyond the schema's own descriptions, though the schema already carries most semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a signed Action Receipt for a completed task by completion_id, with a specific identifier source (tascan_get_task -> completions[].id). It distinguishes its purpose from siblings by focusing on receipt retrieval for completed tasks, not creation, listing, or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use it (for a completed task's receipt) and how to obtain the completion_id, but does not explicitly contrast it with alternative tools for similar purposes (e.g., get_task). It provides context on the profile parameter and the protocol sections referenced, but no direct 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_reportARead-onlyIdempotentInspect
Get completion report for a task list (event) including task status, completions, workers, and photos. Set include_responses to also return the actual submitted response data (numbers, text, choices) for each completed task plus a per-task photos list with fetchable signed URLs (short-lived, ~1h) for the photo evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID | |
| include_responses | No | Include the actual submitted response values for each completed task (default false — keeps the payload light) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuinely useful context the annotations lack: the signed URLs are short-lived (~1h), and include_responses inflates the payload ('default false — keeps the payload light'). This helps an agent reason about freshness and response size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core get action, then the optional flag's effect. Dense but every clause (photo evidence, signed URLs, ~1h lifetime, payload weight) carries information; minor length cost from the parenthetical depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no nested objects, the description carries the return-value burden and does it adequately by listing report contents and the extra fields unlocked by include_responses. It could be more complete on pagination or report scope (all workers vs filtered), but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes beyond the schema by spelling out what include_responses actually returns (submitted numbers, text, choices plus a per-task photo list with fetchable signed URLs) rather than merely restating the field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Get completion report for a task list (event)' and enumerates report contents (task status, completions, workers, photos). It does not explicitly differentiate from close siblings like tascan_generate_report or tascan_list_reports, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource mentioned; there is no when-to-use/when-not or explicit alternative named against tascan_generate_report, tascan_list_reports, or tascan_get_event. The one piece of real guidance is the conditional 'Set include_responses to also return...', which is a parameter-level rather than tool-selection cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_scan_historyARead-onlyIdempotentInspect
Scan accountability data. Two modes: (1) tag_id — scans of a registered NFC tag; (2) task_list_id or project_id — every QR/link page-open stamp: when the code was scanned, GPS + IP + channel (qr/nfc/sms/email/link), who the scanner turned out to be, and the scan→start delta (how long between scanning and actually identifying + starting work — the sign-in-and-vanish metric).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 200) | |
| since | No | ISO timestamp — only scans after this | |
| source | No | Filter page scans by channel: qr | nfc | sms | email | link | unknown | |
| tag_id | No | NFC tag registry ID (from tascan_list_tags) — tag mode | |
| project_id | No | Project ID — page-scan mode, all lists in the project | |
| task_list_id | No | Task list ID — page-scan mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by enumerating returned fields (GPS + IP + channel, scanner identity, scan→start delta) and explaining the 'sign-in-and-vanish' metric. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded with the core purpose, then structured into two clear modes. However, it reads as a single long run-on sentence with many nested parentheticals, which slightly hurts scannability. No wasted words, but the structure could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description correctly carries the burden of explaining return data, and it does so well: timestamp, GPS+IP, channel, scanner identity, and the delta metric. It does not explicitly state whether combining tag_id with task_list_id/project_id is invalid, and it omits ordering/pagination behavior, but the schema covers limit and filters, making this adequate for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already self-documenting. The description adds some meaning by linking tag_id to mode 1 and task_list_id/project_id to mode 2, but this largely mirrors the schema's own parameter descriptions. It does not materially deepen parameter understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (scan accountability data) and immediately breaks it into two concrete modes: NFC tag scans and QR/link page-open stamps. It distinguishes itself from sibling tools by detailing the exact data returned (GPS, IP, channel, scanner identity, scan→start delta), so an agent can tell it apart from history/listing variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two-mode structure gives clear selection guidance: pass tag_id for registered NFC tag scans, or task_list_id/project_id for page-scan data. It does not explicitly name alternatives or state when not to use this tool, but the mode differentiation is strong enough for an agent to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_sms_statusARead-onlyIdempotentInspect
Check delivery status of a previously sent TaScan SMS by its Twilio SID (returned by tascan_send_sms). Shows queued/sent/delivered/undelivered/failed plus carrier error codes.
| Name | Required | Description | Default |
|---|---|---|---|
| twilio_sid | Yes | Twilio message SID (SM...) from tascan_send_sms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description's job is to add context beyond them. It does: it discloses the exact status values the agent should expect (queued/sent/delivered/undelivered/failed) and the presence of carrier error codes, which helps an agent interpret results. This is non-redundant, useful behavioral information consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The first sentence front-loads the action and key selection criterion; the second enumerates the return states. Every clause earns its place, including the parenthetical that ties the SID to its source tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter read-only lookup with 100% schema coverage and full annotations. The description covers what the tool does, how to identify the target message, what outcomes to expect, and that carrier error codes accompany failures. Nothing an agent needs to invoke it correctly is missing; an output schema is not required to explain a flat status list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the schema already documents twilio_sid as 'Twilio message SID (SM...) from tascan_send_sms'. The description reinforces that same provenance but adds no new semantic 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.
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 ('Check delivery status of a previously sent TaScan SMS'), then narrows the scope by identifying the exact lookup key (Twilio SID) and its source (tascan_send_sms). This makes it immediately distinguishable from the only plausible sibling, tascan_send_sms, without any ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear usage context: this tool is for checking status after sending, and the SID it requires comes specifically from tascan_send_sms. It names the producing sibling, which effectively routes the agent to use this tool only after a send. It stops short of explicitly stating when not to use it or naming competing alternatives, but the pairing with tascan_send_sms makes the intended workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_taskARead-onlyIdempotentInspect
Get details of a specific task including completions and subtasks. Each completion carries photo_url (raw storage path, stable) and photo_signed_url (short-lived fetchable URL, ~1h; null when no photo) so you can actually view the photo evidence. Tasks dispatched to an AI agent also carry an "agent" block (state claimed|running|completed|failed|expired|released, attempts, current run with runner/trace_id/error) — the only place agent failures are reported. A completion with status "completed" means the executor returned and its result was recorded (a model refusal, a wrong answer or an administrative note all "complete"); it does NOT mean the requested result was accepted. Acceptance is the completion evidence_check / the receipt verification.result under a named policy, and in v0.1 no policy exists for agent tasks (exact-output and rubric policies are v0.2) — check the recorded response text yourself before treating an agent completion as success (protocol §2.6, §3.2, §8.3 C11).
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description importantly clarifies that a completion with status 'completed' does NOT mean acceptance, and that agent policy nuances exist. It discloses the photo URL semantics (stable vs ~1h signed URL) and where failures are reported. This is substantial behavioral context that an agent needs to interpret results correctly, and it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the main purpose, and nearly every sentence carries critical caveats or semantics. However, it is a very long single paragraph with nested nuances that could have been structured with bullets or shorter sentences. This is still strong, but not maximally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with no output schema, the description covers the essential interpretational pitfalls: the distinction between recorded completion and accepted result, the agent block's failure reporting role, and photo URL lifetimes. It also references specific protocol sections and policy version caveats. For a get-details tool with complex domain semantics, this is complete enough for an agent to act correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, task_id, already has 100% schema description coverage via 'Task ID.' The tool description does not add meaningful new detail about the parameter beyond that. Given the high schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Get details of a specific task including completions and subtasks.' It distinguishes itself from sibling tools like tascan_list_tasks by emphasizing the specific-task scope and its unique contents. The added detail that the agent block is 'the only place agent failures are reported' further reinforces what this tool uniquely provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when you need detailed task details, photo evidence, or agent failure information. It also notes this is the only place agent failures are reported, which is strong usage guidance. It lacks an explicit 'use tascan_list_tasks instead' or when-not-to-use statement, so it doesn't reach the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_task_trailARead-onlyIdempotentInspect
Read a task's trail messages (protocol v0.2 trail_messages, GET /tasks/:id/messages): question, answer, handoff and note/discussion entries, last 100, newest last (reading order). Optionally filter to a comma-separated set of kinds. Read tier. Post with tascan_post_message.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | Optional comma-separated kind filter, e.g. question,answer,handoff,note (discussion is stored as note; both names are accepted). | |
| task_id | Yes | Task ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already mark the tool as read-only, idempotent, and non-destructive, the description adds meaningful behavioral details: it returns at most 100 entries, newest last, in reading order, and explains protocol/endpoint context. It also clarifies the kind filtering behavior and the note/discussion alias. This goes well beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense: it covers the action, resource, content type, limit, ordering, filtering, read semantics, and the relevant sibling in two sentences. It is front-loaded with the core purpose and every clause contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with rich annotations and fully documented parameters, the description is complete: it identifies required task_id, optional kinds, response contents, ordering, limit, and read-tier safety. It even names the sibling for writes. With no output schema required, the agent has enough context to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains both task_id and kinds, including the comma-separated filter and the note/discussion alias. The description reinforces these meanings but does not add significant new parameter-level information beyond what the schema 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read a task's trail messages.' It then specifies the message kinds, ordering, and limit, and explicitly contrasts itself with tascan_post_message via the 'Read tier' note. This makes the tool's purpose unmistakable and distinct from both posting and other task-read tools like tascan_get_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool is for reading (when to use it) and explicitly routes write operations to tascan_post_message ('Post with tascan_post_message'). It also explains when the optional kinds filter is relevant. This gives the agent explicit context for choosing this tool over its direct sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_workerARead-onlyIdempotentInspect
Ungated, plain read of one worker row: name, contact, org, points, streaks, timestamps. (tascan_get_worker_passport is the rich stats view; this is the boring lookup.)
| Name | Required | Description | Default |
|---|---|---|---|
| worker_id | Yes | Worker ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'Ungated' meaning no special access controls, and 'plain read' clarifying it returns basic fields rather than computed analytics. This goes beyond annotations by specifying the ungated nature and the limited scope of data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys purpose, scope, and sibling differentiation with zero wasted words. It is front-loaded with the most critical information: 'Ungated, plain read of one worker row'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one required parameter and no output schema, the description is nearly complete. It tells the agent what the tool does, what fields it returns, and how it differs from a rich stats sibling. A small gap is that it doesn't specify what happens if the worker_id doesn't exist (e.g., error or null), but this is minor for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one required parameter worker_id with a description). The description does not add parameter-level detail, but with only one parameter and full coverage, the baseline is 3. It earns a 4 by naming the specific fields returned (name, contact, org, points, streaks, timestamps), which helps the agent understand the output shape without an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool reads a single worker row and enumerates the fields returned (name, contact, org, points, streaks, timestamps). It also contrasts itself with tascan_get_worker_passport, which provides the 'rich stats view,' making the purpose distinct from a sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly calls out that this tool is 'Ungated, plain read' and contrasts it with tascan_get_worker_passport ('the rich stats view; this is the boring lookup'), giving the agent clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_get_worker_passportARead-onlyIdempotentInspect
Get a worker's verified work passport — task counts, lists worked, photos submitted, GPS-verified hours, points, streaks, and earned merit badges, all computed from real completion data (not self-reported). Includes the shareable profile URL.
| Name | Required | Description | Default |
|---|---|---|---|
| worker_id | Yes | Worker ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context: data is 'computed from real completion data (not self-reported)', which aids trust and understanding of data provenance. This goes beyond what annotations provide, justifying a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the primary purpose and listing key output elements without any redundant or filler content. Every sentence adds value, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description thoroughly explains what the tool returns: task counts, lists worked, photos, GPS hours, points, streaks, badges, and a shareable profile URL. For a simple single-parameter retrieval tool, this covers all essential aspects an agent needs to understand the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'worker_id' (described as 'Worker ID'). The description does not add any further meaning or format details for this parameter, meeting the baseline for high coverage but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and the resource 'worker's verified work passport', listing specific contents such as task counts, photos, GPS hours, and badges. This distinguishes it from sibling get tools for events, projects, etc., and uniquely identifies what this tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a comprehensive worker passport but does not explicitly state when to use this tool versus alternatives like getting raw task or event data. No 'when not to use' or direct comparisons to siblings are provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_invite_workerAInspect
Invite a marketplace worker to a task list — the consented intro. TaScan texts the worker from its own number (" wants you for . Reply YES to share your contact and get the list, or NO to pass."). On YES the worker appears in your org with their name + phone, receives the list link, and you get a text + a thread message. On NO or silence (7 days) you never learn who they were. Use the worker_id from tascan_search_marketplace.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list you want them on | |
| message | No | Optional short intro prepended to the text (max 240 chars) | |
| worker_id | Yes | worker_id from a marketplace card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the full consent flow: TaScan texts from its own number, the exact SMS wording, the YES/NO/silence outcomes, the 7-day expiry, and the privacy guarantee that declined workers remain unknown. This goes well beyond the sparse annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the rest is a tight sequence of consent mechanics, outcomes, and source guidance. The quoted SMS text is illustrative without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with no output schema, the description covers the workflow, timing, privacy boundary, and expected aftermath for both the worker and the inviter. An agent has enough to call the tool correctly and understand its consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by tying worker_id specifically to tascan_search_marketplace and revealing how the optional message is prepended to the consent text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Invite a marketplace worker to a task list.' The phrase 'the consented intro' distinguishes this from direct worker creation or plain SMS tools, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use 'the worker_id from tascan_search_marketplace,' which provides clear sourcing guidance. It does not explicitly state when not to use it or point to alternatives for existing org workers, but the context strongly implies it is specifically for marketplace-worker invitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_agentsARead-onlyIdempotentInspect
List all registered AI agents with their capabilities, inbox IDs, and status. Like reading input labels on a video matrix — discover which agents are available and what they can do before dispatching work.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which tells the agent this is a safe read operation. The description adds that it lists 'all' agents and includes specific fields (capabilities, inbox IDs, status), but does not disclose additional behavioral traits such as pagination, ordering, or authentication requirements. With annotations covering the safety profile, the description adds some value but not extensive contextual detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences. The first sentence states the action and output; the second provides a memorable metaphor and usage context. Every clause earns its place; there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description sufficiently covers what the tool returns (capabilities, inbox IDs, status) and its intended use (discovering agents before dispatching). With annotations covering safety and idempotency, the combined metadata is complete enough for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is empty. The description reinforces the lack of filters by saying 'all registered agents,' which aligns with the schema. Since 0 parameters earns a baseline of 4 and there is nothing else to document, this score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource: 'List all registered AI agents' and specifies the output fields ('capabilities, inbox IDs, and status'), distinguishing it from sibling list tools like tascan_list_tasks or tascan_list_workers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool: 'before dispatching work' (supported by the second sentence). It does not explicitly exclude alternatives or name alternate tools, so it stops short of a 5, but the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_assetsARead-onlyIdempotentInspect
List registered condition-ledger assets with their latest condition scores. Use to recover an asset_id for tascan_assess_condition or tascan_condition_history.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Filter by project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context by noting it returns 'latest condition scores' and implies the presence of asset_id fields, which helps the agent understand the return payload. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and purpose, followed by concrete usage guidance. Every word contributes value, with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description is thorough: it explains what is listed (registered condition-ledger assets with scores), the use case (recovering asset_id), and the optional filter is documented in the schema. It provides sufficient context for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter (project_id), with a clear description 'Filter by project'. The tool description does not mention parameters, but since the schema fully covers semantics, it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List registered condition-ledger assets with their latest condition scores.' It uses a specific verb ('List') and resource ('condition-ledger assets'), and distinguishes from sibling list tools by mentioning the specific domain and the inclusion of latest condition scores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage context: 'Use to recover an asset_id for tascan_assess_condition or tascan_condition_history.' This tells the agent exactly when to use this tool, effectively distinguishing it from other list tools and guiding tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_cyclesARead-onlyIdempotentInspect
List coordination-cycle roots in the organization (protocol v0.2, GET /coord/cycles): root id, title, status, task_type, project, build_ref, deploy_id and the T2 review id, newest first. Filter by project_id and/or status. Read tier — a reviewer's read-only key can call this too. Follow up with tascan_get_cycle_report root_id=... for the full audit trail of any row.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (default 50, max 200). | |
| status | No | Optional cycle status to filter on (e.g. active, parked, authorized, integrated) — lowercase letters and underscores only, 1-20 chars. | |
| project_id | No | Optional project UUID to filter to one project's cycles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description's addition of 'Read tier' reinforces safety without redundancy. It adds useful behavioral detail beyond annotations: the specific return fields, the ordering 'newest first', and the protocol/endpoint (v0.2, GET /coord/cycles). No side effects are implied, consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core purpose and lists fields, filters, and follow-up. While packed, every clause earns its place—endpoint, fields, ordering, filters, permission note, and next step—so it is efficient rather than verbose. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with three optional parameters and no output schema, the description fully equips an agent: it lists all returned fields, specifies ordering, mentions the permission model, and points to a sibling tool for deeper detail. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all three parameters (limit, status, project_id), so the schema already explains them. The description only repeats the filter capability ('Filter by project_id and/or status') without adding new meaning or syntax details. Per the rubric, baseline 3 is appropriate when schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (coordination-cycle roots), and the scope (in the organization). It enumerates the exact fields returned (root id, title, status, etc.) and ordering (newest first), and distinguishes itself from siblings like tascan_create_cycle and tascan_get_cycle_report by its listing nature and follow-up reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states filtering options ('Filter by project_id and/or status') and provides a clear alternative: 'Follow up with tascan_get_cycle_report root_id=... for the full audit trail.' It also clarifies the permission context ('a reviewer's read-only key can call this too'), so an agent knows when this tool is appropriate and when to use a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_eventsARead-onlyIdempotentInspect
List all events (task lists) within a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context that events are 'task lists' and that they are scoped to a project, but does not disclose pagination, ordering, or return-format behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the verb and resource. Every word contributes meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one required parameter and strong safety annotations, the description adequately conveys purpose and scope. It does not specify return fields, but no output schema exists and the tool's behavior is sufficiently implied for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single parameter project_id with 100% coverage. The description adds no additional parameter semantics beyond the implicit project scoping, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('events (task lists)') and scope ('within a project'), making the tool's purpose immediately understandable. It also distinguishes from the singular tascan_get_event and other list tools by explicitly stating it lists all events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: use this tool to list all events in a project. However, there is no explicit guidance on when to prefer this over alternatives like tascan_get_event or tascan_list_tasks, and no when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_invitesARead-onlyIdempotentInspect
List marketplace invites you have sent and their status (pending / accepted / declined / expired / failed). Accepted invites include the worker's name and phone — that is the consent boundary; pending and declined never do.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral detail beyond that: accepted invites include the worker's name and phone, forming a consent boundary, while pending and declined invites never expose that data. This is important context about data sensitivity and response contents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core verb and resource are front-loaded, followed by status enumeration and the consent-boundary caveat. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one optional parameter), rich safety annotations, and no output schema, the description is complete enough for an agent to use the tool correctly. It covers the resource, the filtering concept, the status values, and the key behavioral caveat about PII. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It repeats the enum values (pending / accepted / declined / expired / failed), which helps, but it does not explicitly explain that the optional 'status' parameter filters results or what omitting it returns. The meaning is partially conveyed but not fully specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), a precise resource ('marketplace invites you have sent'), and enumerates the status categories. This clearly distinguishes it from siblings like tascan_invite_worker (sending) and tascan_search_marketplace (searching). An agent can immediately understand what the tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever you need to see the status of invites you have sent. However, it does not explicitly name alternatives or state when not to use it, such as 'use tascan_invite_worker to send invites instead.' The context is clear but the exclusion guidance 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.
tascan_list_invoicesARead-onlyIdempotentInspect
List invoices for the org (newest first) with status, client, total, due date and share link. Filter by status (draft/sent/paid/overdue/cancelled) or project.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| project_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context beyond that: it specifies the sort order ('newest first') and enumerates the returned invoice fields, which helps an agent set expectations for the output. It does not mention pagination or result limits, but those are minor for this kind of read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that leads with the core action and resource, then provides output fields and filter options. Every part is useful and there is no redundancy with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description covers the essential details: what is returned, the ordering, and the available filters. There is no output schema, so the explicit field list is valuable, though pagination and result-size behavior are not mentioned. This is a minor gap given the low complexity of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the burden of explaining parameters. It adds meaning by stating that invoices can be filtered by status or project and by repeating the status enum values, but it does not explain the project_id format, required fields, or how filters interact. Overall it partially compensates for the schema gap but leaves room for more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List'), the resource ('invoices'), the scope ('for the org'), and the ordering ('newest first'). It also lists the returned fields and available filters, making it easy to distinguish this tool from create/update invoice tools and other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the tool name and 'List invoices for the org,' and the filter options clarify what the tool accepts. However, it does not explicitly state when to prefer this over related list tools such as tascan_list_payments or tascan_list_projects, nor does it give any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_issuesARead-onlyIdempotentInspect
List all issues for a task list (event). Returns open, acknowledged, and resolved issues with severity, type, and category. Use this to discover issues that need AI analysis via tascan_analyze_issue.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds behavioral context beyond this by stating the scope ('all issues'), the statuses included (open, acknowledged, resolved), and the fields returned (severity, type, category). This is meaningful, though it does not cover pagination or authorization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and resource, followed by a useful downstream-use note. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with rich annotations, the description fully covers what the tool does, what it returns, and why it is used (to feed into tascan_analyze_issue). It is well-suited to guide an AI agent in selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with list_id described as 'Task list (event) ID'. The description repeats this term but does not add further parameter-level details. Therefore, the schema carries the parameter semantics, and the description adds no extra value beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('List all issues for a task list (event)') and clearly distinguishes from siblings like tascan_list_tasks (tasks vs issues) and tascan_list_events (events only). It further specifies the returned data (open, acknowledged, resolved issues with severity, type, category), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'Use this to discover issues that need AI analysis via tascan_analyze_issue.' This implicitly guides the AI to use this tool before analysis. It lacks explicit exclusions or alternatives, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_paymentsARead-onlyIdempotentInspect
List gig payments and their lifecycle status: awaiting_completion (pledged, work not verified yet), ready_to_pay (verified — pay link sent to payer), paid, canceled. Filter by task list or status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| task_list_id | No | Filter by task list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by explaining the lifecycle statuses (e.g., 'awaiting_completion' means pledged, work not verified), giving the agent behavioral context beyond the safe read operation. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently states the purpose, explains lifecycle statuses, and notes filtering options. Every word serves a purpose, with no redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with 2 optional parameters and no output schema, the description adequately covers the purpose, status meanings, and filtering. It could mention potential limitations like pagination or result size, but overall it provides sufficient context for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('status' and 'task_list_id') already clearly documented in the schema. The description merely restates that filtering is by task list or status, adding no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists gig payments and explains their lifecycle statuses with specific meanings. It uses a specific verb ('List') and resource ('gig payments'), and distinguishes itself from sibling list tools (e.g., list_tasks, list_workers) by specifying 'payments' and detailing statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing payments but provides no explicit guidance on when to use this tool vs alternatives like tascan_list_tasks or tascan_request_payment. There are no exclusions, conditions, or comparative context given, leaving the agent to infer from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_projectsARead-onlyIdempotentInspect
List all TaScan projects in the organization
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds organizational scope ('in the organization') but does not disclose behaviors like pagination, ordering, or return format. This adds some value beyond annotations but not rich detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundancy. It states the verb, resource, and scope efficiently, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with strong annotations (read-only, idempotent, non-destructive), the description is largely complete. It clarifies scope ('all ... in the organization') and implies the return of a list of projects. Without an output schema, it could specify return value structure, but the low complexity makes this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing about parameters that needs explanation. The baseline for 0 params is 4, and the description makes this explicit by stating it lists all projects without filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and names the exact resource 'TaScan projects' with an explicit scope ('in the organization'). This clearly distinguishes it from sibling tools like tascan_get_project (single project) and tascan_create_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need all TaScan projects in the organization. However, it does not explicitly state when not to use it or mention alternatives such as tascan_get_project for retrieving a single project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_reportsARead-onlyIdempotentInspect
List existing report links for a list or project (completion / service / project / evidence), newest first, with client acknowledgment status for service reports.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | No | ||
| project_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral details beyond annotations: results are 'newest first' and include 'client acknowledgment status for service reports'. It could additionally state what happens when neither parameter is provided, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the action and resource, then adds scope, ordering, and return-content details. Every phrase earns its place and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately conveys what the return contains: report links, ordering, and acknowledgment status. It is reasonably complete for a read-only listing tool, though a note about parameter requirements or behavior when both IDs are absent would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only bare string property names with no descriptions, so the description must compensate. It does so by explaining that the tool operates 'for a list or project', mapping directly to list_id and project_id. While it does not discuss the no-required-parameters case or mutual exclusivity, the two parameters are simple and the description gives adequate meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('existing report links'), and precisely scopes the operation to a list or project with report categories. It clearly distinguishes itself from siblings like tascan_get_report and tascan_generate_report, which would retrieve or create reports rather than list existing links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance: use this when you need report links for a list or project, and it even enumerates report types. It does not explicitly name alternatives or state when not to use it, but its context is strong enough for an agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_scheduled_smsARead-onlyIdempotentInspect
List your org's scheduled texts (default: pending + sending, soonest first; status=sent|failed|cancelled to see history). Each row shows send_at, status, attempts, the Twilio sid once sent, and the last error for a failed row.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status (default pending + sending) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior. The description adds valuable behavioral context by revealing default status filtering, chronological ordering, and the exact row fields (send_at, status, attempts, Twilio sid, last error). No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The most important operational detail (default statuses and ordering) is front-loaded, and the output fields are listed compactly in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter and no output schema, this description is complete: it covers the default behavior, how to access history, ordering, and the relevant fields in each row. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the status parameter with 100% coverage, but the description adds meaning beyond it by explaining that status=sent|failed|cancelled reveals history and by clarifying the default behavior of pending + sending. This helps an agent choose the right parameter value without needing to infer semantics from the enum alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List your org's scheduled texts') and clearly differentiates this from siblings like tascan_schedule_sms, tascan_send_sms, tascan_get_sms_status, and tascan_cancel_scheduled_sms. It also conveys the default scope and the kind of data returned, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the default view versus when to pass status=sent|failed|cancelled to see history. It does not explicitly name alternative tools or state when not to use this tool, but the guidance is sufficient for a simple read-only list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_subtasksARead-onlyIdempotentInspect
List the subtasks of a task, including completion state, stored response values, and completion timestamps (per-set timing).
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Parent task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish this as read-only, idempotent, and non-destructive. The description adds meaningful context beyond those annotations by disclosing the kind of data returned: completion state, stored response values, and per-set completion timestamps. There is no contradiction between the description and the readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence that front-loads the primary action and resource, then appends relevant output details. Every part of the sentence adds information, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter read-only tool with rich annotations, the description covers the main purpose and key returned fields. The phrase 'per-set timing' and 'stored response values' are somewhat ambiguous, and there is no output schema to clarify them, but overall the description is sufficient for an agent to correctly invoke the tool and interpret the result at a basic level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, task_id, and the schema already describes it as 'Parent task ID' with 100% coverage. The description does not add additional parameter details beyond what the schema provides, but it does not need to because the schema fully documents the parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List the subtasks of a task.' It also enumerates what is included (completion state, stored response values, completion timestamps), which clearly distinguishes it from similar tools like tascan_list_tasks or tascan_get_task. An agent can immediately tell what this tool does without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever you need the subtasks of a given task. However, it does not explicitly compare with alternatives or state when not to use it, such as when listing top-level tasks or querying response history instead. The usage guidance is adequate through implication but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_tagsARead-onlyIdempotentInspect
List all registered NFC tags in the organization with their linked projects/task lists and scan counts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by specifying the content of the output (linked projects/task lists, scan counts). This extra context helps an agent understand what data to expect beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently communicates the tool's purpose and the key additional information provided. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description sufficiently covers what the tool does and what the response contains (list of tags with linked project/task list info and scan counts). There are no gaps for this simple read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema coverage is 100% (vacuous). Per guidelines, baseline for 0 parameters is 4. The description adds no parameter semantics because none are needed, and that absence is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all registered NFC tags, specifying the included details (linked projects/task lists and scan counts). This distinguishes it from sibling tools like tascan_register_tag and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. While the name and purpose are clear, there is no mention of suitable contexts or exclusions, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_tasksARead-onlyIdempotentInspect
List all tasks in an event (task list)
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the event/task list scoping, but doesn't disclose any further behavioral details such as output shape or pagination. With annotations present, the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and scope with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one well-documented parameter and strong annotations, the description is largely complete. It clearly identifies the target resource and scope, though it might ideally mention that it returns a list of task records. No output schema exists, so the description carries that burden, but the intent is unambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents list_id as 'Task list (event) ID' with 100% coverage. The tool description merely echoes this relationship ('in an event (task list)') and adds no new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all tasks in an event (task list)' uses a specific verb (List) and resource (tasks in an event/task list), clearly distinguishing it from sibling tools like list_events or get_task. The parenthetical clarifies the scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (when you need all tasks within a specific event/task list), but it doesn't explicitly state alternatives or situations where another tool should be used. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_templatesARead-onlyIdempotentInspect
List available task templates (built-in and saved)
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category (e.g. "live-events", "hospitality", "logistics") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds little beyond confirming it lists templates; it does not disclose additional behavioral traits like pagination, ordering, or result format, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded with the action, and contains no redundant information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and only one optional parameter, the description provides sufficient context. It clarifies that both built-in and saved templates are included, which covers the key aspect of what the user receives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'category' is fully described in the schema with a description and example values (100% schema coverage). The tool description adds no additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'task templates', specifying scope as 'built-in and saved'. This distinguishes it from sibling tools like tascan_list_tasks or tascan_apply_template, which serve different resources or actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving templates but does not explicitly state when to use this tool over alternatives or provide exclusions. There is no mention of alternatives such as tascan_apply_template, leaving usage guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_verificationsARead-onlyIdempotentInspect
Read a task completion's verification verdicts and job queue (Verification Layer V2, GET /completions/:completion_id/verifications): completion_verifications rows (state, method, verifier, policy, confidence, finding) plus verification_jobs rows (state, attempts, last_error, result). Read tier.
| Name | Required | Description | Default |
|---|---|---|---|
| completion_id | Yes | task_completions.id (UUID) — from tascan_get_task -> completions[].id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, lowering the burden on the description. The description adds useful context by naming the API endpoint and detailing the rows returned (completion_verifications and verification_jobs) with their key fields, though it does not mention pagination or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the action and resource, includes the endpoint, and lists the returned fields without repetition or fluff. The trailing "Read tier" is slightly redundant with the annotations but does not meaningfully detract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and read-only annotations, the description is nearly complete: it explains what the tool returns and names the endpoint. Minor omissions such as pagination behavior or possible empty-result semantics are acceptable at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: completion_id is already described as task_completions.id (UUID) sourced from tascan_get_task -> completions[].id. The description adds no parameter-specific detail beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Read a task completion's verification verdicts and job queue." It also names the exact endpoint (GET /completions/:completion_id/verifications) and enumerates the returned rows and fields, making it easy to distinguish from write-oriented siblings like tascan_request_verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly marks the tool as "Read tier" and states what data it returns, so an agent can infer when to use it. However, it does not explicitly contrast it with alternative verification-related tools (e.g., tascan_request_verification) or state when not to use it, leaving the choice somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_workersARead-onlyIdempotentInspect
List workers (taskees) in the organization. Supports filtering by name/email/phone substring, contact-info presence, and last-activity date. Each row includes completion_count (total task completions).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Substring match on name, email, or phone | |
| has_email | No | true/false — same for email | |
| has_phone | No | true = only workers with a phone on file; false = only without | |
| active_since | No | ISO date/datetime — only workers with last_active_at on/after this | |
| include_inactive | No | true = also include inactive workers (e.g. tombstones left by a merge or delete) — useful for auditing right after tascan_merge_workers / tascan_delete_worker |
TDQS
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 fully covered by structured data. The description adds modest value by disclosing that each row includes completion_count, which hints at return shape, but it doesn't disclose pagination, result limits, or default inclusion of inactive workers. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first front-loads the verb/resource and lists the filter dimensions, and the second discloses the notable output field. Every sentence earns its place and the most decision-relevant information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent listing tool with 5 optional parameters fully documented in the schema, the description is nearly complete: purpose, filter capabilities, and one key output signal are covered. The only gap is the absence of an output schema and no mention of result ordering or pagination, which is a minor omission given the annotations already carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description loosely mirrors the schema by mentioning name/email/phone substring, contact-info presence, and last-activity date, but it adds no syntax, format, or semantics beyond what the parameter descriptions already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('workers (taskees)') and immediately differentiates the tool from sibling list tools like tascan_list_agents and tascan_list_assets by naming the worker resource and its key output field (completion_count). An agent can tell exactly what this tool returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by enumerating supported filters, but it never explicitly states when to choose this tool over alternatives such as tascan_get_worker, tascan_find_duplicate_workers, or tascan_list_tasks. The auditing-after-merge guidance lives only in the schema's include_inactive parameter description, not in the tool description itself, so usage guidance is present but implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_list_zonesARead-onlyIdempotentInspect
List geofenced work zones, optionally filtered by project. Shows center, radius, routing target, and zone-lock status.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Filter by project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, signaling safe read-only behavior. The description adds value by specifying exactly what fields are returned (center, radius, routing target, zone-lock status), which aids the agent in understanding the output. No contradictions with annotations. Could further note ordering or pagination, but it's solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences: the first states the core function and optional filter, the second lists returned fields. Every word earns its place, no fluff. Front-loaded with the primary action, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a simple list tool with one optional parameter and no output schema, the description is fairly complete. It explains what data is returned. However, it does not clarify whether omitting project_id lists all zones across all projects or if there is a default scope. Minor gap but still good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the sole parameter (project_id: 'Filter by project') with 100% coverage. The description echoes this ('optionally filtered by project') but adds no new semantic meaning beyond the schema. The description also includes output details unrelated to input parameters. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists geofenced work zones, specifying the resource and action. It also details the optional filter by project and enumerates the displayed fields (center, radius, routing target, zone-lock status), making it distinct from sibling list tools like list_projects or list_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the user wants to list geofenced zones, optionally filtering by project. However, it offers no explicit guidance on when to use this tool versus alternatives (e.g., list_tasks, list_events) or when not to use it. The context is clear but lacks exclusions or comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_merge_workersADestructiveInspect
Merge duplicate worker records into one canonical identity (Patent 4 identity consolidation). Reassigns every reference (completions, timer events, points, payments, rosters — 31 columns across 31 tables), backfills missing phone/email on the primary, sums points, and tombstones the duplicates (merged_into + is_active=false — NEVER hard-deletes). ALWAYS run with dry_run=true first and show Mike the counts; pass dry_run=false only after explicit confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true (default) = report reassignment counts only, change nothing. false = execute atomically. | |
| primary_worker_id | Yes | The canonical worker that survives (usually the one with a phone) | |
| duplicate_worker_ids | Yes | Worker IDs to fold into the primary (max 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description goes far beyond: it lists the reassignment scope (31 columns across 31 tables), the tombstone mechanism (merged_into + is_active=false), explicitly prohibits hard-deletes, and documents dry-run versus atomic behavior. This is exemplary disclosure for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, scope, tombstone behavior, safety rule. Critical information is front-loaded, and the mandatory dry-run instruction is placed last for emphasis. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity, destructive merge tool with no output schema, this description is remarkably complete. It covers what happens to references, primary fields, points, duplicate records, and the exact execution protocol. The absence of an output schema is mitigated by describing dry_run as 'report reassignment counts only.' Nothing an agent needs to call this tool safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and parameter descriptions already explain primary_worker_id ('canonical worker that survives'), duplicate_worker_ids ('max 20'), and dry_run ('true (default) = report counts'). The description adds context about backfilling and summing but does not materially change parameter understanding 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.
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: 'Merge duplicate worker records into one canonical identity (Patent 4 identity consolidation).' It details the exact scope of the operation, including reassigning references, backfilling contact info, summing points, and tombstones duplicates, which clearly distinguishes it from sibling tools like delete_worker or update_worker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear workflow instructions: 'ALWAYS run with dry_run=true first and show Mike the counts; pass dry_run=false only after explicit confirmation.' It also implicitly distinguishes from hard-delete via 'NEVER hard-deletes.' However, it does not explicitly name alternative tools or state when to prefer this tool over a sibling like tascan_delete_worker, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_org_analyticsARead-onlyIdempotentInspect
Read organization-wide analytics: view org (GET /analytics/org, the get_org_analytics rollup) or view resolutions (GET /analytics/resolutions, paginated AI issue-resolution history, filterable by severity, category, and pattern-detected). Read tier.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Which analytics surface to read. | |
| limit | No | resolutions only: page size (default 50, max 200). | |
| offset | No | resolutions only: page offset. | |
| pattern | No | resolutions only: true to filter to pattern_detected rows only. | |
| category | No | resolutions only: filter by issue_category. | |
| severity | No | resolutions only: filter by classification_severity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds useful context beyond that: it identifies the endpoints, the rollup nature of the org view, pagination for resolutions, and the available filters. This is meaningful behavioral disclosure for a read tool, though it stops short of describing output shape or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized, front-loading the main purpose and then enumerating the two views with their key modifiers. The trailing 'Read tier.' fragment is slightly redundant given the readOnly annotation, but it is minor and does not impair clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytics tool with no output schema, the description covers the two views, pagination, and filtering options, which is enough for an agent to call it correctly. It does not describe the response payloads or explain the 'pattern-detected' semantics, but the input schema and annotations fill most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a clear description (including 'resolutions only' scoping and the default/max limit). The description reinforces which filters belong to the resolutions view but does not add substantial meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Read organization-wide analytics', then distinguishes the two surfaces (org rollup vs resolutions history). Including endpoint mappings and the explicit 'Read tier' label makes the tool's purpose unmistakable and separates it from the many list/get siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the internal view selection explicit ('view org' vs 'view resolutions') and notes resolution-specific filters, which implies when each branch is appropriate. However, it does not explicitly say when to prefer this tool over sibling analytics/read tools such as tascan_list_issues or tascan_get_scan_history, so usage guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_post_evidenceAIdempotentInspect
Post one evidence event into the evidence ledger (protocol v0.2 V9a, POST /evidence): an actor did an action to an object at a point in time, optionally with a location and provenance. idempotency_key is required — the same (org, idempotency_key) always returns the same row, never a second insert. Optionally correlate the event to a task or task list. Write tier; a device credential (structurally different from an API key) is not reachable through this MCP connection, so device_id is never set here.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who did it. | |
| action | Yes | What happened, e.g. inspected, scanned, calibrated. | |
| object | Yes | What it happened to. | |
| location | No | Optional location. | |
| provenance | No | Optional provenance object. provenance.kind first_party_scan is written only by the scan_events trigger and is refused from a caller; provenance.signature triggers device-signature verification. | |
| correlation | No | Optional correlation hint. | |
| occurred_at | Yes | ISO timestamp for when the event actually happened. | |
| idempotency_key | Yes | Required, 1-200 chars. The same key on the same org replays the same stored row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses idempotency replay behavior ('same row, never a second insert'), write-tier restrictions, the device-credential limitation, and provenance constraints (first_party_scan is refused from a caller). This gives the agent critical behavioral context the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then the most important constraint (idempotency), then auxiliary caveats. Every sentence earns its place and no information is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-parameter write tool with no output schema, the description covers the required event model, idempotency, optional correlation, provenance restrictions, and authentication limitations. No critical information needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline of 3 applies. The description adds meaningful semantics beyond the schema: idempotency_key replay guarantees, correlation fallback behavior, device_id never being set, and provenance restrictions. This elevates it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Post one evidence event into the evidence ledger' with a protocol and endpoint. The evidence-ledger concept distinguishes it from nearby siblings like tascan_create_event and tascan_get_event, even without naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames when the tool is used: to post evidence events with actor-action-object-time semantics, with optional correlation. It does not explicitly name alternative tools or give a when-not-to-use statement, but the context is unambiguous and not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_post_messageAIdempotentInspect
Post a message on a task trail (protocol v0.2 trail_messages): kind question, answer, handoff or discussion. A message never completes a task, never satisfies a gate and never pages anyone. The actor is stamped from your credential (key:, actor_type "key" — a credential, never a human), never from the body; the executor and the reviewer consume a key's answers only when the key holds agent:dispatch. On an ordinary task this is write tier. On a CYCLE task (one with coord) it needs agent:dispatch (agent:dispatch:code when the task, or the asker a question task stands for, is CODE:/SHELL:) because the text can become executor prompt or reviewer input. kind=answer on a dispatcher-addressed question task answers it through coord_answer_question and releases the blocked asker; a human-addressed question is answered only on the worker page (403 here). finding (reviewer runner) and decision (human completion) cannot be posted. Body ≤ 8000 chars; idempotency_key makes a replay return the same message.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The message text (1-8000 chars). Treated as DATA by every reader; on a cycle task it may be prepended to the executor prompt as TRAIL INPUT. | |
| kind | Yes | question = a question for the record (does not block anything); answer = answers a dispatcher question task and releases the asker; handoff = hand work or context to the next agent; discussion = a note. | |
| task_id | Yes | Task ID (UUID). For an answer: the QUESTION task id (tascan_get_task on the asker shows coord.blocked_by). | |
| reply_to | No | Optional message id this replies to. | |
| addressee | No | Optional, kind=question only: who the question is for (recorded; nobody is paged). | |
| build_ref | No | Optional sha256:<64 hex> the message is about (defaults to the cycle task's bound build). | |
| idempotency_key | No | Optional replay key (≤ 200 chars): the same key on the same task returns the same message id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark idempotentHint=true and readOnlyHint=false, but the description goes well beyond them. It discloses that the actor is stamped from the credential, never the body; that on CYCLE tasks text can become executor prompt or reviewer input; and that idempotency_key makes a replay return the same message. It also states side-effect behavior like releasing a blocked asker.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place. Core purpose is front-loaded, followed by exclusions, permission tiers, special-case behaviors, and constraints, with no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write tool with no output schema, the description is remarkably complete: it covers protocol, permissions, exclusions, special routing, idempotency, length limits, and behavior on CYCLE tasks. An agent can determine whether to call this tool and which parameter values are valid without needing external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning: body length cap, the meaning of answer in the dispatcher vs human case, the replay behavior of idempotency_key, and the CYCLE-task prompt implications. It also clarifies that no actor parameter is needed because identity comes from the credential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource, 'Post a message on a task trail,' and immediately narrows the protocol and kinds: 'protocol v0.2 trail_messages: kind question, answer, handoff or discussion.' It also differentiates itself from task-completion actions by declaring that a message 'never completes a task, never satisfies a gate and never pages anyone.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly specifies when this tool is appropriate and when it is not: ordinary tasks are 'write tier,' CYCLE tasks require agent:dispatch, human-addressed questions return 403, and finding/decision kinds 'cannot be posted.' It also states the effect of kind=answer on dispatcher-addressed question tasks, giving an agent clear routing context without needing another tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_project_digestARead-onlyIdempotentInspect
One call that gives a chat client (ChatGPT, Claude) a whole TaScan project in about 2,000 words: the project, every task list with task counts, open decisions and questions, the last 5 coordination cycles with verdicts and spend, the latest 5 receipts, and total spend — returned as Markdown (capped at 12,000 chars). Read tier. Use it before asking a human to paste anything.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the output format (Markdown), size (about 2,000 words, capped at 12,000 chars), and exact content composition. This gives an agent a strong mental model of what to expect from the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver a complete picture: the first packs a dense but organized list of contents pigeonholed into a single read call, the second adds role and timing guidance. No filler words; every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parametercan No output schema, the description fully covers what an agent needs: the tool's scope, return format, content detail, and size limits. There are no ambiguous gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents project_id as a UUID with 100% coverageandarameter semantics baseline is therefore 3. The description mentions 'project' generically but adds no new parameter-specific meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'gives a chat client ... a whole TaScan project', followed by a precise list of included content (task lists, open decisions, last 5 cycles, receipts, total spend). This clearly distinguishes the tool from sibling read tools like tascan_get_project or tascan_list_tasks, which cover only subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use it before asking a human to paste anything' provides a clear, practical when-to-use instruction. It implies this is the go-to tool for obtaining a full project digest, though it does not explicitly name alternatives or conditions for when a narrower tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_query_responsesARead-onlyIdempotentInspect
Query one task's submitted responses across every list in a project — e.g. the same exercise repeated across many workout lists returns one chronological progression series instead of N report lookups. Match by task title pattern or exact task ID. Subtask completions interleave into the same series labeled 'Task › Subtask' (e.g. per-set values Set 1/2/3 with their own timestamps), so set-level progression chains across lists automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Task title pattern (case-insensitive substring) or exact task ID | |
| limit | No | Max responses to return (default 200, max 500) | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent, non-destructive), the description reveals important behavioral details: matching via title pattern or exact ID, subtask completions interleaved as 'Task › Subtask', per-set values with their own timestamps, and automatic chronological progression across lists. No annotation contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences carry distinct, valuable information: the core aggregation behavior, a motivating example, and subtask interleaving details. The final sentence is dense but every clause earns its place; no filler or redundancy warrants a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains the return shape as a chronological progression series with interleaved labeled subtasks. It covers the most essential behavioral expectations, though it omits exact response fields and edge-case behavior, which keeps it one step from fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters at 100% coverage, including the task matching semantics and limit range. The description adds no new parameter-level meaning beyond restating that matching can be by title pattern or ID, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Query') and precise resource ('one task's submitted responses across every list in a project'), clearly distinguishing it from single-task or single-list tools like tascan_get_task and tascan_list_tasks. The cross-list aggregation and chronological-series behavior make the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete motivating scenario ('same exercise repeated across many workout lists') and frames the result as replacing N report lookups, which signals when this tool is preferable. It does not explicitly name a sibling alternative or state exclusions for single-list queries, 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.
tascan_recommend_fixAInspect
Step 2 of the Closed-Loop Autonomous Operations Protocol. Post an AI-generated recommendation to an issue thread. Accepts both a text recommendation and an optional structured_recommendation object with task definitions for auto-dispatch. The recommendation is persisted in the AI audit trail.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_agent | No | Name of the AI agent posting (default: TaScan AI) | |
| issue_id | Yes | Issue ID to recommend a fix for | |
| recommendation | Yes | The AI-generated recommendation text (clear, actionable instructions) | |
| structured_recommendation | No | Optional structured recommendation with tasks for auto-dispatch. Format: { recommendation_summary, confidence_score, tasks: [{ title, description, response_type, requires_photo, is_safety_checkpoint, sort_order }], estimated_duration_minutes, required_responder_role } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are generic (readOnly=false, destructive=false), so the description adds meaningful behavioral context: the recommendation is 'persisted in the AI audit trail' and the tool 'accepts' both text and structured recommendations for auto-dispatch. This clarifies the write side-effect and audit trail integration beyond what annotations state. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—three sentences—with the core action and protocol step presented first. Every sentence earns its place: action, parameter flexibility, and persistence behavior. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write-only tool with a nested structured parameter and no output schema, the description sufficiently covers the purpose, optional vs required inputs, and the audit-trail persistence. It could mention response behavior, but the absence of an output schema lowers that burden. The protocol step context further helps the agent decide when to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving the baseline of 3. The description adds value by explaining that structured_recommendation contains 'task definitions for auto-dispatch,' which clarifies the semantic purpose of that complex nested parameter beyond the raw format in the schema. This extra context elevates the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Post') and identifies the exact resource ('AI-generated recommendation to an issue thread'), naming it as 'Step 2 of the Closed-Loop Autonomous Operations Protocol.' This makes the tool's role clear and distinguishes it from sibling tools like tascan_analyze_issue or tascan_auto_resolve by focusing on issuing a recommendation rather than analyzing or directly executing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'Step 2 of the Closed-Loop Autonomous Operations Protocol' provides clear contextual when-to-use guidance, implying it follows issue analysis and precedes auto-dispatch. However, it does not explicitly state when not to use this tool or name alternative tools, leaving minor ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_record_integrationAIdempotentInspect
D4: the dispatcher records the Netlify deploy id for an authorized cycle — Integrate cards stop landing on Mike for something a key can prove instead (protocol v0.2, migration 181, coord_record_integration). Requires agent:dispatch. The root must be authorized (its checkpoint already Approved) with an open Integrate task; deploy_id must be a real Netlify deploy id — 24 lowercase hex, optionally "deployed:" and/or a trailing build-ref hex prefix ("Deploy" and anything else is refused, bad_deploy_id). On success the root flips to integrated, the existing "Integrated: deploy …" trail note is posted, and the completion is stamped with your key as the actor (source api:key:) — never as a human on the page. Idempotent: replaying the SAME deploy_id after the root is already integrated returns the same completion (replayed:true); a DIFFERENT deploy_id after integration is refused (409) without changing anything. A human may still complete the Integrate card on the worker page as an ops fallback, but only with a real deploy id too.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note (≤ 2000 chars) recorded alongside the completion — e.g. what changed in this deploy. | |
| root_id | Yes | The cycle root = the T1 build task id (tascan_get_cycle_report / tascan_create_cycle). Must currently be authorized (checkpoint Approved, Integrate task open). | |
| deploy_id | Yes | The Netlify deploy id: 24 lowercase hex, optionally prefixed "deployed:" and/or followed by a space and a ≥12-hex prefix of the build_ref. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description substantially exceeds the annotations. It discloses state transitions (root flips to `integrated`), the trail-note posting, actor stamping as source api:key:<id> (never as a human), and rich idempotency semantics — replaying the SAME deploy_id returns the same completion with replayed:true, while a DIFFERENT deploy_id after integration is refused (409) without mutation. It also covers auth (agent:dispatch) and invalid-input handling (bad_deploy_id). This is exemplary behavioral disclosure with no contradiction against annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and logically ordered (purpose, prerequisites, behavior, idempotency, fallback), but it is verbose and carries jargon ('D4:', 'protocol v0.2, migration 181, coord_record_integration', 'stop landing on Mike') that adds narrative noise without helping an agent select or invoke the tool. The core facts could be delivered in about half the words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description is unusually complete: prerequisites, valid input format, state change, actor stamping, idempotency behavior, failure modes (409, bad_deploy_id), auth requirement, and the human fallback are all covered. The only gap is the exact shape of the returned completion, but that is mitigated by hints like 'returns the same completion (replayed:true)'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mirrors the schema's deploy_id format (24 lowercase hex, optional 'deployed:' prefix, optional build-ref hex) and adds validation context ('Deploy' and anything else is refused, bad_deploy_id) and the idempotency coupling to deploy_id. It adds modest value but largely restates what the schema already documents, so it does not push meaningfully above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource+outcome: records the Netlify deploy id for an authorized cycle, moving the root from `authorized` to `integrated`. This is unambiguous and distinct from the many tascan_* siblings — it is specifically the integration-recording tool, not a generic task completion tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description spells out concrete prerequisites: root must be `authorized` (checkpoint Approved) with an open Integrate task, deploy_id must be a real Netlify deploy id, and it requires agent:dispatch permission. It also contrasts the agent action with the human ops fallback (completing the card on the worker page), clarifying when the tool is the right path. It does not name specific sibling tools, but the context is well-scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_register_agentAIdempotentInspect
Register a new AI agent in the agent registry. The agent will appear in tascan_list_agents and can receive dispatched tasks. Self-registration for AI agents joining the TaScan network. REQUIRES the agent:dispatch permission (defining a dispatch target is a dispatch permission); inbox_id must be a task list (event) in your organization.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique agent ID (e.g. "my-agent-1") | |
| name | Yes | Display name (e.g. "Research Bot") | |
| type | Yes | Agent type | |
| model | No | Model powering this agent (e.g. "claude-sonnet-4-6") | |
| inbox_id | Yes | Task list ID this agent monitors for new tasks | |
| location | No | Where the agent runs (e.g. "AWS us-east-1") | |
| worker_id | No | TaScan worker ID for this agent | |
| description | No | What this agent does | |
| capabilities | Yes | Task type prefixes this agent handles (e.g. ["RESEARCH", "WRITE"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly=false, destructive=false, and idempotent=true. The description adds meaningful behavioral context beyond those: the agent becomes visible in listingscars and can receive dispatched tasks, and permission/inbox constraints must hold. This gives the agent a clear model of side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient, front-loads the core purpose, and each sentence adds context. The parenthetical '(defining a dispatch target is a dispatch permission)' is somewhat redundant and slightly confusing, keeping it from a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema, the description covers purpose, requirements, and effects but omits return value or success confirmation details. It does mention the visible outcome (appears in list_agents), yet leaves the agent to infer what the response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds useful semantic detail for inbox_id (must be a task list/event in your organization), but it doesn't meaningfully elaborate on the other 8 parameters. This exceeds the baseline slightly but not enough to warrant a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Register a new AI agent in the agent registry.' It clearly distinguishes this tool from siblings like create_worker or register_asset by focusing on AI agent registration in the agent registry MkDocs, and it even names the direct effect (appears in tascan_list_agents, can receive dispatched tasks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Self-registration for AI agents joining the TaScan network.' It also states hard prerequisites (agent:dispatch permission, inbox_id must be an event task list). It doesn't explicitly exclude alternatives or name competing tools, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_register_assetAInspect
Register a physical asset (equipment, structure, vehicle, machine) in the condition ledger so it can be assessed over time. Each asset gets a longitudinal condition history with AI scoring and degradation trajectory.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Asset name (e.g. "LED Wall Processor #3") | |
| asset_type | No | Type (e.g. "LED processor", "forklift", "scaffold") | |
| project_id | No | ||
| description | No | Context the AI assessor should know | |
| serial_number | No | Serial number or asset tag (unique per org) | |
| location_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that each asset gets a longitudinal condition history with AI scoring and degradation trajectory, adding behavioral context beyond the annotations. Annotations indicate readOnlyHint=false and destructiveHint=false, aligning with a creation operation. The description provides useful outcome details but does not cover authorization or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, and no wasted words. The description is efficient and immediately conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a registration tool with no output schema, the description explains the outcome (condition history, AI scoring) but lacks details on error handling, idempotency (annotations say idempotentHint=false), prerequisites, or what happens if the asset already exists. The missing parameter documentation for two fields also reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (four of six parameters have descriptions). The main description does not explain individual parameters beyond the schema, and it fails to compensate for the two missing parameter descriptions (project_id, location_description). The description adds general context but not parameter-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Register' and the resource 'physical asset in the condition ledger' with examples (equipment, structure, vehicle, machine). This differentiates it from sibling registration tools like tascan_register_agent or tascan_register_tag by specifying the asset focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before assessment tools ('so it can be assessed over time'), but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No direct comparison with siblings or exclusion criteria is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_register_tagBInspect
Register a physical NFC tag to a project, task list, or specific task. When someone taps the tag, TaScan routes them to the linked resource. Tags use NTAG215 chips and are programmed with NFC Tools Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | Task ID (required for task targets) | |
| tag_name | Yes | Friendly name (e.g., "Ballroom A Door", "Breaker Panel 3") | |
| project_id | No | Project ID | |
| target_type | Yes | What this tag points to | |
| task_list_id | No | Task list ID (required for task_list/task targets) | |
| tag_hardware_id | Yes | NFC tag hardware serial number (e.g., "04:CB:6C:51:CE:2A:81") | |
| location_description | No | Physical location of the tag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive, non-idempotent write operation. The description adds useful behavioral context: the routing effect when tapped and the hardware chip requirement (NTAG215, NFC Tools Pro). However, it does not disclose what happens on duplicate registration, validation checks, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences. The first sentence contains the core purpose ('register a physical NFC tag to a project, task list, or specific task'), and the second adds value by explaining the tapping behavior and hardware requirements. There is no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description lacks important context: it does not explain what the tool returns (e.g., success status, created registration ID), how to obtain the tag_hardware_id, or whether duplicate hardware IDs are handled. The schema descriptions cover individual parameters, but the overall workflow and error conditions are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage, with clear parameter descriptions for all 7 properties. The tool description does not provide additional meaning for any specific parameter beyond what the schema already contains, so it meets the baseline for a high-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Register a physical NFC tag to a project, task list, or specific task.' It also explains the resulting behavior ('When someone taps the tag, TaScan routes them to the linked resource') and mentions hardware specifics. This distinguishes it from sibling tools like tascan_list_tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The only implicit context is that it is for physical NFC tag registration, but no differentiation from other Tag-related tools (e.g., no 'Use this for new tag registrations only' or 'Do not use if the tag is already registered').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_reply_with_listAInspect
Reply to a task list WITH a task list — the two-way tasking primitive. Creates a new list linked into the parent's thread, aimed back at whoever sent the original (e.g. "Grant access — pick a window" with response_type date, or an info request with response_type text). The org gets pinged; the thread shows in both the worker portal and Simple Mode. Use tascan_get_thread-style follow-up via tascan_list_projects/tascan_get_report to read answers.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | Items the recipient answers — each becomes a typed task | |
| title | Yes | Reply list title (e.g. "Before I can start...") | |
| author_name | No | Who is replying (shown in the thread) | |
| parent_list_id | Yes | The list being replied to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals observable behavior beyond what annotations state: creating a new list linked into the parent's thread, pinging the org, and showing the thread in both the worker portal and Simple Mode. It also explains the two-way nature of the tasking flow. While annotations already indicate this is not read-only, the description adds meaningful context about side effects (org ping, portal visibility) that directly informs an agent's expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense. The opening line communicates the core purpose in one sentence, and the rest adds genuine value (examples, response_type hints, follow-up guidance). It avoids redundant phrases and every sentence earns its place, though it could arguably be trimmed slightly without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-reply tool with a solid schema (100% coverage, required params clearly stated) and no output schema, the description fully covers what an agent needs: the purpose, the workflow context, examples of response types, and the follow-up tools to read answers. Nothing critical is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so parameters are already well-documented. The description adds extra context on top by explaining response_type values in the schema (e.g., 'date' for scheduling windows, 'text' for info requests), which reinforces selection. It also frames parent_list_id and title with concrete examples beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a two-way tasking primitive that replies to a task list with a new list linked into the parent's thread. It gives concrete examples of use cases (e.g., 'Grant access — pick a window' with response_type date) and distinguishes the tool's responsive nature. The verb 'Reply to' is specific and immediately tells an agent this is for responding to an existing task list, not creating a standalone one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames this as the two-way tasking primitive and explains when to use it: to reply to a task list with a new list aimed back at the sender. It also provides follow-up guidance, telling agents to use tascan_get_thread-style follow-up via tascan_list_projects/tascan_get_report to read answers. This is a clear usage scenario with a pointer to related tools for the next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_request_paymentAInspect
Pledge a payment on a task list: when the list is verified complete (every task done + photo evidence on photo-required tasks), the payer automatically receives a Stripe pay link that routes the money DIRECTLY to the worker (0% TaScan fee). No money moves and no card is stored at pledge time. The worker must have completed payout onboarding (Get Paid on their profile).
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | What the payment is for (shown to the payer) | |
| worker_id | Yes | Worker who gets paid | |
| payer_name | No | ||
| payer_email | Yes | Who pays — receives the pay link on verification | |
| amount_cents | Yes | Amount in cents ($1 min, $10,000 max) | |
| task_list_id | Yes | Task list the payment is tied to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavioral traits beyond the annotations: it confirms no money moves at pledge time, no card is stored, the payment is direct to the worker with 0% fee, and a Stripe pay link is generated upon verification. This aligns with readOnlyHint=false and destructiveHint=false, adding valuable context about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: the first states the core purpose, the second explains the verification trigger and fee structure, and the third outlines a prerequisite. No redundant or vague language, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description could explain the API response (e.g., returns a pledge ID). It covers the user-facing outcome (Stripe link sent) but omits what the caller receives synchronously. Still, for a pledged payment creation tool, it provides sufficient context for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83% (5 of 6 parameters described). The description reiterates the amount range already in the schema and adds context about the overall flow, but it does not add new meaning for individual parameters like memo, payer_name, or worker_id beyond what the schema provides. The marginal value is limited, keeping the score at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'pledge' combined with 'payment on a task list', clearly distinguishing this tool from all siblings. No other sibling tool handles payment pledging, and the description explains the conditional release mechanism, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description outlines the flow: pledge occurs when the list is verified complete, worker must have completed payout onboarding, and the payer receives a Stripe link. It provides clear context for when to use the tool, though it does not explicitly contrast with alternatives (e.g., direct payment) or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_request_verificationAInspect
Enqueue an autonomous verification job for a task completion (Verification Layer V2 + V7 doc_check, POST /completions/:completion_id/verification-jobs): http_probe checks a URL (params url, and optionally expect_status, expect_content_type, expect_sha256), doc_check runs a named policy against params.url and params.policy_id. Read the result with tascan_list_verifications once the job runs. Write tier.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | For http_probe: url, and optionally expect_status, expect_content_type, expect_sha256. For doc_check: url and policy_id, where policy_id names an active doc_check policy. | |
| run_at | No | Optional ISO timestamp to schedule the job for (default now). | |
| check_type | Yes | Which autonomous check to run. | |
| completion_id | Yes | task_completions.id (UUID) — from tascan_get_task -> completions[].id. | |
| idempotency_key | No | Optional replay key (up to 200 chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-idempotent behavior, but the description adds key behavioral context beyond that: the job is enqueued asynchronously, results are not returned directly, and this is a write-tier action. This helps the agent set correct expectations without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core action and includes only useful details: check types, relevant params, endpoint, write tier, and how to read results. The one minor drawback is that it packs several clauses into a single long sentence, but each element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, no output schema, and an asynchronous job workflow, the description covers the essential operational flow: what to pass, how the two check types differ, and how to retrieve results afterward. Nested params and scheduling are also documented in the schema, so the overall picture is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics by explaining what http_probe and doc_check actually do and which params each requires. This goes beyond the schema's per-property descriptions by tying parameters to concrete check behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Enqueue an autonomous verification job for a task completion,' and names the exact endpoint. It clearly distinguishes itself from the read-side sibling by saying 'Read the result with tascan_list_verifications once the job runs.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains when to use the tool and what it does, including the two check types and their parameter shapes. It does not explicitly list when-not-to-use alternatives, but it does provide complementary usage guidance by directing the agent to read results via tascan_list_verifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_schedule_smsAIdempotentInspect
Schedule a transactional TaScan SMS for a future time (up to 90 days out): the text is sent by TaScan's own scheduler (every 5 minutes) through the same guarded lane as tascan_send_sms — recipient must be a worker of your org or a phone the org already knows, STOP opt-outs honoured, burst limits and the SMS quota apply, the "TaScan:" prefix is added, and a list_id appends a tap-to-open checklist link. Use this for reminders (e.g. "log your out time" each show night) — nothing outside TaScan needs to stay awake. Returns the scheduled row id; cancel with tascan_cancel_scheduled_sms while it is still pending. The same idempotency_key within an org returns the existing row instead of a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | No | Raw phone (E.164) — must already belong to a worker or roster entry of your org | |
| list_id | No | Optional task list ID — appends the tap-to-open checklist link | |
| message | Yes | Message text (1-400 chars, links stripped). Transactional and work-related only. | |
| send_at | Yes | When to send — ISO 8601 with a timezone offset, e.g. "2026-09-25T18:30:00-07:00" (Las Vegas is -07:00 in September). Delivery happens on the next 5-minute tick at or after this time. | |
| worker_id | No | Worker ID — texts their phone on file (preferred over raw phone) | |
| include_link | No | Append the list link (default true when list_id is given) | |
| idempotency_key | No | Optional caller key (≤ 200 chars) — replays return the existing scheduled row |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by revealing concrete operational behavior: 5-minute scheduling ticks, the guarded lane shared with tascan_send_sms, recipient eligibility, STOP opt-out honoring, burst limits, quota effects, the 'TaScan:' prefix, link appending behavior, and idempotency semantics. This rich context is genuinely additive and helps the agent anticipate side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and packed with useful constraints, but it remains tightly written with no filler. The central scheduling purpose is front-loaded, followed by constraints, use-case guidance, return value, cancellation pointer, and idempotency note. It is long, but every sentence contributes meaningful information for correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explicitly states the return value ('Returns the scheduled row id'), how to cancel, eligibility requirements, quota/burst behavior, and idempotency behavior. For a scheduling tool with multiple constraints, this is comprehensive enough for an agent to select and invoke it correctly without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful parameter-level interpretation: send_at is tied to the 5-minute tick, worker_id is preferred over phone, list_id appends a checklist link, and idempotency_key ensures replays return the existing scheduled row. This elevates the semantics beyond the raw schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Schedule a transactional TaScan SMS for a future time') and distinguishes the tool from the immediate-send sibling tascan_send_sms by emphasizing the future-time and scheduler behavior. It clearly identifies what the tool does and how it is different from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use it ('Use this for reminders') and names the cancel alternative (tascan_cancel_scheduled_sms). It also explains that nothing outside TaScan needs to stay awake, giving a clear rationale for choosing this tool over an immediate-send path. It does not exhaustively cover all alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_search_marketplaceARead-onlyIdempotentInspect
Search the cross-org Worker Marketplace: workers who opted in (discoverable=true on their passport), ranked by passkey trust tier + verified completion volume. Skills are AI-inferred from REAL completed work, not resumes — each carries a verified_task_count and a civilian_equivalent job title. Returns sanitized public cards only (first name + last initial, skills, stats, passport URL) — never phone, email, or org membership.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Skill, category, name, or civilian job title — e.g. "forklift", "LED wall", "AV technician" | |
| city | No | Filter by the worker's opt-in home city, e.g. "Las Vegas" | |
| limit | No | Max cards (default 25, max 50) | |
| available | No | Only workers who marked themselves available on their passport | |
| min_completions | No | Only workers with at least this many verified completions |
TDQS
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 substantial behavioral context beyond annotations: the discoverability filter, ranking by trust tier and verified completions, the AI-inferred skill provenance, and the explicit privacy guarantee ('never phone, email, or org membership'). This is high-value transparency about what the tool does and does not return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines purpose and ranking, the second explains skill provenance, and the third specifies privacy-safe output fields. Key info is front-loaded, and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description covers the essential return contract: sanitized public cards with specific fields and exclusions. It also covers the selection logic, ranking, and all filters. An agent has enough context to call this tool correctly and interpret results without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already documents all five parameters well. The description does not add per-parameter detail beyond the schema, but it does provide useful context for how the parameters shape results (e.g., ranking and sanitized output). Baseline 3 is appropriate because the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), a specific resource ('cross-org Worker Marketplace'), and precisely defines the population ('workers who opted in (discoverable=true on their passport)'). It also gives unique ranking criteria ('passkey trust tier + verified completion volume'), which distinguishes it clearly from sibling list/search tools like tascan_list_workers or tascan_find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when this tool is appropriate: searching the cross-org marketplace for opt-in workers. It provides filter guidance through examples and constraints, but it does not explicitly name sibling alternatives or state when not to use it, so there is a small exclusion-guidance gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_send_smsAInspect
Send a transactional TaScan SMS text to a worker (by worker_id, using their phone on file) or to a raw phone number. Optionally attach a task list — the recipient gets a tap-to-open checklist link. Sends from TaScan's carrier-registered A2P number (or the org's own Twilio if BYOK). Counts against the org's monthly SMS quota unless BYOK. Messages are auto-prefixed with "TaScan:" per carrier registration; transactional/work-related content only, no marketing.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | No | Raw phone number (e.g. "+17025551234") — used when no worker_id given | |
| list_id | No | Optional task list ID — appends a tap-to-open worker checklist link | |
| message | Yes | Message text. Transactional and work-related only. | |
| worker_id | No | Worker ID — sends to their phone on file (preferred over raw phone) | |
| include_link | No | When a list_id is given, append the tap-to-open link to the SMS body (default true). Set false to send the message text alone — the link is still returned for you to share another way. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it discloses the sender identity (A2P or BYOK Twilio), quota impact, automatic 'TaScan:' prefix, and content policy restrictions. These are exactly the side-effect and constraint details an agent needs and that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense yet clearly structured: it opens with the core purpose, then covers the optional list-link behavior, followed by sender/quota constraints. Every sentence contributes useful operational knowledge without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers destination selection, optional link behavior, sender infrastructure, quota, prefixing, and content policy. It doesn't explicitly describe the full return value (e.g., an SMS ID), though it mentions the link is returned when include_link is false. Given no output schema, a brief note about the response would make it fully complete, but the current information is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3, but the description adds meaningful semantics: worker_id is preferred over raw phone, list_id appends a tap-to-open link, and include_link controls whether the link is embedded or just returned. This goes beyond the schema field descriptions and clarifies selection and behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a transactional TaScan SMS to either a worker_id or a raw phone number, which is specific and actionable. It also distinguishes itself from related tools like tascan_send_task_email by focusing on SMS text with optional task-list links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context for when to use this tool: for transactional/work-related SMS to workers or raw numbers, with optional checklist links. It doesn't explicitly name alternatives or exclusion conditions, but the 'transactional only, no marketing' rule and BYOK/quota details help an agent decide when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_send_task_emailAInspect
Send a branded TaScan task notification email via SendGrid. Can notify anyone about a specific task list or task. Includes QR code, task summary, and "Open in TaScan" button.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | Yes | Task list (event) ID | |
| message | No | Optional custom message to include in the email body | |
| subject | No | Custom email subject (defaults to auto-generated) | |
| task_id | No | Optional specific task ID to highlight | |
| to_name | No | Recipient display name | |
| to_email | Yes | Recipient email address | |
| include_qr | No | Include QR code for the task list in the email (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this tool has open-world side effects and is non-idempotent (readOnlyHint=false, openWorldHint=true, idempotentHint=false). The description adds useful behavioral context by revealing the email is sent through SendGrid and includes specific visual components, though it does not mention potential delivery failures or rate limits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action and provider. Every sentence earns its place, with no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an email-sending tool with 7 parameters and no output schema, the description sufficiently covers purpose, target, and content. It lacks explicit mention of success/failure response or idempotency implications, but these are either covered by annotations or implied by 'send email.' Overall, it is adequate for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter semantics are fully documented in the schema. The description mentions QR code inclusion, which maps to include_qr, but does not add meaningful meaning beyond what the schema already provides. The only added context is the overall email composition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific action 'Send a branded TaScan task notification email via SendGrid,' clearly identifying both the verb and resource. It distinguishes this tool from its siblings by being the only email-sending tool, and further specifies the email contents (QR code, task summary, Open button).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates it can 'notify anyone about a specific task list or task,' providing some usage context. However, it does not explicitly state when to prefer this tool over alternatives like dispatch_to_agent or generate_qr, nor does it include exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_server_infoARead-onlyIdempotentInspect
Identify exactly which TaScan server and schema this MCP session is talking to. Call this FIRST when diagnosing anything — it makes "dev server masquerading as production" and "is my fix deployed yet" one tool call instead of an inference.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying what the tool returns (server and schema identity) and frames it as a diagnostic step. No contradictions; the behavioral context is appropriately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences, front-loaded with the core purpose. Every word adds value, and there is no redundant information. The analogy in the second sentence enhances understanding without bloating.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and annotations fully cover safety, the description is complete. It explains what the tool does, why it exists, and when to use it. No additional information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. Per guidelines, the baseline is 4, and the description does not need to add parameter semantics. No additional parameter detail is necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb ('Identify') and resource ('TaScan server and schema'). It distinguishes itself from all sibling tools, which are mostly CRUD operations, by being the only diagnostic tool for session identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Call this FIRST when diagnosing anything' and gives concrete use cases ('dev server masquerading as production' and 'is my fix deployed yet'). This makes the appropriate usage very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_eventBIdempotentInspect
Update an event / task list (name, description, team_mode, multi_instance, timer_mode). team_mode and multi_instance cannot both be true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| list_id | Yes | Task list (event) ID | |
| team_mode | No | Team mode — shared completions | |
| timer_mode | No | Timer mode (auto or manual) | |
| description | No | New description | |
| multi_instance | No | Multi-instance — each worker gets isolated copy | |
| assigned_worker_ids | No | Worker UUIDs to assign to this event (additive — workers not named are left alone). Each gets a personal tap-to-open link. Note: a worker holds one event assignment per project — assigning moves them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This directly contradicts the annotations: readOnlyHint is true, yet the description says 'Update an event / task list', which is a mutation. destructiveHint: false does not resolve the contradiction, and no side effects or error behavior are disclosed. This is a severe transparency failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no filler. The action and resource come first, and the critical constraint is isolated as a clearly readable second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core update semantics are stated and the schema covers the parameters, but no output behavior is described and there is no indication of what happens on a partial update or when the team_mode/multi_instance invariant is violated. The contradictory readOnlyHint annotation further weakens the overall context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents every parameter. The description adds genuine value by stating the non-obvious invariant that team_mode and multi_instance cannot both be true, which is not present in the schema. It also reinforces which fields are updatable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update an event / task list', and lists the precise editable fields. This distinguishes it from create/delete/get/list event tools and clarifies the domain vocabulary that an 'event' is a task list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not explain when to choose update_event over create_event, delete_event, or other update_* siblings. It provides no prerequisites or exclusion conditions; the only conditional note is a parameter compatibility constraint, not tool-selection guidance. Usage is only implied by the word 'Update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_invoiceBIdempotentInspect
Update an invoice: mark it paid (records paid_at), overdue, cancelled, or edit client details / notes / due date.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| status | No | ||
| paid_at | No | ISO timestamp (default now) when status = paid | |
| due_date | No | ||
| invoice_id | Yes | ||
| client_name | No | ||
| client_email | No | ||
| client_phone | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly=false, idempotent=true, and destructive=false, so the bar for additional behavioral disclosure is lower. The description adds useful context by noting that marking an invoice paid records paid_at, but it does not explain side effects of other status changes or what happens to existing values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. The core action and the main update categories are front-loaded, and every clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter update tool with no output schema and minimal parameter documentation, this description is too thin. It does not state what the tool returns, whether updates merge or overwrite, which fields are required, or how status transitions behave beyond paid_at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, so the description must compensate for 7 undocumented parameters. It names the updatable fields at a high level and clarifies that paid_at relates to the paid status, but it does not explain the status enum values, required invoice_id semantics, or formatting expectations for due_date and client fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('update') and resource ('an invoice'), then enumerates the concrete outcomes: marking it paid, overdue, cancelled, or editing client details, notes, and due date. This clearly distinguishes it from siblings like tascan_create_invoice and tascan_list_invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the listed update scenarios but provides no explicit guidance on when to use this tool versus alternatives. It does not mention that tascan_create_invoice should be used for new invoices or that read-only tools should be used for inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_projectCIdempotentInspect
Update a project (name, location, status, dates)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| status | No | Status | |
| end_date | No | End date (ISO) | |
| location | No | New location | |
| project_id | Yes | Project ID | |
| start_date | No | Start date (ISO) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is known. However, the description adds no extra behavioral context (e.g., partial update semantics, whether missing fields retain their values, or return behavior).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the verb and resource. Every word adds value, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite comprehensive schema coverage, the description omits important usage context such as whether only provided fields are updated, how it behaves relative to create_project, and what the tool returns (no output schema). Annotations help but do not fully compensate for the lack of behavioral guidance in a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with meaningful descriptions for all six parameters. The description lists a subset of these fields but does not add new information 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as updating a project and lists the updatable fields (name, location, status, dates). This distinguishes it from sibling update tools like update_task or update_event by resource type, though it does not explicitly contrast with alternatives such as create_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., existing project), nor does it differentiate from create_project or delete_project. The usage is only implied by the verb 'update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_subtaskCIdempotentInspect
Update a subtask (title, description, response_type, response_config, requires_photo, sort_order).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| sort_order | No | ||
| subtask_id | Yes | Subtask ID | |
| description | No | ||
| response_type | No | "link" = the worker submits a URL. "url" = the worker visits a preset URL and confirms. "file" = the worker uploads a file. | |
| requires_photo | No | ||
| response_config | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false, destructive=false, and idempotent=true, and the description does not contradict them. However, the description adds no behavioral context beyond the field list; in particular, it does not state whether omitted optional fields are preserved, how updates affect the parent task, or what response_config validation is applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the verb and resource front-loaded. It contains no filler and efficiently lists the updatable fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, a nested response_config object, low schema coverage, and no output schema, a one-sentence field list is not sufficient. Missing usage semantics, response_config details, and update behavior on omitted fields leave an agent under-equipped to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, with only subtask_id and response_type documented. The tool description lists parameter names but adds no meaning for response_config, sort_order, title, description, or requires_photo, and does not explain the response_config object structure or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Update a subtask') and enumerates the exact updatable fields, so it is clear what this tool does. It does not explicitly contrast with sibling tools such as tascan_update_task or tascan_complete_subtask, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this over tascan_update_task, tascan_complete_subtask, or tascan_delete_subtask, and no prerequisites such as an existing subtask or allowed status are mentioned. The usage is only implied by the verb and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_taskAIdempotentInspect
Update a task (title, description, response_type, flags, sort_order). A task that sits in an AI agent inbox is agent input (the runner executes title + description), so ANY edit to it needs the agent:dispatch permission — agent:dispatch:code when the task is or becomes CODE:/SHELL:.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title | |
| task_id | Yes | Task ID | |
| sort_order | No | Sort position | |
| assigned_to | No | Worker to assign this task to — pass the worker UUID (validated against your org and stored as the worker's name, which is how the worker portal matches "my tasks"). A plain name string is also accepted as-is. Pass null to clear. | |
| description | No | New description | |
| response_type | No | See tascan_add_tasks for guidance. "text" for info collection, "photo" for visual proof, "checkbox" for yes/no only, "link" for the worker submitting a URL, "url" for the worker visiting a preset URL and confirming, "file" for the worker uploading a file. | |
| requires_photo | No | Require photo | |
| response_config | No | Response configuration. For "choice": {options: [...]}. See tascan_add_tasks. | |
| required_equipment | No | Equipment this task depends on (free text) | |
| is_safety_checkpoint | No | Safety-critical flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by explaining that an agent-inbox task's title and description are executed by a runner and that any edit requires agent:dispatch permissions, with a special code-level permission for CODE:/SHELL: tasks. This adds meaningful behavioral context that annotations do not cover, and there is no contradiction with the idempotentHint=true or destructiveHint=false annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action and fields, and it packs the crucial permission context into the second sentence. The inclusion of 'flags' is a minor accuracy issue, but overall the text is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 10 parameters and nested objects, the description provides essential permission context but does not describe return values, error behavior, or the effect of unmentioned fields. It is adequate for basic selection and invocation, but not fully complete for an agent executing this tool in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description lists some editable fields but does not add meaningful semantics beyond the schema, and it references 'flags,' which is not a parameter in the schema, slightly reducing the value of its parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb and resource ('Update a task') and lists several editable fields, which distinguishes it from sibling tools like tascan_delete_task and tascan_update_subtask. However, it references 'flags' even though no such parameter exists in the input schema, and it omits other updatable fields like assigned_to, so the purpose is clear but slightly imprecise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides important context about when extra permission is required, specifically for tasks sitting in an AI agent inbox, and explains the code-related permission variant. It does not name alternatives or explicitly state when to prefer a different tool, so usage guidance is present but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_workerAIdempotentInspect
Update a worker profile (name, phone, email)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name | |
| No | New email | ||
| phone | No | New phone | |
| worker_id | Yes | Worker ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation (readOnlyHint=false), idempotency (idempotentHint=true), and non-destructive nature (destructiveHint=false). The description adds no extra behavioral context beyond restating the update action, which is consistent. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is direct and free of redundancy: 'Update a worker profile (name, phone, email)'. Every word contributes to the meaning, and the key fields are front-loaded in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple CRUD update tool with no output schema and no nested objects, the description combined with schema/annotations is largely sufficient. It clearly identifies the resource and the updatable fields. Minor gap: it doesn't mention whether the worker must exist or what the response format is, but these are not critical for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter coverage with clear descriptions (e.g., 'New name', 'New email', 'Worker ID'). The description merely lists fields that are already documented, adding no additional semantic meaning. Baseline of 3 applies when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), resource ('worker profile'), and lists the fields involved ('name, phone, email'). This clearly distinguishes it from sibling tools like tascan_create_worker or tascan_update_project, which target different resources or actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to modify a worker's details, use this tool. However, it provides no explicit exclusions or comparisons to alternatives (e.g., when to use create_worker instead of update_worker). The context is clear but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_update_zoneAIdempotentInspect
Update a geofenced zone — move the center, resize the radius, change the routing target, toggle zone-lock, or deactivate it (is_active=false).
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lng | No | ||
| kind | No | ||
| name | No | ||
| polygon | No | Replace geometry with a polygon ([[lat,lng],...], ≥3 vertices); pass null to revert to a circle | |
| zone_id | Yes | Zone ID | |
| radius_m | No | ||
| is_active | No | ||
| notify_email | No | ||
| required_ppe | No | ||
| task_list_id | No | ||
| auto_clock_in | No | Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan. | |
| enter_message | No | ||
| auto_clock_out | No | Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan. | |
| notify_on_exit | No | ||
| alert_on_breach | No | ||
| enforce_on_list | No | ||
| notify_on_enter | No | ||
| ppe_photo_required | No | ||
| sms_worker_on_exit | No | ||
| task_list_on_enter | No | ||
| sms_worker_on_enter | No |
TDQS
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 covered. The description adds specific behaviors like 'deactivate it (is_active=false)' and the ability to revert polygon to a circle, which go beyond the annotations. However, it does not disclose side effects beyond the listed updates, such as notification implications or validation behavior. Given the annotations, the added context is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the primary purpose and lists the key update capabilities. There is no redundancy or filler; every phrase contributes to understanding the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 22 parameters, many lacking schema descriptions, and no output schema, the description is insufficient for an agent to confidently use the tool correctly. It omits critical context for the majority of parameters (e.g., enforcement options, notifications, task list assignments) and does not describe the expected return value or side effects. The description provides only a high-level overview, leaving significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18%, so the description carries the burden of explaining parameters. It mentions a few (center, radius, routing target, zone-lock, is_active) but does not systematically cover the remaining 20+ parameters like notify_email, required_ppe, enter_message, or auto_clock_in. The schema descriptions for auto_clock_in/out add context, but most parameters remain unexplained in both schema and description, leaving agents to guess their meaning from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('update') and resource ('geofenced zone'), and enumerates the concrete operations it supports (move center, resize radius, change routing target, toggle zone-lock, deactivate). It clearly differentiates from create_zone and other update tools via the resource type and action list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying an existing zone, but it does not explicitly state when to use this over alternatives (e.g., tascan_create_zone) or mention any prerequisites such as requiring an existing zone_id. The context is inferable from the tool name and sibling list, but there is no explicit guidance or exclusion of non-update scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_verify_receiptAIdempotentInspect
Independently verify a TaScan Action Receipt JWS (protocol 6.8, POST /receipts/verify): size, envelope, signature, issuer origin, key lifecycle, hashing profile, value semantics, schema and chain check, with an online issued/serial check for the reference issuer. Public route: no TaScan scope is required by the API itself, though this MCP connection still needs some valid key to place any tools/call. Works for both the full and the public export profile. Keys come only from the issuer's own well-known key document (https://app.tascan.io/.well-known/tascan-receipt-keys.json for the reference issuer, or the equivalent well-known path for a foreign one) — this tool never supplies keys itself. Never verifies locally — always calls the reference verifier.
| Name | Required | Description | Default |
|---|---|---|---|
| jws | Yes | The compact JWS to verify (from tascan_get_receipt's output, or any TaScan-format receipt). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds materially beyond the annotations: it explicitly states 'Never verifies locally — always calls the reference verifier', explains the public-route auth requirement, and discloses that keys are never supplied by the tool and come only from the issuer's well-known document. This is exactly the behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated; every sentence carries useful information. It front-loads the core action and endpoint before adding authentication, key-source, and network-behavior details. Slightly long, but justified by the complexity of the verification process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of JWS verification, the description is remarkably complete: it covers protocol, endpoint, scope requirements, key sourcing, export profiles, and the fact that verification is always remote. The only notable omission is the shape of the response, especially since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter jws has a rich schema description already, and schema coverage is 100%. The tool description further clarifies that the key source is the issuer's well-known document and that both full and public export profiles are accepted, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Independently verify a TaScan Action Receipt JWS', and further specifies protocol 6.8 and the exact endpoint. This clearly distinguishes it from sibling tools like tascan_get_receipt, tascan_request_verification, and tascan_list_verifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context on when this tool is appropriate: for verifying receipts from tascan_get_receipt output or any TaScan-format receipt, and it notes it works for both full and public export profiles. It does not explicitly name alternative tools or state when not to use it, but the usage conditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tascan_zone_complianceARead-onlyIdempotentInspect
Hazard-zone compliance audit (OSHA / insurance): every zone crossing, PPE checkpoint verdict (complied / failed with what was missing / skipped), and breach, plus injury reports cross-referenced with the worker's last PPE checkpoint before the injury. Scope by project or zone, optionally by worker and date range. Same rows the printable Evidence Pack shows.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ISO date/time lower bound | |
| until | No | ISO date/time upper bound | |
| zone_id | No | ||
| worker_id | No | ||
| project_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail beyond that: the output includes violated/failed/skipped verdicts, breaches, and injury reports cross-referenced to the worker's last PPE checkpoint. It also clarifies output equivalence to the Evidence Pack. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The purpose is front-loaded, followed by output contents, scoping options, and a reference to the Evidence Pack. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description enumerates the key returned data categories and ties them to the printable Evidence Pack, which is sufficient for an agent to understand what it will get. It does not mention pagination or default date-range behavior, but with all parameters optional and read-only annotations, the definition is still reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, with zone_id, worker_id, and project_id undocumented. The description compensates by grouping all five parameters into meaningful scoping terms: project or zone, worker, and date range. It adds optionality and range semantics not present in the schema, though it does not explain behavior when multiple scope filters are combined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('compliance audit') and enumerates the exact contents: zone crossings, PPE checkpoint verdicts, breaches, and cross-referenced injury reports. This clearly distinguishes it from generic sibling tools like tascan_list_zones or tascan_get_scan_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use context ('OSHA / insurance' audits, 'printable Evidence Pack') and explains the scoping options ('by project or zone, optionally by worker and date range'). It does not explicitly name sibling alternatives or exclusion criteria, but the intended use is clear enough to guide selection.
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 tool update
- Changed
tascan_create_cycle8 fields changed- added
Input schema / properties / artifact_bytesAdded value: +{ + "additionalProperties": { + "type": "integer" + }, + "description": "Optional {path: bytes} for artifact_paths — the byte length of each file in your checkout. The API cannot read the repo, so artifact_over_cap (262144-byte reviewable cap per file) is only checked for paths you give a byte count; every other path is reported under unchecked (artifact_over_cap, unchecked_at_api) — never guessed from an earlier stored bundle. Same on dry_run and the real create.", + "type": "object" +} - added
Input schema / properties / dry_runAdded value: +{ + "description": "true = PREFLIGHT only: the API validates the whole dispatch and returns every problem at once (code, path, detail) plus the unchecked[] list (what only the executor / the RPC can decide) and warnings[] — nothing is queued, no idempotency key is consumed. Recommended before every real create. Default false.", + "type": "boolean" +} - changed
Input schema / properties / idempotency_key / descriptionPrevious value: -"Optional caller key (≤ 200 chars). The same key within 24 h returns the existing cycle (created=false) instead of a duplicate dispatch."New value: +"Optional caller key (≤ 200 chars). The same key within 24 h is refused as idempotency_replay (nothing queued) and printed as DUPLICATE with the existing root_id — safe to retry after a lost answer." - added
Input schema / properties / kindAdded value: +{ + "description": "Cycle kind (default build). review_only = no model builds anything: T1 is \"CAPTURE: <title>\", a local-executor task that stores artifact_paths from the repo at HEAD as the bundle (same build_ref, size cap and scope check as a CODE build) and completes in seconds; T2 REVIEW then reviews that bundle. Use it to get an independent review of documents or of code already committed by hand. Stored as coord.kind_of_cycle on the root.", + "enum": [ + "build", + "review_only" + ], + "type": "string" +} - added
Input schema / properties / revisable_byAdded value: +{ + "description": "review_only cycles only — who fixes a revise verdict. dispatcher (default): the cycle parks on revise as today and you re-dispatch. executor: a revise spawns a revision CAPTURE task (up to max_revisions) that is born blocked on a question task \"Revise the documents, then answer to release\" addressed to you — fix the files in the repo, answer that question (tascan_post_message kind=answer), and the capture re-runs on the fixed HEAD. Build cycles always revise through the executor regardless of this field.", + "enum": [ + "dispatcher", + "executor" + ], + "type": "string" +} - changed
Input schema / properties / task_type / descriptionPrevious value: -"T1 prefix (default CODE)."New value: +"T1 prefix (default CODE). CAPTURE is never caller-settable: kind=review_only makes T1 \"CAPTURE:\" itself. With kind=review_only the value is sent as given — CODE is accepted (T1 is still CAPTURE), SHELL / RESEARCH are refused by the API as kind_invalid." - changed
Input schema / properties / task_type / enumPrevious value: -[ - "CODE", - "SHELL" -]New value: +[ + "CODE", + "SHELL", + "RESEARCH" +] - changed
Input schema / properties / title / descriptionPrevious value: -"Short human title (1-200 chars). T1 becomes \"CODE: <title>\", T2 \"REVIEW: <title>\"."New value: +"Short human title (1-200 chars). T1 becomes \"CODE: <title>\" (\"CAPTURE: <title>\" when kind=review_only), T2 \"REVIEW: <title>\"."
10 tool updates
- Added
tascan_dispatcher_action - Added
tascan_evidence_policy - Added
tascan_get_build_diff - Added
tascan_get_task_trail - Added
tascan_list_cycles - Added
tascan_list_verifications - Added
tascan_org_analytics - Added
tascan_post_evidence - Added
tascan_request_verification - Added
tascan_verify_receipt
5 tool updates
- Changed
tascan_add_subtasks2 fields changed- changed
Input schema / properties / subtasks / items / properties / response_type / descriptionPrevious value: -"Default checkbox. \"number\" for per-set values. \"choice\" needs response_config.options."New value: +"Default checkbox. \"number\" for per-set values. \"choice\" needs response_config.options. \"link\" = the worker submits a URL. \"url\" = the worker visits a preset URL and confirms. \"file\" = the worker uploads a file." - changed
Input schema / properties / subtasks / items / properties / response_type / enumPrevious value: -[ - "checkbox", - "number", - "text", - "choice" -]New value: +[ + "checkbox", + "number", + "text", + "choice", + "link", + "url", + "file" +]
- Changed
tascan_add_tasks4 fields changed- changed
Input schema / properties / tasks / items / properties / response_type / descriptionPrevious value: -"CRITICAL: \"text\" for names, phones, emails, notes, addresses, any free-form input. \"photo\" for tasks needing photographic proof (inspections, serial numbers, packed cases). \"checkbox\" ONLY for simple yes/no confirmations. \"number\" for numeric values. \"date\" for dates. \"choice\" for multiple-choice (needs response_config.options). Most info-collection tasks should be \"text\", most verification tasks should be \"photo\"."New value: +"CRITICAL: \"text\" for names, phones, emails, notes, addresses, any free-form input. \"photo\" for tasks needing photographic proof (inspections, serial numbers, packed cases). \"checkbox\" ONLY for simple yes/no confirmations. \"number\" for numeric values. \"date\" for dates. \"choice\" for multiple-choice (needs response_config.options). \"link\" = the worker SUBMITS a URL (auto-verified by an http probe). \"url\" = the worker VISITS a preset URL and confirms. \"file\" = the worker uploads a file. Most info-collection tasks should be \"text\", most verification tasks should be \"photo\"." - changed
Input schema / properties / tasks / items / properties / response_type / enumPrevious value: -[ - "checkbox", - "photo", - "text", - "number", - "date", - "choice" -]New value: +[ + "checkbox", + "photo", + "text", + "number", + "date", + "choice", + "link", + "url", + "file" +] - changed
Input schema / properties / tasks / items / properties / subtasks / items / properties / response_type / descriptionPrevious value: -"Typed subtask response. \"number\" for per-set values (reps/weight), \"text\" for notes, \"choice\" needs response_config.options. Default checkbox."New value: +"Typed subtask response. \"number\" for per-set values (reps/weight), \"text\" for notes, \"choice\" needs response_config.options. \"link\" = the worker submits a URL. \"url\" = the worker visits a preset URL and confirms. \"file\" = the worker uploads a file. Default checkbox." - changed
Input schema / properties / tasks / items / properties / subtasks / items / properties / response_type / enumPrevious value: -[ - "checkbox", - "number", - "text", - "choice" -]New value: +[ + "checkbox", + "number", + "text", + "choice", + "link", + "url", + "file" +]
- Changed
tascan_reply_with_list2 fields changed- changed
Input schema / properties / tasks / items / properties / response_type / descriptionPrevious value: -"\"date\" for scheduling windows, \"text\" for info requests, \"choice\" needs response_config.options"New value: +"\"date\" for scheduling windows, \"text\" for info requests, \"choice\" needs response_config.options. \"link\" = the worker submits a URL. \"url\" = the worker visits a preset URL and confirms. \"file\" = the worker uploads a file." - changed
Input schema / properties / tasks / items / properties / response_type / enumPrevious value: -[ - "checkbox", - "text", - "number", - "date", - "choice", - "photo" -]New value: +[ + "checkbox", + "text", + "number", + "date", + "choice", + "photo", + "link", + "url", + "file" +]
- Changed
tascan_update_subtask2 fields changed- added
Input schema / properties / response_type / descriptionAdded value: +"\"link\" = the worker submits a URL. \"url\" = the worker visits a preset URL and confirms. \"file\" = the worker uploads a file." - changed
Input schema / properties / response_type / enumPrevious value: -[ - "checkbox", - "number", - "text", - "choice" -]New value: +[ + "checkbox", + "number", + "text", + "choice", + "link", + "url", + "file" +]
- Changed
tascan_update_task2 fields changed- changed
Input schema / properties / response_type / descriptionPrevious value: -"See tascan_add_tasks for guidance. \"text\" for info collection, \"photo\" for visual proof, \"checkbox\" for yes/no only."New value: +"See tascan_add_tasks for guidance. \"text\" for info collection, \"photo\" for visual proof, \"checkbox\" for yes/no only, \"link\" for the worker submitting a URL, \"url\" for the worker visiting a preset URL and confirming, \"file\" for the worker uploading a file." - changed
Input schema / properties / response_type / enumPrevious value: -[ - "checkbox", - "photo", - "text", - "number", - "date", - "choice" -]New value: +[ + "checkbox", + "photo", + "text", + "number", + "date", + "choice", + "link", + "url", + "file" +]
1 tool update
- Added
tascan_record_integration
2 tool updates
- Changed
tascan_create_zone2 fields changed- changed
Input schema / properties / auto_clock_in / descriptionPrevious value: -"Entering the zone writes a shift_start clock-in event"New value: +"Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan." - changed
Input schema / properties / auto_clock_out / descriptionPrevious value: -"Leaving the zone writes a shift_end clock-out event"New value: +"Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan."
- Changed
tascan_update_zone2 fields changed- added
Input schema / properties / auto_clock_in / descriptionAdded value: +"Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan." - added
Input schema / properties / auto_clock_out / descriptionAdded value: +"Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/QR scan."
1 tool update
- Changed
tascan_create_cycle2 fields changed- changed
Input schema / properties / review_brief / descriptionPrevious value: -"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref."New value: +"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref. Still required even when `reviews[]` is given (kept as T2's legacy description text)." - added
Input schema / properties / reviewsAdded value: +{ + "description": "Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. \"code-correctness\", \"security\", \"ui-ux\"), brief: 1-8000 chars of cycle-specific context for that lens, provider: \"openai\"|\"anthropic\"|\"gemini\", model?: 1-100 chars, blocking?: boolean (default true — at least one entry must be blocking or the whole array is refused), max_tool_calls?: integer (openai only)}. One REVIEW: task mints per lens, all blocked on T1; the Decision task mints only once every blocking lens has approved the same build. Omit for today's single OpenAI code review.", + "items": { + "properties": { + "blocking": { + "description": "Default true. At least one entry in the array must be blocking.", + "type": "boolean" + }, + "brief": { + "description": "Cycle-specific context for this lens (1-8000 chars).", + "type": "string" + }, + "lens": { + "description": "Slug, ^[a-z][a-z0-9-]{0,39}$, unique in the array.", + "type": "string" + }, + "max_tool_calls": { + "description": "Optional, provider openai only.", + "type": "integer" + }, + "model": { + "description": "Optional, 1-100 chars.", + "type": "string" + }, + "provider": { + "enum": [ + "openai", + "anthropic", + "gemini" + ], + "type": "string" + } + }, + "required": [ + "lens", + "brief", + "provider" + ], + "type": "object" + }, + "type": "array" +}
1 tool update
- Changed
tascan_create_cycle2 fields changed- changed
Input schema / properties / review_brief / descriptionPrevious value: -"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref. Still required even when `reviews[]` is given (kept as T2's legacy description text)."New value: +"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref." - removed
Input schema / properties / reviewsRemoved value: -{ - "description": "Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. \"code-correctness\", \"security\", \"ui-ux\"), brief: 1-8000 chars of cycle-specific context for that lens, provider: \"openai\"|\"anthropic\"|\"gemini\", model?: 1-100 chars, blocking?: boolean (default true — at least one entry must be blocking or the whole array is refused), max_tool_calls?: integer (openai only)}. One REVIEW: task mints per lens, all blocked on T1; the Decision task mints only once every blocking lens has approved the same build. Omit for today's single OpenAI code review.", - "items": { - "properties": { - "blocking": { - "description": "Default true. At least one entry in the array must be blocking.", - "type": "boolean" - }, - "brief": { - "description": "Cycle-specific context for this lens (1-8000 chars).", - "type": "string" - }, - "lens": { - "description": "Slug, ^[a-z][a-z0-9-]{0,39}$, unique in the array.", - "type": "string" - }, - "max_tool_calls": { - "description": "Optional, provider openai only.", - "type": "integer" - }, - "model": { - "description": "Optional, 1-100 chars.", - "type": "string" - }, - "provider": { - "enum": [ - "openai", - "anthropic", - "gemini" - ], - "type": "string" - } - }, - "required": [ - "lens", - "brief", - "provider" - ], - "type": "object" - }, - "type": "array" -}
1 tool update
- Changed
tascan_create_cycle2 fields changed- changed
Input schema / properties / review_brief / descriptionPrevious value: -"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref."New value: +"The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or needs_input as strict JSON bound to the build_ref. Still required even when `reviews[]` is given (kept as T2's legacy description text)." - added
Input schema / properties / reviewsAdded value: +{ + "description": "Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. \"code-correctness\", \"security\", \"ui-ux\"), brief: 1-8000 chars of cycle-specific context for that lens, provider: \"openai\"|\"anthropic\"|\"gemini\", model?: 1-100 chars, blocking?: boolean (default true — at least one entry must be blocking or the whole array is refused), max_tool_calls?: integer (openai only)}. One REVIEW: task mints per lens, all blocked on T1; the Decision task mints only once every blocking lens has approved the same build. Omit for today's single OpenAI code review.", + "items": { + "properties": { + "blocking": { + "description": "Default true. At least one entry in the array must be blocking.", + "type": "boolean" + }, + "brief": { + "description": "Cycle-specific context for this lens (1-8000 chars).", + "type": "string" + }, + "lens": { + "description": "Slug, ^[a-z][a-z0-9-]{0,39}$, unique in the array.", + "type": "string" + }, + "max_tool_calls": { + "description": "Optional, provider openai only.", + "type": "integer" + }, + "model": { + "description": "Optional, 1-100 chars.", + "type": "string" + }, + "provider": { + "enum": [ + "openai", + "anthropic", + "gemini" + ], + "type": "string" + } + }, + "required": [ + "lens", + "brief", + "provider" + ], + "type": "object" + }, + "type": "array" +}
1 tool update
- Added
tascan_project_digest
1 tool update
- Changed
tascan_create_cycle1 field changed- added
Input schema / properties / repoAdded value: +{ + "description": "Which codebase on the executor the build runs in — an alias from the executor's allowlist (tascan-agent/repos.json), e.g. \"tascan\" (default), \"merchskipper\", \"inkskipper\", \"rangerlizzy\", \"cardvault\", \"take1\", \"fitcheck\", \"safegrid\", \"eternity\", \"maniacs\". artifact_paths are relative to that repo. An unknown alias is refused by the executor (repo_unknown) and the cycle parks.", + "type": "string" +}
3 tool updates
- Added
tascan_cancel_scheduled_sms - Added
tascan_list_scheduled_sms - Added
tascan_schedule_sms
6 tool updates
- Added
tascan_create_cycle - Added
tascan_get_build - Added
tascan_get_build_file - Added
tascan_get_cycle_report - Changed
tascan_get_receipt1 field changed- changed
Input schema / properties / profile / descriptionPrevious value: -"full (default) = the org view with the unsigned private block; public = the separately signed public export profile: no raw org id, worker id, run id or trace id (each is a 16-hex id_hash), plus a binding to the full receipt it was derived from - the form to hand to anyone outside the org"New value: +"full (default) = the org view with the unsigned private block; public = the separately signed public export profile: no raw org, list, project, worker, run or trace id (each is a 16-hex id_hash), no storage locators, plus a binding to the full receipt it was derived from - the form to hand to anyone outside the org"
- Added
tascan_post_message
1 tool update
- Changed
tascan_get_receipt1 field changed- added
Input schema / properties / profileAdded value: +{ + "description": "full (default) = the org view with the unsigned private block; public = the separately signed public export profile: no raw org id, worker id, run id or trace id (each is a 16-hex id_hash), plus a binding to the full receipt it was derived from - the form to hand to anyone outside the org", + "enum": [ + "full", + "public" + ], + "type": "string" +}
2 tool updates
- Changed
tascan_dispatch_to_agent3 fields changed- changed
Input schema / properties / agent / descriptionPrevious value: -"Agent ID or name to dispatch to (default: claude-code-local). Use tascan_list_agents to see options."New value: +"Agent ID or name to dispatch to (default: claude-code-local). Use tascan_list_agents to see options. An unknown agent is an error, never a silent fallback." - changed
Input schema / properties / priority / descriptionPrevious value: -"Priority level (default: normal)"New value: +"Priority level (default: normal). The urgent marker is placed AFTER the routing prefix so it never breaks routing." - changed
Input schema / properties / task / descriptionPrevious value: -"The task description. Prefix with CODE: SHELL: RESEARCH: WRITE: PLAN: for routing, or just plain text."New value: +"The full task text. START it with CODE: SHELL: PLAN: MCP: RESEARCH: WRITE: or REVIEW: for routing (prefix-only — nothing may precede it), or leave it unprefixed (DEFAULT). The whole text is stored in the task description; the first 140 chars become the title."
- Added
tascan_get_receipt
Related MCP Connectors
- sendifaiOAuthcom.sendifai
335 MCP tools, 75 playbooks. AI-native CRM, email/SMS, events, OAuth.
184 MCP tools for field-service CRM, scheduling and double-entry accounting. Hosted; BYO agent.
23 MCP tools: compliance, verification, messaging, booking, US contracts. 15 need no key.
337 MCP tools with x402 micropayments on Base. $0.001/call. No signup, no API keys.
Related MCP Servers
- AlicenseAqualityDmaintenanceA unified developer toolkit for AI-assisted workflows. Task timing, doc drift detection, env validation, secret scanning, port conflict resolution, AI context generation, and license auditing — one MCP server, one install.73MIT
- AlicenseNot gradedqualityCmaintenance36 enterprise MCP tools for AWS security, infrastructure generation, AI workflows, and agent governance. IAM validation, MFA compliance, CloudFormation/SAM generation, DynamoDB design, OAuth validation, vector embeddings, error analysis, data lake readiness, 12 ACI governance tools for AI agent safety, and 4 local interview tools.38 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables AI-assisted project management governance across 8 domains including projects, RAID, scope, people, time, cost, meetings, and administration through 51 MCP tools.-
- FlicenseAqualityAmaintenanceCross-OEM industrial machine intelligence. Normalizes telemetry across 16 manufacturer families (Fanuc, Siemens, Haas, DMG Mori, Mazak), enables plain-English operational automation, and produces tamper-evident work records. 14 MCP tools.14-
Glama MCP Gateway
Add one secure layer between your agents and this server.