Skip to main content
Glama

Server Details

36 MCP tools for projects, tasks, workers, QR/NFC tags, and AI remediation. Task. Scan. Done.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 77 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
snowbikemike/tascan-mcp
GitHub Stars
1
Server Listing
TaScan MCP Server
ChatGPT
–
Claude
–

TDQS

B3.4/5.0

Scored across 142 tools

Disambiguation3/5

Most tools target distinct resources or lifecycle steps, and the long descriptions often clarify boundaries. However, there are several clusters with real overlap or confusing proximity: report generation/minting/reading, SMS/nudge/text/invite lanes, and AI dispatch via dispatch_to_agent, dispatch_instruction, create_cycle, and create_fanout. An agent can recover by reading descriptions, but misselection risk is substantial at this scale.

Naming Consistency4/5

All tools share the tascan_ prefix and snake_case, which gives a strong predictable surface. Most names are verb_noun or verb_object, but some deviate into noun phrases or workflow labels such as tascan_today, tascan_find, tascan_quickstart, tascan_server_info, tascan_issues_inbox, and tascan_project_digest.

Tool Count1/5

At 142 tools, the surface is far beyond a well-scoped MCP toolset and well past the 50+ threshold for extreme mismatch. Even if each tool earns a place in a large platform, exposing this many operations to an agent creates severe selection and context burden.

Completeness4/5

Coverage is unusually broad: CRUD and lifecycle operations span projects, events, tasks, subtasks, workers, sites, zones, issues, invoices, templates, access, SMS, QR codes, evidence, receipts, and coordination cycles. Some capabilities are intentionally portal-only, such as org editing, connector management, and device registration, leaving minor gaps but no obvious core dead ends.

Available Tools

142 tools
tascan_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.

NameRequiredDescriptionDefault
task_idYesParent task ID
subtasksYesArray of subtasks to create

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
tasksYesArray of tasks to create
list_idYesTask list (event) ID
idempotency_keyNoB1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response instead of creating the tasks twice.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false), and the description adds genuinely non-structured context: a permission gate with a specific refusal outcome and a conditional scope rule for CODE:/SHELL: titles. It does not explain partial-failure behavior for bulk creation, which is the main remaining behavioral unknown.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence and each following sentence carries routing or permission information. The response_type paragraph is verbose and overlaps the enum description, but nothing is purely filler.

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

Completeness3/5

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

For a bulk mutation with no output schema, the description never says what a successful call returns (created task IDs? per-item errors?) or how partial failures in the tasks array are handled. Permissions and response_type are well covered, but that gap is material for retry logic alongside an idempotency_key.

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

Parameters3/5

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

Schema coverage is 100% and the schema's own response_type description already enumerates text/photo/checkbox with the same examples, so the description's "IMPORTANT: Set response_type correctly" block largely restates structured data rather than adding new semantics. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ("Add one or more tasks to an event (task list)") and adds scope via "Supports bulk creation." It differentiates from the dispatch sibling by name, but does not distinguish itself from tascan_add_subtasks, which an agent could easily confuse with bulk task creation.

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

Usage Guidelines4/5

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

Gives clear routing guidance ("To dispatch tasks to an AI agent use tascan_dispatch_to_agent instead") plus a precondition: writing to an agent inbox requires agent:dispatch / agent:dispatch:code and the call is refused otherwise. Missing only guidance versus tascan_add_subtasks and tascan_create_event.

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

tascan_analyze_issueA
Idempotent
Inspect

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

NameRequiredDescriptionDefault
issue_idYesIssue ID to analyze
server_side_aiNoIf true, the server calls Anthropic API directly for AI analysis (default: false — returns raw data for MCP client to analyze)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_append_chat_messagesAInspect

Append 1 or 2 text turns (each a role, user or assistant, and its content) to a chat thread of an admin of your org (POST /chat/threads/:id/messages), the way the portal helper saves each exchange: each content is text of at most 32 KB with no data: URL; the thread's message_count and preview update and GET /chat/threads/:id reads them back in order. A receipted ledger event (the content hashed) is written first. Write tier.

NameRequiredDescriptionDefault
messagesYes1-2 turns in order, usually the user message then the assistant reply
thread_idYesThe chat thread (tascan_list_chat_threads / tascan_save_chat_thread)

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing hard limits (content ≤32 KB, no data: URL, only text turns), observable side effects (message_count and preview update, GET reads back in order), and an audit guarantee (a receipted ledger event with hashed content is written first). None of this is derivable from the schema or the write-tier hints, and it does not conflict with readOnlyHint=false / idempotentHint=false / destructiveHint=false.

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

Conciseness4/5

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

The action is front-loaded and the dense single sentence packs the endpoint, constraints, side effects, and receipt without filler. The colon/semicolon chaining makes it harder to scan than it needs to be, and 'the way the portal helper saves each exchange' is slightly ornamental, but nothing is wasted.

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

Completeness4/5

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

With no output schema, the description adequately covers what changes and how results are observed (message_count/preview, GET readback, ledger receipt), which is what an agent needs before writing. It leaves unstated whether the call returns the created message objects or ids, and it does not name the permission needed as an admin, so it is strong but not exhaustive.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds semantics the schema lacks by constraining content to plain text of at most 32 KB with no data: URL and by implying the 1-2 turn cap and ordering. It does not fully specify role ordering rules (e.g., whether a lone assistant turn is valid), so it stops short of a 5.

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

Purpose5/5

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

States a specific verb and resource (append 1-2 text turns to a chat thread) plus scope details (admin of your org, POST endpoint) that let an agent distinguish it from thread-creating (tascan_save_chat_thread), thread-listing, and thread-deleting siblings. The 'turns' framing and the reference to the portal helper make the intent unmistakable.

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

Usage Guidelines3/5

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

Usage is implied through 'the way the portal helper saves each exchange' and the thread_id pointer to tascan_list_chat_threads / tascan_save_chat_thread, so an agent can infer it persists an exchange into an existing thread. However, there is no explicit when-to-use statement or exclusion (e.g., do not use for a new thread, do not use for >2 turns), so the guidance remains inferential.

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

tascan_apply_qr_styleA
Idempotent
Inspect

Apply a saved QR look (qr_style_id, or null to clear) to a project, list, task or site (target + id: PUT on that item), or make it the default for a purpose (target purpose + purpose share, placard, asset, receipt or work_order: PUT /qr-styles/defaults). The look must be your org's. Write tier.

NameRequiredDescriptionDefault
idNo
targetYes
purposeNo
qr_style_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, closed-world behavior; the description adds useful behavioral context: org ownership constraint, null clearing, and write-tier classification. It does not add permission details or return behavior, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

Front-loads the core action and mode distinctions in one dense sentence, then adds two short constraints. Parenthetical endpoint details are compact and no sentence is wasted.

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

Completeness4/5

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

Covers both operational modes, clearing behavior, org ownership, and write-tier semantics for a tool with no output schema. Some schema gaps remain around conditional requiredness and return behavior, but the description is substantially complete.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates well by explaining qr_style_id null-clears, target+id for item assignment, and target purpose with purpose values. It still leaves id requiredness for non-purpose targets and exact purpose enum values implicit.

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

Purpose5/5

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

States a specific verb and resource: applying a saved QR look, with explicit distinction between item-level application and purpose-level defaulting. It also names the relevant targets, so the agent can distinguish it from save_qr_style, list_qr_styles, and generate_qr.

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

Usage Guidelines4/5

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

Gives clear usage contexts: project/list/task/site with id, or purpose with purpose values. It does not explicitly compare with sibling tools or state exclusions, but the target-based routing is concrete enough for correct selection.

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

tascan_apply_templateAInspect

Apply a pre-built template to a task list, adding all template tasks

NameRequiredDescriptionDefault
list_idYesTask list (event) ID
template_slugYesTemplate slug (e.g. "conference-load-in", "warehouse-receiving")

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
asset_idYesAsset ID (from tascan_register_asset or tascan_list_assets)
photo_urlYesPublic URL of the assessment photo
worker_nameNoWho took the photo (optional)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

With no output schema, the description carries the burden of explaining 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.

Parameters3/5

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

Schema description coverage is 100%, so all three parameters 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
issue_idYesIssue ID to auto-resolve

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
idYesThe scheduled_sms row id from tascan_schedule_sms / tascan_list_scheduled_sms

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_claim_runAInspect

Claim a fan-out seat task as a LOCAL subagent run (POST /runs/claim -> claim_agent_run(p_runner='local')). Only admitted when instance starts with ":" -- the seat's own coord.agent_id, set when the fan-out was created (tascan_create_fanout seats[i].runner='local'). Any other instance is refused, claimed false with reason seat_not_yours -- this tool never claims a seat that is not yours, and never claims a cloud (research) seat at all (refused not_routable). Never mints a completion or a receipt by itself -- claiming only opens the run; work happens after, and tascan_finish_run is what leaves the signed receipt. Requires agent:dispatch:code. A foreign or unknown task_id is 404, never 403 (S2: another org's task never even appears to exist).

NameRequiredDescriptionDefault
task_idYesThe seat task ID (UUID) -- from tascan_create_fanout's seats[] or tascan_get_fanout (view=status/report).
instanceYesYour claim identity, "<agent_id>:<anything>" -- e.g. "researcher-07:host-1234". Must start with the seat's own registered agent_id or the claim is refused seat_not_yours.
ttl_secondsNoOptional lease length in seconds (60-86400, default 1800). Extend it later with tascan_heartbeat_run instead of claiming a longer one up front.

TDQS

A4.6/5.0
Behavior5/5

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

Without this description, the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) would leave behavior opaque. The description fills the gap richly: it explains the admission check, the refusal reasons (seat_not_yours, not_routable), the 404-vs-403 security policy, the required permission (agent:dispatch:code), and the fact that it does not itself mint a receipt. This is exactly the context annotations cannot carry.

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

Conciseness4/5

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

The description is dense but well-structured, with the core claim operation and admission rule front-loaded, followed by refusal semantics and permission requirements. Every clause carries specific information. It is slightly long for a tool definition, but the density is justified by the non-obvious behavior being explained.

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

Completeness5/5

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

Given the tool's complexity—a state-mutating claim operation with strict identity and routing rules—the description covers entry criteria, failure modes, permissions, and the relationship to subsequent tools. No output schema exists, but the description clarifies that the tool 'opens the run' and that receipts come later, which is sufficient context for invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter clearly (agent_id prefix rule for 'instance', TTL range for 'ttl_seconds', source of task_id). The description reinforces the instance requirement but adds no syntax or format details beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Claim a fan-out seat task as a LOCAL subagent run') and immediately names the mechanism and sibling relationship ('POST /runs/claim -> claim_agent_run(p_runner='local')'). It distinguishes itself from adjacent tools like tascan_create_fanout and tascan_finish_run by describing exactly which phase of the workflow it occupies.

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

Usage Guidelines5/5

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

Explicit conditions for invocation are given: only admitted when the instance prefix matches the seat's coord.agent_id, never for cloud (research) seats. It also directs the reader to tascan_heartbeat_run for extending leases and tascan_finish_run for completion, so the agent knows what to use instead.

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

tascan_clone_projectAInspect

Duplicate a project's STRUCTURE (POST /projects/:id/clone): its task lists (not a work order's own lists), their tasks (never coordination cards) with response types, photo, safety and signature settings, subtasks, and attachments by reference, plus the location, dates, labor rules and report options. Nothing that happened is copied: no completions, issues, receipts, assignments or access settings. The copy gets the next project number and the name " (copy)" unless you pass one. All or nothing: the copy is one database transaction, so a failure leaves nothing behind. Write tier.

NameRequiredDescriptionDefault
nameNoName of the copy, 1-200 characters (default "<name> (copy)")
project_idYesThe project to copy

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only establish write/non-destructive/non-idempotent. The description goes well beyond: all-or-nothing single transaction with rollback semantics, automatic next project number, and default naming convention. These are behavioral facts the annotations cannot convey.

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

Conciseness4/5

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

Front-loaded with the core action and the copied/not-copied distinction, then the naming and transaction guarantees. The enumeration is dense but every clause carries distinct information; only the tier label at the end is marginal.

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

Completeness4/5

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

For a 2-parameter tool with a well-documented schema and no output schema, the description covers scope, side effects, defaults, and atomicity. It does not say what identifier or object the caller receives back, which would close the last gap.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the default naming and the fact the copy receives the next project number, though the name default is largely duplicated from the schema's own description.

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

Purpose5/5

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

States a specific verb ('Duplicate'), resource ('a project's STRUCTURE'), and endpoint, and immediately clarifies it copies structure rather than creating a fresh project. An agent can distinguish it from create_project or apply_template without opening either schema.

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

Usage Guidelines4/5

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

Explicit about what is and isn't copied ('task lists, not a work order's own lists', 'tasks, never coordination cards', 'nothing that happened is copied'), which effectively tells an agent when this tool fits. It stops short of naming an alternative tool for the opposite need, so not a 5.

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

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.

NameRequiredDescriptionDefault
notesNoOptional notes
worker_idNoWorker performing the completion (optional)
subtask_idYesSubtask ID to complete
response_valueNoTyped response value (for number/text/choice subtasks), e.g. "165"

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the schema already documents 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.

Purpose5/5

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

The description clearly states the specific action ('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.

Usage Guidelines5/5

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. 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. SR-S2 rules (SR-API3): a key with an agent_id completes only as its own agent_registry worker (any other worker: 403 worker_not_key_owner); a key without one completes on behalf of the named worker (on_behalf_of, or worker_id) only when it is an owner/admin-tier root key, and the completion records on_behalf_of (actor and worker). A delegated key without an agent_id: 403 on_behalf_requires_owner_key.

NameRequiredDescriptionDefault
notesNoOptional completion notes
task_idYesTask ID to complete
worker_idNoWorker ID the completion is recorded for (an agent key: omit it, or pass its own worker)
on_behalf_ofNoWorker ID the completion is done on behalf of (for an owner/admin-tier key the same as worker_id; recorded)
response_valueNoResponse value (for text/number/choice tasks)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare this is a non-readonly, non-idempotent, non-destructive, closed-world write; the description goes far beyond by naming the exact 403 error codes (worker_not_key_owner, on_behalf_requires_owner_key), the permission tiers required, and the fact that actor and worker are both recorded on completion. None of this repeats the structured data and it is exactly the behavioral context needed to avoid a silent failure.

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

Conciseness4/5

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

The core action plus side effects are front-loaded, then the exclusion rule, then the key-tier rules – a sensible order. It is a single dense paragraph with heavy jargon, and a break between 'what it does' and 'authorization rules' would improve scanability, but every sentence carries information an agent needs.

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

Completeness4/5

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

For a write tool with annotations, full schema coverage, and no output schema, the definition covers side effects, authorization, and refusal modes well. It says nothing about re-completion of an already-completed task despite idempotentHint=false, and gives no hint of the returned handle, which is a minor remaining gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about the two most ambiguous parameters: worker_id must be omitted or be the key's own worker for an agent key, while on_behalf_of requires an owner/admin-tier root key and is recorded separately. That interpretation is not derivable from the schema alone, so a 4 is warranted.

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

Purpose4/5

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

States a specific verb and resource ('Complete an ORDINARY task'), plus concrete side effects ('Inserts a completion record and timer event'). It sharply separates itself from coordination-cycle work (CODE:/REVIEW: builds, decisions, questions, integrations, parked cards), which is the main confusion axis. It never distinguishes itself from the close sibling tascan_complete_subtask, so a small gap remains.

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

Usage Guidelines5/5

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

Explicitly names the excluded case ('Coordination-cycle tasks ... are refused with 403') and says who handles them instead ('builds and reviews are completed by their runner, decisions only by the human on the worker page'). It also spells out which key tiers may call it, giving the agent a clear when/when-not decision rule with named alternatives.

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

tascan_condition_historyA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
asset_idYesAsset ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

Control a running fan-out (POST /coord/fanouts/:id/control). pause holds every unclaimed seat and stops re-firing; resume releases them; cancel supersedes every unclaimed task and closes once quiet; close_barrier drops unsettled (or named exclude_seats) seats and forces the synth now; retry_synth mints a new synth revision from the stored inputs of the current synth when every failed run is input_ref_mismatch, refused otherwise (not_synthesizing, no_synth_task, no_failed_runs, not_input_ref_mismatch). No amend or answer yet. Every action first records a signed control completion as the system worker of this org, never as another org identity. idempotency_key replays the prior outcome (replayed true) and applies nothing twice; a replayed resume after a later pause stays paused. Refused fanout_closed once the roll-up has closed. Requires agent:dispatch:code.

NameRequiredDescriptionDefault
actionYespause, resume, cancel, close_barrier or retry_synth. No amend, no answer (phase 1).
reasonNoOptional free-text reason (<= 4000 chars), recorded on the control child's completion.
fanout_idYesFan-out id (UUID) — the T_F root.
exclude_seatsNoclose_barrier only: 1-based seat numbers to drop from the barrier instead of waiting for them to settle.
idempotency_keyNoOptional replay key (<= 200 chars). The same key returns the prior outcome (replayed:true) and applies nothing a second time.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that every action records a signed control completion as the system worker of this org (never another org identity), the exact idempotency replay semantics including the subtle 'replayed resume after a later pause stays paused' case, the fanout_closed refusal condition, and the required agent:dispatch:code permission. These are precisely the destructive/auth/replay details 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.

Conciseness4/5

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

Purpose and action semantics are front-loaded, and each sentence carries information (refusals, replay, auth, identity). It is dense and somewhat run-on in the middle, but there is little waste for the amount of behavior it must convey.

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

Completeness5/5

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

Despite no output schema, the description explains observable outcomes (replayed:true on replay, enumerated refusal reasons like fanout_closed and not_synthesizing) and the permission requirement. An agent has everything needed to invoke and interpret results correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning over the terse schema: it explains what each enum action does to seats and tasks, clarifies exclude_seats as 'named exclude_seats' for close_barrier, and elaborates idempotency_key replay behavior. The added semantics exceed what the schema documents.

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

Purpose5/5

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

States a specific verb+resource ('Control a running fan-out') with the underlying endpoint, and enumerates exactly what each of the five actions does (pause holds seats, resume releases, cancel supersedes, close_barrier forces the synth, retry_synth mints a revision). This clearly distinguishes it from sibling lifecycle tools like create_fanout and get_fanout.

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

Usage Guidelines4/5

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

The description gives per-action conditions for use and explicitly rules out others ('No amend or answer yet'; retry_synth 'refused otherwise' with enumerated refusal reasons). It lacks an explicit routing statement toward siblings, but the action-level conditions are detailed enough for correct invocation.

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.

NameRequiredDescriptionDefault
kindNoCycle 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.
repoNoWhich 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.
titleYesShort human title (1-200 chars). T1 becomes "CODE: <title>" ("CAPTURE: <title>" when kind=review_only), T2 "REVIEW: <title>".
dry_runNotrue = 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.
reviewsNoOptional 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_typeNoT1 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_idYesWorking 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_briefYesThe 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_urlNoOptional https preview link shown on the Decision task.
review_briefYesThe 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_byNoreview_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_questionsNoQuestions a runner may ask per task before the attempt fails (default 3).
max_revisionsNoRevision cap (default 3): at most max_revisions + 1 builds and reviews.
artifact_bytesNoOptional {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_pathsYesRepo-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_keyNoOptional 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_titleNoOptional title template for the Integrate task (default "Integrate: <title>").
checkpoint_titleNoOptional title template for the Decision task (default "Decision: <title>").
max_cost_micro_usdNoPer-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_descriptionNoOptional description template for the Integrate task.
checkpoint_descriptionNoOptional description template for the Decision task; the build_ref, preview and findings summary are appended.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
nameYesEvent name
team_modeNoTeam mode — shared completions
project_idYesProject ID
descriptionNoEvent description
access_levelNoSR-S2: open, assigned or secured (null = automatic)
agent_assigneeNoSR-S2: the agent_id whose key alone may reach this list and its tasks
multi_instanceNoMulti-instance — each worker gets isolated copy
assigned_worker_idsNoWorker 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

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a non-idempotent, non-destructive write, so the description adds genuine value with the hard constraint 'team_mode and multi_instance cannot both be true' and semantic explanations of what each mode does (shared vs. isolated copies). It does not mention permission requirements tied to access_level or agent_assignee, which would have pushed this higher.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action, then the two important flags, then the constraint. No filler and nothing restated from the title alone.

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

Completeness4/5

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

For an 8-parameter creation tool with full schema descriptions and no output schema, the description covers the ambiguous behavioral choices an agent must get right. The remaining gaps (access_level semantics, assignment side effects) are documented in the schema, so nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above baseline by clarifying that multi_instance means each worker gets an isolated copy and naming real scenarios, plus the mutual-exclusivity rule the schema does not state. It still leaves access_level (open/assigned/secured) and agent_assignee meaning entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource ('Create a new event') and immediately disambiguates the domain term by glossing 'event' as '(task list) within a project'. An agent can distinguish this from tascan_create_project, tascan_update_event, and tascan_list_events without opening any schema.

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

Usage Guidelines4/5

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

Gives concrete usage guidance for the two mode flags, including when multi_instance is the right choice ('surveys, onboarding, info collection'). It stops short of naming alternative tools for related intents (e.g., tascan_apply_template or tascan_create_cycle), so it is clear but not exhaustively routable.

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

tascan_create_fanoutAInspect

Create a fan-out: 1-30 seats (RESEARCH by default, or LOCAL subagent seats) plus one synthesizer under ONE cycle root (POST /coord/fanouts). No Decision cards, Parked cards or pages per seat: only a control action or the closing roll-up reaches a human. Needs an API key with agent:dispatch:code (an admin session has no dispatch budget: key_required). dry_run true runs the same validation and ceiling/cap pre-check and returns dry_run, plan_sha256, seats and problems without spending budget or creating anything. Otherwise it consumes seats + 1 dispatch units BEFORE the create; a refusal only the database can see (cap_below_plan, fanout_open_limit, bad agent_id, reserve_floor_unset) still consumes them, by design. Fails fanout_ceiling_unset until the owner sets a ceiling, over_ceiling when cap exceeds it. idempotency_key replays a duplicate within 24h on the same plan, else idempotency_body_mismatch. Every seat, the synth and the roll-up leave a signed completion. Track with tascan_get_fanout.

NameRequiredDescriptionDefault
capYesThis fan-out's total micro-USD budget, synth reserve included. Refused over_ceiling if it exceeds the org's fan-out spending ceiling.
seatsYes1-30 seats. Each names the agent that runs it; brief/role fall back to seat_defaults when omitted.
synthYesThe synthesizer that runs once the barrier closes, reading every done seat's stored output as DATA.
titleYesShort human title (1-200 chars). T_F becomes "FANOUT: <title>"; seats become "RESEARCH: [seat-NN] <title>"; the synth becomes "RESEARCH: [synth] <title>".
canaryNoHow many seats release immediately; the rest stay held on T_F until the first canary settles done. Default min(2, seats.length).
min_okNoMinimum seats that must finish done before the synth barrier can close. Default ceil(seats.length / 2).
dry_runNotrue runs the same validation plus the ceiling/cap pre-check and returns {dry_run:true, plan_sha256, seats, problems:[]} WITHOUT consuming budget or creating a fan-out -- a real preflight, not a real create.
breaker_kNoPaid (non-infrastructure) seat failures before the breaker pauses the fan-out (2-5, default 2). An expired run never counts.
project_idYesWorking project (UUID). The fan-out root T_F is minted on its Questions list (coord_ensure_lists).
seat_reviewNoper_seat mints one review per seat (allowed for at most 10 seats); none skips seat review. Default per_seat for <=10 seats, none above that.
deadline_minNoMinutes before an idle seat is dropped and the barrier re-evaluated, and before a stuck synthesizing fan-out closes deadline (10-1440, default 240).
seat_defaultsNoShared defaults applied when a seat names no brief of its own.
idempotency_keyNoOptional replay key (<= 200 chars). The same key within 24h on the same plan returns duplicate:true with the existing fanout_id; on a different plan it is refused idempotency_body_mismatch.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, but the description adds substantial non-obvious behavior: budget is consumed BEFORE create, refusals visible only to the DB still consume units, the specific failure codes (cap_below_plan, fanout_ceiling_unset, over_ceiling, idempotency_body_mismatch), the 24h replay window, and that every seat, synth and roll-up leaves a signed completion.

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

Conciseness4/5

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

It is a dense single paragraph, but it is front-loaded with the core action and scoping constraint and nearly every sentence carries operational payload (auth, budget, failure codes, dry_run, idempotency, tracking). A long run of parenthetical failure codes makes it slightly hard to scan, keeping it just short of 5.

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

Completeness4/5

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

For a 13-parameter, nested-object, no-output-schema tool this covers the operational essentials: auth prerequisite, budget side effects, validation path, failure modes, idempotency and where to track the result. The one gap is that the successful-create return payload is only partially implied (fanout_id appears only in the idempotency replay branch), so an agent cannot fully anticipate the normal response without an output schema.

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

Parameters4/5

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

Schema description coverage is already 100%, so the baseline is 3, but the description adds genuine semantics beyond the schema for dry_run (returns dry_run/plan_sha256/seats/problems without spending budget), idempotency_key behavior, and the budget-consumption path around cap. It does not restate the remaining nested seat/synth/seat_defaults fields, which the schema already handles well.

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

Purpose5/5

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

States a specific verb and resource ('Create a fan-out: 1-30 seats ... plus one synthesizer under ONE cycle root') and pins the endpoint POST /coord/fanouts. It also distinguishes the artifact from its siblings by naming the tracking tool (tascan_get_fanout) and clarifying what the operation does NOT do relative to the wider coordinator tree.

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

Usage Guidelines4/5

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

Gives clear conditions for using dry_run as a preflight and for supplying idempotency_key, and states the required auth scope (agent:dispatch:code, with the note that an admin session has none). It does not explicitly contrast against sibling creation tools such as tascan_create_cycle or explain when a fan-out is preferred over delegating individual tasks, so it stops short of full 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.

NameRequiredDescriptionDefault
notesNoPayment terms / thank-you shown on the invoice
statusNoDefault sent
billingNoBilling 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_dateNoYYYY-MM-DD (default: 30 days out)
tax_rateNoFraction, e.g. 0.0825 for 8.25%
min_hoursNoMinimum billable hours per list (e.g. 1)
line_itemsNoExplicit lines instead of auto-billing
project_idNoBill every list in this project (auto line items)
client_nameYesBill-to name (person or company)
hourly_rateNoDollars per hour for auto line items
client_emailNo
client_phoneNo
company_nameNoYour company name on the attached Service Report (defaults to the org name)
task_list_idsNoBill just these lists (auto line items)
payment_optionsNoPay-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_listNoDollars per list for auto line items (used when no hourly_rate)
attach_service_reportNoMint + link a Service Report for single-list invoices (default true)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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). number is optional (the next P-number is assigned when omitted; a number already used in the org is refused 409). external_refs links customer job numbers.

NameRequiredDescriptionDefault
nameYesProject name
numberNoProject number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org (default: next P-00001 style number). P-<digits> numbers are assigned automatically and refused 400 here; use your own format (e.g. P14-4680)
locationNoProject location / venue
external_refsNoUp to 10 external references, each { source (1-40 chars, e.g. "EEQ"), ref (1-80 chars, e.g. "P14-4680") }

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare the write/creation safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries a lower burden. It adds genuinely useful behavior beyond annotations: the next P-number is auto-assigned when 'number' is omitted, and a duplicate number is refused with 409. It does not mention auth requirements or the shape of the created object.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and entity role, then the optional-parameter default/conflict behavior, then the external_refs purpose. No redundant restatement of the tool name or schema details.

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

Completeness4/5

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

With write annotations present and no output schema, the description covers the essentials for a create tool: default value behavior, the 409 conflict case, and the semantics of the non-obvious parameter. Missing only the return payload and permission/scope requirements, which are minor gaps for this complexity level.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description still adds meaning over the schema for two parameters: it explains that 'number' is optional with a server-assigned default and that 'external_refs' links customer job numbers, an intent not captured in the schema text. That is value beyond what the structured fields provide.

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

Purpose5/5

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

States a specific verb and resource ('Create a new TaScan project') and immediately clarifies the entity's role ('top-level container for events'), which distinguishes it from the sibling tascan_create_event. An agent can tell what this tool produces without opening the schema.

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

Usage Guidelines3/5

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

Usage context is implied by the 'top-level container for events' framing, which tells the agent this is the parent object to create before events. However, there is no explicit when-to-use statement, no mention of prerequisites (e.g. org membership), and no named alternative, so guidance remains inferred rather than stated.

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

tascan_create_siteAInspect

Create a site (a job location) in the organization: name (1-200 characters) and optionally address, lat + lng (together), client_company and external_key (unique in your org: a second site with the same key is refused 409). Write tier.

NameRequiredDescriptionDefault
latNo-90 to 90 (send with lng)
lngNo-180 to 180 (send with lat)
nameYesSite name, 1-200 characters
addressNo
external_keyNoYour own id for the site (e.g. a customer site number), unique in your org
client_companyNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly=false and destructive=false; the description adds meaningful context beyond them: external_key uniqueness causes a 409 refusal, and lat/lng must be sent together. It does not cover permissions or what the response returns, but the core write behavior and failure mode are disclosed.

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

Conciseness4/5

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

A single front-loaded sentence that identifies the operation first and then enumerates constraints. It is dense but every clause carries useful information; minor readability cost from cramming all parameters into one sentence.

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

Completeness4/5

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

For a 6-parameter write tool with annotations covering safety, the description covers purpose, required name bounds, paired coordinates, and the key duplicate-refusal behavior. Missing is any mention of authentication requirements or the created object's return shape, but the essentials for invoking it are present.

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

Parameters3/5

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

Schema coverage is 67%, so the schema carries much of the parameter documentation. The description adds the 409 consequence for duplicate external_key and reinforces lat/lng pairing, but address and client_company are only named with no added semantics.

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

Purpose5/5

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

States a specific verb and resource: 'Create a site (a job location) in the organization.' The parenthetical defines 'site' and the write framing clearly distinguishes it from read siblings like get_site, list_sites, update_site, and link_site.

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

Usage Guidelines2/5

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

The description never says when to choose this tool over alternatives such as list_sites, find, or create_project, nor does it advise checking for an existing site before creating. It provides behavioral constraints (409 on duplicate external_key) but no usage routing.

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

NameRequiredDescriptionDefault
nameYesWorker name
emailNoEmail
phoneNoPhone number

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
latYesZone center latitude
lngYesZone center longitude
kindNoWhat 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.
nameYesZone name (e.g. "Stage Left", "Loading Dock")
polygonNoPolygon/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_mNoRadius in meters (default 150, min 10, max 100000)
project_idNoProject this zone belongs to
descriptionNoShown to workers on the Site Gate page
notify_emailNoAlert recipient override — defaults to all org admins
required_ppeNoHazard zones: PPE the worker must show at entry (pick-list so the audit reads the same words)
task_list_idNoTask list the Site Gate routes workers to when they are inside this zone
auto_clock_inNoWrites 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_messageNoWhat the worker sees / is texted on entry (default is generated from the rule)
auto_clock_outNoWrites 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_exitNoEmail the manager when a worker leaves this zone (accountability — sign in then disappear)
alert_on_breachNoEmail + SMS the admin on containment-exit / restricted-enter (default true)
enforce_on_listNoZone-lock the task list — it cannot be started from outside the radius
notify_on_enterNoEmail the manager when a worker enters this zone (danger areas)
ppe_photo_requiredNoHazard zones: pop a photo checkpoint on entry (default true when required_ppe is set)
sms_worker_on_exitNoText the worker on exit
task_list_on_enterNoTask list dispatched to the worker (in-app + SMS) when they cross into the zone
sms_worker_on_enterNoText the worker the rule/list on entry, even if the app is closed

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_delegate_to_agentAInspect

Mint a time-limited, NARROWER child API key (POST /delegations, roadmap #11) — only read/write scopes may be requested; full, agent:dispatch, agent:dispatch:code, device:admin, delegate and webhooks:manage are always refused by name (I-6). TTL defaults to 1 hour (3600s), clamps to [60 seconds, 24 hours], and clamps further to THIS key's own expiry if it has one — a delegated key can never outlive its grantor. The child's tier is always a SUBSET of this key's own effective tier, never wider or lateral. Requires the delegate permission (owner-only to grant, requires full). The returned raw key is shown to you exactly ONCE — it is never stored server-side and cannot be retrieved again (I-10). Revoking this key (or any ancestor) cascades immediately to every key it delegated.

NameRequiredDescriptionDefault
roleNoThe agent’s job on the project: builder, researcher, reviewer, panelist, ...
modelNoThe model the agent runs on, e.g. claude-sonnet-5-5.
scopesYesScopes to request for the child key — read and/or write only.
vendorNoThe model vendor (defaults to this key’s own vendor).
agent_idNoStable agent id used in receipts and the agent registry.
ttl_secondsNoHow long the child key lives, in seconds (default 3600 = 1h; clamped to [60, 86400] and to this key's own expiry).
display_nameNoReadable id for the agent, e.g. "LT-ZOOS-RSCH-02 · Zoos · Researcher 02".
resource_constraintsNoOptional project sandbox: { "project_ids": ["<project uuid>", ...] }. Enforced on every call (migration 249): the child reaches only those projects. Must be a subset of this key’s own projects when this key is itself project-limited; omitted, the child inherits this key’s projects.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply generic hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description goes far beyond, disclosing TTL defaults and dual clamping (range and grantor expiry), tier subsetting rules, one-time-only raw key display with no server storage (I-10), and cascade revocation on ancestor revoke. This is exactly the behavioral context annotations can't carry.

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

Conciseness4/5

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

The key action is front-loaded and every clause carries substantive policy (scope refusals, TTL clamps, tier subset, one-time key, cascade revoke). It is dense and studded with internal references (I-6, I-10, roadmap #11, migration 249) that add noise for an agent, keeping it from a 5.

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

Completeness4/5

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

For a non-idempotent, open-world=false mutation with 8 params and no output schema, the description covers the critical unknowns: the raw key is returned exactly once and cannot be retrieved again, plus lifecycle and inheritance behavior. It stops short of describing any other response shape, but nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic context: the scopes array is constrained to read/write with everything else refused by name, and resource_constraints is described as inheriting the parent's projects when omitted. Minor added value beyond the schema's own descriptions.

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

Purpose5/5

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

Opens with a precise verb+resource+qualifier: 'Mint a time-limited, NARROWER child API key'. This clearly separates it from siblings like tascan_revoke_delegation, tascan_list_delegations, and tascan_dispatch_to_agent, and the API route (POST /delegations) pins the operation.

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

Usage Guidelines4/5

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

States the precondition (requires the delegate permission, owner-only to grant, requires full) and enumerates which scopes are always refused by name (full, agent:dispatch, device:admin, delegate, webhooks:manage), which tells the agent when this tool is applicable. It does not explicitly contrast with a named alternative sibling, 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_delete_chat_threadA
DestructiveIdempotent
Inspect

Delete a chat thread and its messages (DELETE /chat/threads/:id), the way the Simple page does; a receipted ledger event is written first. Write tier.

NameRequiredDescriptionDefault
thread_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real value beyond that: cascading deletion of messages and an audit-side-effect ('a receipted ledger event is written first'), which an agent would not know from the annotations alone.

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

Conciseness4/5

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

One compact sentence with the operation and endpoint front-loaded, followed by the important side-effect. 'The way the Simple page does' is the only filler clause that doesn't inform an agent decision.

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

Completeness4/5

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

For a single-parameter destructive tool with no output schema and full annotation coverage, the description supplies the missing pieces an agent needs: cascade scope and the ledger write. Only the provenance of thread_id is left unstated.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for thread_id. The endpoint path implies the parameter is a thread identifier, but there is no guidance on its format or where to source it (e.g. via tascan_list_chat_threads), leaving a gap.

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

Purpose5/5

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

States a specific verb and resource ('Delete a chat thread and its messages') and even names the underlying endpoint DELETE /chat/threads/:id. That scope statement (thread plus its messages) is enough to distinguish it from tascan_list_chat_threads, tascan_save_chat_thread and the other delete_* siblings.

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

Usage Guidelines3/5

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

Deletion is implied by the verb, and 'Write tier' hints at the write class of operation, but nothing tells the agent when to prefer this over save_chat_thread or how to obtain a valid thread_id first. Usage is only inferable, not stated.

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

tascan_delete_eventA
DestructiveIdempotent
Inspect

Delete an event (task list) and all its tasks and completions. This action is irreversible.

NameRequiredDescriptionDefault
list_idYesTask list (event) ID to delete

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

Delete a project that has NO history, after typing its name. Refused 409 project_has_history (with the counts) when it has any task or subtask completion, action receipt, issue, invoice or coordination task: archive it instead (tascan_update_project status archived). confirm_name must equal the project name exactly (400 confirm_name_mismatch). A receipted audit event (actor, project, name, counts, your audit note) is written BEFORE the delete; if it cannot be written nothing is deleted. The check, the audit event and the delete are one database transaction that locks receipts, tasks and the project first, so history created meanwhile is never deleted (503 busy, nothing deleted, when those locks are not had within 3 seconds: retry). Irreversible.

NameRequiredDescriptionDefault
auditNoOptional audit note stored verbatim in the audit event (e.g. { reason })
project_idYesProject ID to delete
confirm_nameYesThe project name, typed exactly

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive=true and idempotent=true, and the description goes well beyond them: it discloses the 409 refusal semantics with counts, the pre-delete receipted audit event, the transactional locking behavior, the 3-second lock timeout with 503/retry, and that the operation is irreversible. None of that is in the structured fields.

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

Conciseness4/5

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

Front-loaded with the core purpose and precondition, and every sentence carries operational information. It is dense — the long second sentence chains several guarantees together — but there is no filler or repetition.

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

Completeness5/5

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

For a destructive, irreversible tool with no output schema, the description covers refusal conditions, audit side effects, transaction/locking semantics, retry behavior, and the alternative path. An agent has everything needed to call it safely and interpret failure codes.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds real meaning: confirm_name must equal the project name exactly (with the 400 confirm_name_mismatch code) and audit notes are stored verbatim in the audit event, which is more than the schema conveys.

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

Purpose5/5

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

States a specific verb (delete), resource (project), and a hard precondition (NO history, name confirmation). It also names the sibling alternative (tascan_update_project status archived), so an agent can distinguish it from update/archive paths without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says when the call is refused (409 project_has_history with counts) and what to do instead (archive via tascan_update_project). It also covers the 503 busy retry path and the exact-match requirement for confirm_name, leaving no routing or retry ambiguity.

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

tascan_delete_subtaskA
DestructiveIdempotent
Inspect

Delete a subtask and its completions. This action is irreversible.

NameRequiredDescriptionDefault
subtask_idYesSubtask ID to delete

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

With 100% schema description coverage, the schema already 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.

Purpose5/5

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.

Usage Guidelines2/5

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

Delete a specific task and its completions. This action is irreversible.

NameRequiredDescriptionDefault
task_idYesTask ID to delete

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
worker_idYesWorker ID to delete

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

For a single-parameter tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
kindYesWhich dispatcher action this is.
root_idYesThe cycle root task id (tascan_list_cycles / tascan_create_cycle).
summaryYesHuman-readable summary (1-4000 chars) — becomes the recorded completion notes.
evidenceNoOptional 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

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
ai_agentNoName of the AI agent dispatching (default: TaScan AI)
issue_idYesIssue ID this instruction relates to
send_smsNoSend SMS to worker (default: true if phone on file)
worker_idNoTarget worker ID (defaults to the worker who reported the issue)
instructionYesClear, actionable instruction for the worker to execute
remediation_tasksNoOptional array of tasks to create as a remediation task list. Each: { title, description, response_type, requires_photo, is_safety_checkpoint, sort_order }
recommendation_summaryNoOne-line summary for the task list description

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

NameRequiredDescriptionDefault
taskYesThe 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.
agentNoAgent 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.
priorityNoPriority level (default: normal). The urgent marker is placed AFTER the routing prefix so it never breaks routing.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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_policyA
Idempotent
Inspect

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

NameRequiredDescriptionDefault
actionYesget = GET (evaluate, read tier). set = PUT (author/pin, write tier).
task_idYesTask ID (UUID) in your organization.
versionNoaction=set only: optional version for a new/updated policy definition (default 1). Ignored when only pinning an existing policy.
policy_idNoaction=set only, required: lowercase letters/digits/underscore/dot, starting with a letter, up to 80 chars, e.g. loto_v1.
definitionNoaction=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

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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

Cross-entity search: find projects (by name, project number or customer job number in external_refs; each with its status), task lists, tasks, workers, condition assets, sites (by name, address or client company) or work orders (by number or description) in one call — with ids and parent context to disambiguate. Use this instead of walking projects→lists→tasks or guessing ids from display names.

NameRequiredDescriptionDefault
typeNoOptional: restrict to one entity type
queryYesSearch text (min 2 chars, case-insensitive substring; a customer job number matches external_refs exactly)

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful behavior by noting ids and parent context are returned for disambiguation, but it does not mention pagination, result limits, or ordering.

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

Conciseness5/5

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

The definition is two sentences, front-loaded with the core capability, and contains no filler. The dense enumeration of entity types and matching fields is appropriate for a cross-entity search tool.

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

Completeness4/5

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

Given the simple two-parameter schema and the absence of an output schema, the description is nearly complete: it explains scope, entity coverage, matching fields, and that results include ids/parent context. Only minor search-result details such as limits or ordering are omitted.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description still adds meaningful semantics by explaining what can be searched per entity type, including project number/customer job number via external_refs and site matching by address or client company.

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

Purpose5/5

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

The description states a specific verb (cross-entity search) and enumerates exactly which resources can be found, including the fields used to match each type. It distinguishes this from sibling list/get tools by emphasizing one-call lookup across projects, lists, tasks, workers, assets, sites, and work orders.

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

Usage Guidelines5/5

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

It explicitly says to use this instead of walking projects→lists→tasks or guessing ids from display names. That gives clear when-to-use guidance and directly addresses the main alternative behavior an agent might otherwise choose.

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

tascan_find_duplicate_workersA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
nameNoOr: search duplicates by display name
thresholdNoMin confidence 0-1 (default 0.15)
worker_idNoAnchor worker to find duplicates OF (preferred — enables phone + GPS signals)
include_orphansNoAlso consider org-less (orphan) worker records — off by default

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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_finish_runAInspect

Finish a claimed local run (POST /runs/:run_id/finish). outcome='completed' stores document (and optional verification) as the seat's own build artifacts under EXACTLY the artifact_paths the fan-out named for this seat, hashes them into build_ref, and finishes the run -- this mints a real task_completions row and a SIGNED TASCAN RECEIPT for your work (tascan_get_receipt), the same as any other build; document is your deliverable and IS what gets hashed, so send the real content, not a summary. Zero changes to coord_fanout_settle / the barrier / the roll-up -- your completion releases the next held seat and, once every seat settles, feeds the fan-out's own synthesizer and rollup exactly like a cloud research seat's would. outcome='failed' finishes the run failed with your error text and stores nothing. Requires agent:dispatch:code. A run outside your org, or already finished, is refused (404 / the RPC's own not_live).

NameRequiredDescriptionDefault
errorNoRequired when outcome is failed -- why (up to 4000 chars).
run_idYesThe run ID from tascan_claim_run's response.
outcomeYes'completed' stores your document and mints a signed completion; 'failed' stores nothing.
documentNoRequired when outcome is completed. The seat's deliverable -- hashed as build_ref, stored verbatim under the seat's own artifact_paths.
instanceYesThe SAME instance string you claimed with.
verificationNoOptional second document (a short verification/self-check note) -- stored as the seat's second artifact_path when the fan-out named two.
cost_micro_usdNoOptional micro-USD cost to record against the cycle's own budget (default 0 -- a Claude Code subscription seat has no per-call API cost to report).

TDQS

A4.6/5.0
Behavior5/5

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

Goes far beyond the annotations: it discloses that document is hashed into build_ref, that a task_completions row and a signed receipt are minted, that the completion releases the next held seat and feeds the fan-out synthesizer/rollup, and that failed runs store nothing. It also states the required permission and the 404/not_live refusal conditions, none of which are derivable from readOnlyHint/idempotentHint/destructiveHint.

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

Conciseness4/5

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

Front-loaded with the action and endpoint, and each subsequent clause carries distinct information (storage, hashing, receipt, fan-out side effects, auth, failures). The prose is dense with run-on parentheticals and emphasis, which slightly hurts readability but wastes little.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers the side effects, the authorization requirement, the failure semantics, and points to tascan_get_receipt for the returned artifact. Nothing an agent needs to invoke it correctly appears missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds real meaning: it stresses that document IS the hashed deliverable ('send the real content, not a summary') and clarifies verification becomes the seat's second artifact_path. The cost_micro_usd default rationale is left to the schema.

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

Purpose5/5

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

States a specific verb+resource ('Finish a claimed local run') plus the underlying endpoint (POST /runs/:run_id/finish), and its two outcome branches are fully spelled out. An agent can distinguish this from tascan_claim_run or tascan_heartbeat_run without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context for each outcome: 'completed' stores artifacts and mints a receipt, 'failed' finishes with error text and stores nothing, and it names a prerequisite (requires agent:dispatch:code) and refusal cases (404 / not_live). It never explicitly names tascan_claim_run or heartbeat_run as the alternative operations, so the when-not guidance is inferred rather than stated.

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

tascan_generate_qrA
Idempotent
Inspect

Generate a QR code for a task list (event) that workers can scan to access tasks. TaScan draws the QR itself (an SVG, also returned as a data: URI in qr_image_url); no third-party QR service ever sees the link.

NameRequiredDescriptionDefault
styleNoReserved for saved QR styles (SR-P4c): accepted and ignored today
list_idYesTask list (event) ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag idempotent, non-destructive, closed-world behavior, and the description adds real value beyond them: the QR is drawn in-house, returned as an SVG and a data: URI in qr_image_url, and no third-party service sees the link (a privacy guarantee). It doesn't explain what the non-readOnlyHint generation persists, but the output-format and privacy disclosure is strong.

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

Conciseness5/5

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

Two tight sentences: capability first, then a concrete behavioral detail, with zero waste. Everything is front-loaded and earns its place.

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

Completeness4/5

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

With no output schema, the description usefully explains what is returned (SVG plus a data: URI), and annotations cover the safety profile while the schema covers both params. It could say a bit more about the non-read-only side effect, 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.

Parameters3/5

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

Schema coverage is 100%, so both parameters (list_id and the reserved/ignored style) are already documented in structured data. The description only implicitly maps to list_id via 'task list (event)' and adds no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Generate) plus resource (QR code) plus target (task list/event) and the outcome (workers scan to access tasks). No sibling tool deals with QR generation, so an agent can immediately tell this apart from the rest of the catalog.

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

Usage Guidelines3/5

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

The description conveys the scenario (giving workers scannable access to a task list), which implies when to use it, but it names no alternatives or exclusions and gives no preconditions such as requiring an existing list_id.

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

tascan_generate_reportA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
typeYes
list_idNoRequired for completion / service
messageNoService report: a note to the client shown under the header
send_noteNoShort intro for the text, e.g. "Here is your report from Love Productions:"
project_idNoRequired for project / evidence
show_issuesNoService report: include reported issues (default false)
company_nameNoService report branding (defaults to the org name)
show_workersNoService report: show worker names (default true)
send_to_phoneNoText the link to this number (E.164 or 10-digit US)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

Read the access object of a task list (list_id) or a task (task_id): access_level (open, assigned or secured; a task-level value wins over its list), the effective level, human assignees and agent_assignee (the one agent whose key may reach the list and every task on it; a task shows its list's, inherited), and the floor (a Decisions list or a passkey card never goes below assigned). Read tier.

NameRequiredDescriptionDefault
list_idNo
task_idNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent and safe, and the description layers meaningful domain behavior on top: task-level values win over list values, the floor rule for Decisions lists and passkey cards, and the inherited agent_assignee. The one gap is that it never says what happens when neither or both ids are supplied.

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

Conciseness3/5

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

Front-loaded with verb and resource, but the single sentence is overloaded with stacked parentheticals and domain jargon, making it hard to scan. The information is relevant but poorly staged.

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

Completeness4/5

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

There is no output schema, and the description steps in to enumerate the returned fields (access_level, effective level, human assignees, agent_assignee, floor), which is exactly what's needed. Missing only the edge-case behavior when zero or two identifiers are supplied.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning; it does identify list_id as a task list and task_id as a task and explains inheritance. It does not state whether the two are required, mutually exclusive, or which takes precedence when both are passed (the 'task-level wins' line describes the data model, not the parameters).

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

Purpose4/5

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

States a specific verb (Read) and resource (the access object) and scopes it to either a task list (list_id) or a task (task_id). The list-vs-task distinction is genuine disambiguation, though it never names the write counterpart tascan_set_access to complete the picture.

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

Usage Guidelines3/5

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

Usage is only implied: pass list_id to read a list's access or task_id to read a task's. There is no 'use this when…' framing, no mention that reads of access should go here while changes go to tascan_set_access, and no exclusions.

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

tascan_get_budgetA
Read-onlyIdempotent
Inspect

Read THIS credential's own per-key action budget (GET /budget): daily limits (sms, invites, payment-request cents per day and per request, dispatch, human pages) and today's spend against them. A NULL limit (or no budget row at all) means unlimited on that counter. A key can only ever see its OWN budget, never another key's (I-3, no tool or key ever reads another key's row). Read tier.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine context beyond that: NULL limits or a missing budget row mean unlimited, and keys are strictly scoped to their own row. It does not discuss pagination or response shape beyond the counter list, so 4 is fair.

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

Conciseness4/5

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

Front-loads the core action and result set, then adds the two constraints (NULL = unlimited, own-key-only) and the tier. Dense but every clause carries information; only the parenthetical rule reference (I-3) is arguably overhead.

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

Completeness5/5

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

With no output schema, the description carries the burden of explaining return values and it does so: it names the limit counters and the spend comparison, defines the NULL/missing-row unlimited semantics, and bounds visibility. An agent has everything needed to call it and interpret the result.

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

Parameters4/5

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

Zero-parameter tool, so the schema-based baseline is 4. The description usefully frames what the caller implicitly scopes to (this credential's key) and what the returned counters mean, which is the only parameter-like semantic that matters here.

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

Purpose5/5

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

States a specific verb (Read) and resource (THIS credential's per-key action budget), and enumerates exactly which counters are returned (sms, invites, payment-request cents, dispatch, human pages) plus today's spend. The emphasis on 'OWN' and 'never another key's' clearly separates it from generic usage/report siblings like tascan_get_usage.

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

Usage Guidelines4/5

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

Gives clear context for when this applies: it is a read-tier call returning this key's own budget, and it explicitly states the hard constraint that no key can read another key's row. It does not name an alternative tool or when-not-to-use it (e.g., vs. tascan_get_usage), 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_get_buildA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
build_refYessha256:<64 hex> (or the bare 64 hex) — from tascan_get_task (coord.build_ref / agent.runs[].build_ref) or tascan_get_cycle_report.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines5/5

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

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.

NameRequiredDescriptionDefault
pathYesRepo-relative path from the build manifest (tascan_get_build).
textYesThe already-computed diff text (up to 262144 characters). This tool never computes a diff itself.
base_refYesThe commit-ish the diff was computed against (1-200 chars).
build_refYessha256:<64 hex> (or the bare 64 hex) of the build the diff is about.
truncatedNoTrue if text is itself a truncated diff.
base_sha256NoOptional 64-hex sha256 of the file at base_ref.
build_sha256Yes64-hex sha256 of the file at build_ref/path — must match the stored artifact's own sha256.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

Opens with a specific verb and resource: '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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
pathYesRepo-relative path exactly as listed by tascan_get_build.
limitNoCharacters to return (1-12000, default 12000).
offsetNoCharacter offset to start from (default 0).
build_refYessha256:<64 hex> (or the bare 64 hex).

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
fullNotrue = the complete report JSON (tasks, runs, completions, messages, events, bundles, chains) after the summary, capped at 12000 chars. Default: summary only.
root_idYesThe 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

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

With no output schema, the description 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines4/5

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

Get one device by id: kind, name, status, location zone, credential rotation timestamps, revocation reason, and the last 20 evidence_events ids it produced. Never returns a credential hash.

NameRequiredDescriptionDefault
device_idYesDevice ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds two genuinely useful behavioral facts beyond that: the return set is bounded to the last 20 evidence_event ids, and credential hashes are never returned — a meaningful security disclosure.

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

Conciseness5/5

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

Two dense sentences with zero filler; the verb and lookup key are front-loaded and the returned-field inventory follows immediately. Nothing is repeated from the schema or annotations.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing the return payload and does so explicitly, including the 20-event cap and the credential-hash exclusion. An agent knows what it will receive before calling.

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

Parameters3/5

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

Schema description coverage is 100% for the single device_id parameter, so the schema already documents it. The description adds only the trivial clarification that lookup is by id, which is the baseline 3 when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Get one device by id') and then enumerates exactly what the response contains (kind, name, status, zone, rotation timestamps, revocation reason, last 20 evidence_event ids). The singular 'one device' also implicitly separates it from the sibling tascan_list_devices.

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

Usage Guidelines3/5

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

The phrase 'by id' implies this is the point-lookup counterpart to the list operation, which is enough to infer intended usage. However, it never names tascan_list_devices as the alternative or states when not to use it, so the routing guidance is only implied.

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

tascan_get_eventA
Read-onlyIdempotent
Inspect

Get details of a specific event (task list) including its tasks

NameRequiredDescriptionDefault
list_idYesTask list (event) ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb ('Get'), 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.

Usage Guidelines3/5

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

Read a fan-out (GET /coord/fanouts/:id?view=). view=status (default): state, seat counts, spend, cap, synth_deadline_at, poll_after_s. view=report: the full cycle report (get_cycle_report) — every seat, review and control step. view=rollup: the exact roll-up response_value plus its leaves (path, sha256, completion_id) once closed. view=verify: the server recomputes rollup_ref over the frozen leaves and returns ok / mismatches — the same check scripts/verify-fanout.js performs independently from another machine, which is the trusted proof; this view is a convenience, not a substitute. A foreign org's fanout_id answers 404, never 403, so another org's fan-out never even appears to exist. Read tier, no dispatch permission required.

NameRequiredDescriptionDefault
viewNostatus (default), report, rollup or verify.
fanout_idYesFan-out id (UUID) — the T_F root, from tascan_create_fanout or tascan_list_cycles.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new behavior: org isolation returns 404 never 403 ('another org's fan-out never even appears to exist'), the verify view recomputes rollup_ref server-side and reports ok/mismatches, and no dispatch permission is required (read tier). These are meaningful traits beyond the structured hints.

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

Conciseness4/5

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

Dense but front-loaded: the core action and its view selector come first, then per-view detail, then the security/permission notes. Sentences are information-packed, though the view=verify sentence is long and the whole block is heavier than a single-purpose read tool strictly needs.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so view by view, including which fields appear (seat counts, spend, cap, poll_after_s; leaf path/sha256/completion_id). It also covers the auth/permission model and org-isolation edge case, leaving no obvious gap for correct invocation.

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

Parameters4/5

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

Schema coverage is 100% and the schema's enum description is terse ('status (default), report, rollup or verify.'), so the description meaningfully expands it by explaining what each view actually returns (state/counts/cap/synth_deadline_at/poll_after_s vs. leaves with path/sha256/completion_id). The fanout_id param is only restated as the T_F root UUID, so it stops short of a 5.

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

Purpose5/5

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

States a specific verb+resource (read a fan-out by id) and immediately scopes it with the four view modes, so the agent knows exactly what it retrieves. It also distinguishes itself from the related get_cycle_report by noting view=report returns that report inline, rather than leaving the agent to guess which sibling to call.

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

Usage Guidelines4/5

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

Gives explicit per-view selection guidance (status for state/counts, report for the full cycle, rollup for the response_value plus leaves, verify for recomputation) and a notable caveat: verify is 'a convenience, not a substitute' for scripts/verify-fanout.js. No explicit 'when not to use this tool' against a named sibling alternative, 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_get_orgA
Read-onlyIdempotent
Inspect

Read the organization profile (GET /org): id, name, industry, logo, time zone and the admin phone MASKED to its last 4 digits (a tool never sees the full number). Read tier. Editing the organization is done by an owner or admin in the TaScan portal, not by any tool.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds non-obvious behavior beyond that: the admin phone is masked to its last 4 digits and a tool never sees the full number, which an agent could not infer from the schema or annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the verb and resource, then the returned fields, then the boundary constraint. The parenthetical about masking is essential clarification rather than filler; nothing is wasted.

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

Completeness5/5

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

With no output schema and no parameters, the description carries the return-value burden itself and does so by enumerating the profile fields. Combined with the masking caveat and the write-path exclusion, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies no inputs are required and instead documents what the call returns, which is the relevant semantic information for this tool.

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

Purpose5/5

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

States a specific verb and resource (read the organization profile, GET /org) and enumerates exactly which fields come back (id, name, industry, logo, time zone, masked admin phone, tier). It also distinguishes itself from write operations by noting that editing happens in the portal, not via any tool.

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

Usage Guidelines4/5

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

Makes the usage context clear (read-only org profile, no parameters needed) and explicitly rules out the mutation path by stating that editing is done by an owner/admin in the portal and not by any tool. It does not name a sibling tool to prefer, but the zero-arg read scope is unambiguous.

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

tascan_get_org_planA
Read-onlyIdempotent
Inspect

Your organization's plan (GET /org/plan), read-only: plan (free, pro, ...) and whether billing is exempt. Billing changes happen in the TaScan portal only. Read tier.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered structurally. The description reinforces read-only and adds that billing mutations are portal-only, but contributes little new behavioral detail (no auth requirements or response format notes).

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

Conciseness5/5

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

A single front-loaded sentence carries the resource, endpoint, read-only nature, output fields, and the billing-mutation constraint with no filler. The trailing 'Read tier.' is a minor fragment but harmless.

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

Completeness4/5

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

With no output schema, the description compensates by naming the two values an agent gets back (plan tier and billing exemption). It omits whether the result is empty or errors for orgs without a plan, but is otherwise sufficient for a zero-parameter read.

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

Parameters4/5

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

Zero parameters, so the baseline of 4 applies. The description uses the space usefully by describing the returned fields rather than restating parameters.

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

Purpose4/5

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

Names a specific verb+resource ('Your organization's plan') and enumerates what it returns: plan tier (free, pro, ...) and billing-exemption status. It doesn't explicitly contrast with nearby read siblings like tascan_get_org or tascan_get_budget, but the resource is narrow enough to be distinguishable.

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

Usage Guidelines4/5

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

States a clear constraint: 'Billing changes happen in the TaScan portal only,' which tells the agent not to attempt plan changes through this tool. It gives context without naming a sibling alternative, 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_get_projectA
Read-onlyIdempotent
Inspect

Get details of a specific project

NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
profileNofull (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_idYestask_completions.id (UUID) - from tascan_get_task -> completions[].id

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
list_idYesTask list (event) ID
include_responsesNoInclude the actual submitted response values for each completed task (default false — keeps the payload light)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), 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.

Conciseness4/5

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.

Completeness4/5

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

With no output schema and no 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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is only implied by the 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_historyA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
limitNoMax results (default 50, max 200)
sinceNoISO timestamp — only scans after this
sourceNoFilter page scans by channel: qr | nfc | sms | email | link | unknown
tag_idNoNFC tag registry ID (from tascan_list_tags) — tag mode
project_idNoProject ID — page-scan mode, all lists in the project
task_list_idNoTask list ID — page-scan mode

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already 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.

Purpose5/5

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.

Usage Guidelines4/5

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

Fetch the signature bundle for one signed document by signature assertion id (the signature_assertion_id inside the response value of a completed signature task). Returns the self-contained JSON an auditor can verify offline without trusting TaScan: the signed challenge preimage (v 2 also carries the typed name the signer entered, signer_typed_name), clientDataJSON, authenticatorData, signature, public key, the user-verification and backup flags, the document SHA-256, task id, completion id and time. Check it with: npx tascan-verify --signature bundle.json [--doc the-document.pdf]. Contains no signed URL, phone number or email. Read tier, organization-scoped.

NameRequiredDescriptionDefault
signature_assertion_idYessignature_assertion_id (UUID) from the completion response value of a signature task

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial context beyond them: the bundle is self-contained and offline-verifiable, it enumerates the contents, it explicitly withholds signed URLs/phone/email, and it notes read tier and organization scoping.

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

Conciseness4/5

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

Purpose and the id's origin are front-loaded, followed by the return contents and a verification tip. The long field enumeration is justified because there is no output schema, though the sentence is dense enough to be slightly heavy.

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

Completeness5/5

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

With no output schema, the description compensates by detailing what the returned JSON contains and how to verify it independently. Access and safety semantics are also covered, leaving nothing an agent needs in order to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema already explains the parameter as a UUID from the completion response of a signature task. The description largely restates that origin rather than adding new syntax or format guidance, 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.

Purpose5/5

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

The description opens with a specific verb (Fetch) and resource (signature bundle) scoped to one signed document, identified by signature assertion id. It is readily distinguishable from generic siblings like get_receipt or get_task because it names the exact artifact and its auditor-verification purpose.

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

Usage Guidelines4/5

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

It states clearly where the required id comes from ('the signature_assertion_id inside the response value of a completed signature task'), giving a concrete precondition, and adds a verification command. It does not name an alternative tool or state when not to use this one, so it falls 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_get_siteB
Read-onlyIdempotent
Inspect

Read one site with the projects and task lists linked to it. Read tier.

NameRequiredDescriptionDefault
site_idYesSite ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered structurally. The description only adds that related projects and task lists are included in the read, which is modest value and doesn't cover pagination or error behavior.

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

Conciseness5/5

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

Two short sentences with the core action front-loaded and no filler. Every phrase contributes either the action or the return scope.

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

Completeness4/5

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

For a single-param read tool with rich annotations and no output schema, the description supplies the essential return scope (projects and task lists). The only gap is the ambiguous 'read tier' phrase and no indication of what happens for an invalid or missing site_id.

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

Parameters3/5

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

There is a single required parameter (site_id) with 100% schema description coverage, so the schema already carries parameter meaning. The description adds no format or sourcing guidance for the ID beyond the schema, fitting the baseline 3.

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

Purpose4/5

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

States a specific verb and resource ('Read one site') and adds scope detail about embedded projects and task lists, which differentiates it from list_sites and get_project. It does not explicitly name the sibling tools it contrasts with, keeping it below a 5.

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

Usage Guidelines2/5

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

'Read tier' is an opaque internal label that does not tell an agent when to prefer this over tascan_list_sites or tascan_get_project. There are no exclusions or prerequisites stated.

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

tascan_get_sms_statusA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
twilio_sidYesTwilio message SID (SM...) from tascan_send_sms

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb and resource ('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.

Usage Guidelines4/5

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

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

NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

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, and with since= read only messages newer than the last one you saw. Read tier. Post with tascan_post_message.

NameRequiredDescriptionDefault
kindsNoOptional comma-separated kind filter, e.g. question,answer,handoff,note (discussion is stored as note; both names are accepted).
sinceNoOptional ISO 8601 time: return only messages created after it (pass the created_at of the last message you saw to read only new ones).
task_idYesTask ID (UUID).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior the annotations do not: a hard cap of the last 100 messages, chronological 'newest last (reading order)' ordering, and the 'read tier' permission requirement. What it omits is anything about the shape of an individual message beyond created_at.

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

Conciseness4/5

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

Front-loads the core purpose and route, then the return set, then the optional filters, then the sibling pointer. Dense but essentially waste-free. It is a single run-on sentence plus fragments, which slightly reduces scanability, but every clause carries information.

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

Completeness4/5

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

With no output schema, the description must carry the return contract, and it does: entry kinds, the 100-message cap, and ordering. The created_at reference implies message timestamps. What is missing is the per-message field set (id, author, kind) an agent would need to parse results, which is the only real gap for a read tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the kinds and since parameters are already fully documented in the schema (including the note/discussion aliasing and the pass-created_at pattern). The description largely restates that semantics rather than extending it, apart from tying since to the 'last message you saw' workflow. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Read a task's trail messages'), names the underlying protocol entity and HTTP route, and enumerates the entry kinds returned (question, answer, handoff, note/discussion). It also names the sibling that performs the opposite operation ('Post with tascan_post_message'), so the agent can separate this read tool from tascan_get_task and tascan_post_message without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete usage context for both optional parameters: use kinds to narrow to a comma-separated set, and use since with the created_at of the last message seen for incremental reads. It also routes writes to tascan_post_message. It never states when not to use it (e.g. versus tascan_get_task for metadata), so it stops short of full when/when-not guidance.

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

tascan_get_timesheetA
Read-onlyIdempotent
Inspect

A task list's timesheet (GET /lists/:id/timesheet), read-only: each shift (who, clock in, clock out, breaks, hours; an open shift and a never-clocked-out one are flagged) and per worker per day the regular, overtime and double-time hours under the project's labor rules (overtime after 10 h by default), with totals. Optional worker_id. Read tier.

NameRequiredDescriptionDefault
list_idYes
worker_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, and the description adds real value on top: it discloses the return shape, that open shifts and never-clocked-out shifts are flagged, the default overtime threshold (10 h) and that hours are computed under the project's labor rules, plus the 'Read tier' access requirement. It stops short of noting any limits on range or result size, which keeps it off a 5.

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

Conciseness4/5

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

A single dense sentence that front-loads the resource and endpoint before the detail. It is information-rich rather than padded, though the nested parentheses make it heavier to parse than it needs to be.

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

Completeness4/5

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

With no output schema and four safety annotations already present, the description does the job of explaining what comes back and what the flagged/derived fields mean. Only the identity semantics of the two parameters are thin, which is a minor gap for a two-param read tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the param burden. It only says worker_id is optional (implying narrowing to one worker); it never states that list_id is required or what identifier format either expects. Partial compensation for a complete coverage gap.

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

Purpose5/5

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

States a specific verb and resource — a task list's timesheet — and even pins the endpoint (GET /lists/:id/timesheet). The parenthetical enumerates the payload (shifts, breaks, hours, regular/overtime/double-time, totals), so an agent can distinguish this from any other get_* sibling without opening a schema.

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

Usage Guidelines3/5

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

The 'read-only' and 'Read tier' notes imply this is a reporting/retrieval call and 'Optional worker_id' implies the filtered variant, but neither is framed as when-to-use guidance. No sibling is named as an alternative (e.g. a worker passport or per-worker view), so routing is left to inference.

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

tascan_get_usageA
Read-onlyIdempotent
Inspect

Read your organization's usage and quota snapshot for a billing period (GET /usage): SMS, email and AI call counts against their plan limits, the 100-receipt-per-month hard stop (used, allowance, hard_stop), the rate-limit window (60 requests per minute), and coordination-cycle spend in micro-USD for build roots created in that period. period defaults to the current UTC month (YYYY-MM). by_key additionally breaks coordination spend down per dispatch-scoped API key, refused (403 owner_required) to anything but an owner admin session -- a tsk_ key never gets it. Read tier.

NameRequiredDescriptionDefault
by_keyNoBreak coordination spend down per dispatch-scoped API key -- owner admin session only.
periodNoBilling period as YYYY-MM (default: current UTC month).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavioral context well beyond them: the 100-receipt-per-month hard stop, the 60 requests/minute rate-limit window, spend denominated in micro-USD, and the fact that by_key is refused with 403 owner_required and never granted to a tsk_ key. That is exactly the extra operational context an agent needs before calling.

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

Conciseness4/5

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

Dense but front-loaded: the core purpose and the (GET /usage) anchor come first, then the enumerated contents, then parameter behavior. It is a single long paragraph that could be split for scanning, but every clause carries information and there is no filler.

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

Completeness5/5

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

With no output schema, the description compensates by naming the returned quantities (used, allowance, hard_stop) and the units (micro-USD), and it covers both parameters plus the auth/refusal behavior. Nothing essential to calling this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning on top: it explains the by_key breakdown is per dispatch-scoped API key and gated by owner privilege (with the 403/task-key refusal), and clarifies the YYYY-MM semantics of period. It goes modestly beyond the schema text rather than merely restating it.

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

Purpose5/5

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

States a specific verb and resource ('Read your organization's usage and quota snapshot for a billing period (GET /usage)') and then enumerates exactly what the snapshot contains: SMS/email/AI counts, the 100-receipt hard stop, the rate-limit window, and coordination-cycle spend. This is far more specific than a generic 'get usage' and implicitly separates it from broader siblings like tascan_org_analytics.

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

Usage Guidelines3/5

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

It describes conditions attached to a parameter ('by_key ... owner admin session only') and the default period behavior, which implies the intended usage context. However, it never explicitly states when to reach for this tool versus alternatives such as tascan_org_analytics or tascan_get_cycle_report, leaving the choice to inference.

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

tascan_get_workerA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
worker_idYesWorker ID

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

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.

NameRequiredDescriptionDefault
worker_idYesWorker ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100% for the single 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.

Purpose5/5

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.

Usage Guidelines3/5

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_heartbeat_runA
Idempotent
Inspect

Extend a claimed local run's lease and mark it running (POST /runs/:run_id/heartbeat -> heartbeat_agent_run). ok false with reason not_live means the run is no longer yours -- the sweep expired it, or it was never yours to begin with -- STOP, do not finish it. Never mints a completion or a receipt. Requires agent:dispatch:code. A run outside your org is 404, never 403.

NameRequiredDescriptionDefault
run_idYesThe run ID from tascan_claim_run's response.
instanceYesThe SAME instance string you claimed with -- a mismatch answers not_live.
extend_secondsNoOptional: push expires_at out to now + this many seconds (60-86400) if that is later than the current lease -- never shortens it.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare non-readonly, idempotent, non-destructive, closed-world, but the description adds critical context they cannot: the not_live failure semantics, the 404-not-403 cross-org behavior, and the explicit guarantee that no completion/receipt is produced. This is exactly the extra behavioral disclosure annotations cannot carry.

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

Conciseness5/5

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

Extremely dense and front-loaded: lease-extension purpose first, then failure semantics, then guarantees, then auth, then error codes. No sentence is filler.

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

Completeness5/5

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

With no output schema, the description fully compensates by describing the success/failure signal ('ok false with reason not_live') and the 404 case, plus the auth scope. An agent has everything needed to call this correctly and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so run_id, instance, and extend_seconds are already fully documented in the schema, including the same-instance mismatch behavior and the never-shortens lease rule. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

Specific verb+resource with scope: 'Extend a claimed local run's lease and mark it running', plus the underlying endpoint mapping. An agent can distinguish it from tascan_claim_run and tascan_finish_run purely from the text.

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

Usage Guidelines5/5

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

Gives explicit when-not behavior ('ok false with reason not_live ... STOP, do not finish it') and an explicit prerequisite ('Requires agent:dispatch:code'). It also bounds the tool's role by stating it never mints a completion or receipt, which routes completion work elsewhere.

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.

NameRequiredDescriptionDefault
list_idYesTask list you want them on
messageNoOptional short intro prepended to the text (max 240 chars)
worker_idYesworker_id from a marketplace card

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by 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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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

The org-wide issues inbox (GET /issues): every task issue across projects, newest first, filtered by status (OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED, CLOSED, or a comma list), project_id and site_id. Pass issue_id instead to read one issue's message thread (GET /issues/:id/messages). For one list use tascan_list_issues. Read tier.

NameRequiredDescriptionDefault
limitNo1-200 (default 100)
statusNo
site_idNo
issue_idNoRead this issue's thread instead of the inbox
project_idNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real value by disclosing the sort order (newest first) and the dual-mode behaviour where issue_id silently switches the endpoint to a message thread. It does not address pagination beyond the schema's limit field, and the trailing 'Read tier' is unexplained jargon, so it falls short of a 5.

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

Conciseness4/5

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

Front-loaded with scope and sort order, then alternates, then the read-tier note — all three sentences earn their place and there is no filler. It is dense and packs three distinct concerns into one breath, and the unexplained 'Read tier' fragment costs it a point.

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

Completeness4/5

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

With no output schema and five optional parameters, the description covers what an agent needs to choose correctly: filtering dimensions, the thread-mode escape hatch, and the sibling to use otherwise. It omits any hint of result shape or how limit interacts with the 'newest first' ordering, which is a modest gap rather than a blocker.

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

Parameters4/5

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

At 40% schema coverage the description must compensate, and it does: it enumerates the status values (OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED, CLOSED, or a comma list) that the schema leaves as a bare string with no enum, and clarifies that project_id and site_id act as filters while issue_id overrides the whole operation. Only limit lacks any description-side context beyond the schema's '1-200 (default 100)'.

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

Purpose5/5

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

States a specific verb and resource (org-wide issues inbox, GET /issues) with explicit scope: every task issue across projects, newest first. It also names the two sibling behaviours it is not (tascan_list_issues for a single list, thread read via issue_id), so an agent can distinguish it without opening any schema.

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

Usage Guidelines5/5

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

Explicit routing rules: use tascan_list_issues for a single list, and pass issue_id instead to read one issue's message thread. Both the when-to-use and the when-not-to-use alternative are spelled out rather than implied.

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

tascan_list_agentsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

List registered condition-ledger assets with their latest condition scores. Use to recover an asset_id for tascan_assess_condition or tascan_condition_history.

NameRequiredDescriptionDefault
project_idNoFilter by project

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

List the Ask TaScan chat threads of your org's admins (GET /chat/threads, newest first; admin_id narrows to one admin), or read one thread with its messages (thread_id). The same threads the Simple page and the portal show. Read tier.

NameRequiredDescriptionDefault
limitNo
admin_idNo
thread_idNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description has less to prove. It still adds useful traits: results are newest first, scope is limited to org admins, source systems are the Simple page and the portal, and it is a 'Read tier' call. Nothing is said about pagination.

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

Conciseness5/5

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

One dense sentence plus a short tag sentence. The endpoint, ordering, both modes, parameter roles, scope, and tier are all front-loaded with no filler.

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

Completeness4/5

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

There is no output schema, but the description says a single-thread read returns the thread with its messages, and it covers the list mode's ordering and scope. Only the pagination or limit behavior and the result shape of the list mode are left implicit.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must explain all three parameters, and it explains admin_id and thread_id well. limit is never mentioned, however, so the agent must infer its meaning and default from the name alone.

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

Purpose5/5

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

States a specific verb and resource ('List the Ask TaScan chat threads') and covers both modes: listing org admin threads or reading a single thread with its messages. This separates it cleanly from siblings like tascan_delete_chat_thread and tascan_save_chat_thread.

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

Usage Guidelines4/5

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

The description tells the agent which parameter selects which mode: admin_id narrows to one admin, thread_id switches to reading a single thread with messages. It implies the default (list across admins) but gives no explicit exclusion or fallback tool for cases this can't serve.

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

tascan_list_connectorsA
Read-onlyIdempotent
Inspect

List the organization's connectors (GET /integrations), e.g. the Salesforce Work Order bridge: provider, instance URL, the project and list new work lands on (with names), whether it is on, the last poll time and the last error. Never shows secrets: the client id, the client secret, its storage name and the connector config are never returned. Read tier. Turning a connector on or off, retargeting it or adding one is done by an owner or admin in the TaScan portal, not by any tool.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations, which only cover safety hints. It enumerates the returned fields (provider, instance URL, project/list names, on-state, last poll time, last error) and, critically, discloses that secrets (client id, client secret, storage name, connector config) are never returned. That security disclosure is exactly the kind of context annotations cannot express.

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

Conciseness4/5

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

Front-loads the purpose and endpoint before the example, then closes with the security and permissions boundaries. The middle sentence is dense with field names but every clause carries information; no filler sentences.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing return contents, and it does so thoroughly, including what is deliberately withheld. Combined with the permission boundary, an agent has everything needed to call this correctly.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document; baseline is 4. The description correctly implies a no-argument, whole-organization scope rather than any filtering.

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

Purpose5/5

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

States a specific verb ('List') and resource ('the organization's connectors'), reinforces it with the underlying endpoint (GET /integrations), and gives a concrete example (the Salesforce Work Order bridge). No sibling tool performs connector listing, so the agent can route here unambiguously.

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

Usage Guidelines4/5

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

Explicitly states the 'Read tier' and rules out adjacent actions by noting that turning on/off, retargeting, or adding a connector must be done in the portal by an owner/admin 'not by any tool.' It does not name a sibling alternative, but none exists for this resource, so the guidance is clear without exclusions that miss.

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

tascan_list_cyclesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoMax rows to return (default 50, max 200).
statusNoOptional cycle status to filter on (e.g. active, parked, authorized, integrated) — lowercase letters and underscores only, 1-20 chars.
project_idNoOptional project UUID to filter to one project's cycles.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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

For a read-only list 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

List delegated child keys (GET /delegations): this key's own direct children (id, label, scopes, active/revoked, depth, expires_at) — never the raw credential. An admin session sees every delegated key in the org. Read tier.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the bar is lower, yet the description adds real value: it discloses the visibility scope (own children vs. full org for admins) and explicitly warns that the raw credential is never returned. It omits pagination or result-size behavior for a list endpoint.

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

Conciseness4/5

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

It is a single tightly packed sentence with the key facts (endpoint, scope, returned fields, credential exclusion) front-loaded. The em-dash parenthetical listing the six output fields is dense but earns its place; slightly run-on structure keeps it from a 5.

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

Completeness4/5

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

With no parameters, no output schema, and simple annotations, the description compensates well by enumerating the returned fields (id, label, scopes, status, depth, expires_at) and the visibility rules. The only missing element is behavior for large result sets (pagination/limits) on a list endpoint.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies no filtering inputs are needed beyond session context, and adds nothing misleading about parameters.

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

Purpose5/5

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

States a specific verb and resource (list delegated child keys) plus the underlying endpoint (GET /delegations). The phrase 'this key's own direct children' precisely scopes the result and implicitly distinguishes it from org-wide or sibling listing tools.

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

Usage Guidelines4/5

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

Gives clear context for use: it is a read-tier operation, and it explains that an admin session returns every delegated key in the org while a non-admin sees only direct children. It does not explicitly mention alternatives such as revoke_delegation or when not to call it, so it falls 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_list_devicesA
Read-onlyIdempotent
Inspect

List registered devices (RFID portals, barcode guns, PLCs, cameras, robots, tools, sensors) in the organization. Filter by status (active/revoked) or kind; paginate with an opaque cursor. Never returns a credential hash.

NameRequiredDescriptionDefault
kindNoFilter by device kind
limitNoMax rows to return (1-200, default 50)
cursorNoOpaque cursor from a previous response next_cursor
statusNoFilter by device status

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds genuinely useful context beyond that: the cursor is opaque, results paginate, and credential hashes are never returned — a meaningful disclosure for an inventory listing.

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

Conciseness5/5

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

Three compact sentences with the core resource and scope front-loaded, followed by filtering/pagination, then a security caveat. Every sentence carries distinct information and nothing is padded.

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

Completeness4/5

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

For a read-only list tool with full schema coverage and no output schema, the description covers scope, filters, pagination and a notable return-value constraint. It could be slightly stronger by hinting at the response shape or noting the default row count, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents kind, status, limit (with range and default) and cursor. The description only restates status/kind filtering and cursor pagination without adding format or interaction detail, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (registered devices) with a parenthetical enumeration of device kinds, so an agent immediately knows the scope. It does not, however, explicitly distinguish itself from neighbors like tascan_get_device or tascan_list_assets, leaving that inference to the agent.

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

Usage Guidelines3/5

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

The description names the two available filters and the pagination mechanism, which implies how to narrow results, but never states when to use this tool instead of tascan_get_device (single device) or tascan_list_assets. No exclusions or prerequisites are given, so usage is only implied.

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

tascan_list_eventsA
Read-onlyIdempotent
Inspect

List all events (task lists) within a project

NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

List AI Insights (GET /insights): the audit engine's suggestions for your org (ai_suggestions), pending by default; status applied, dismissed, explained, expired or all; optional project_id. Read tier.

NameRequiredDescriptionDefault
limitNo
statusNo
project_idNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered. The description adds real value beyond that with the default status (pending) and a declared 'Read tier', but it says nothing about pagination despite a limit parameter or about result shape/ordering.

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

Conciseness4/5

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

One dense sentence that front-loads the verb+resource and the endpoint before the scope defaults. It is efficient, though 'ai_suggestions' and 'Read tier' are terse internal jargon that cost a little readability.

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

Completeness4/5

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

For a read-only list tool with no output schema and zero schema coverage, the description supplies what an agent needs to call it: default scope, valid status values, and optional project filter. The only meaningful gap is the undocumented limit and no hint about result volume or ordering.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for two of three parameters: status gets an explicit value list and project_id is flagged optional. The limit parameter is never mentioned, leaving one undocumented input.

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

Purpose5/5

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

States a specific verb and resource (List AI Insights, GET /insights) and defines the resource in domain terms (the audit engine's suggestions for your org, ai_suggestions), which no sibling name alone conveys. The org-level scope plus optional project_id separates it from project-scoped siblings like tascan_project_insights.

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

Usage Guidelines4/5

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

Gives concrete usage context: results are pending by default, and the status filter accepts applied, dismissed, explained, expired or all. It never explicitly names an alternative (e.g. resolve_insight for acting on a result, project_insights for project scope), so routing is left to inference.

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

tascan_list_invitesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
statusNo

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
statusNo
project_idNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple read-only list tool, 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb ('List'), 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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
list_idYesTask list (event) ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive 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.

Conciseness5/5

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.

Completeness5/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
statusNoFilter by status
task_list_idNoFilter by task list

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple read-only list tool with 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.

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('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.

Purpose5/5

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.

Usage Guidelines3/5

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

List TaScan projects in the organization (each with its number, e.g. P-00001, external_refs, report_options and its calendar_url, webcal_url, map_url and wallet_pass_url). Optional filters: status (exact, comma list), number (exact), ref (matches any external_refs[].ref exactly, e.g. a customer job number like P14-4680), and the portal's date filters: starts_after / ends_before (YYYY-MM-DD) and window (week = Sunday-Saturday, or month) on the project's start/end dates (one date = that day; none = its created day), in zone (an IANA zone; default the org time zone, else UTC).

NameRequiredDescriptionDefault
refNoOnly projects whose external_refs carry this ref (exact, e.g. P14-4680)
zoneNoIANA time zone for the date filters, e.g. America/Los_Angeles (default: the org time zone)
numberNoOnly the project with this project number (exact, e.g. P-00012)
statusNoOnly projects with this status (exact; comma-separated list allowed, e.g. "active,archived")
windowNoOnly projects overlapping this week (Sunday-Saturday) or this calendar month
ends_beforeNoYYYY-MM-DD: only projects whose dates end before this day
starts_afterNoYYYY-MM-DD: only projects whose dates start after this day

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real context: the default time zone behavior (org zone, else UTC), how a single date is interpreted ('one date = that day; none = its created day'), and the URL fields that come back.

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

Conciseness3/5

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

It is a single very long run-on sentence packed with parentheticals, including URL fields the agent may not need up front. The core purpose is front-loaded, but the density and the returned-field laundry list reduce scannability.

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

Completeness4/5

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

There is no output schema, so describing returned fields and filter semantics is genuinely necessary and mostly done. Only pagination/result-limit behavior and default ordering are unaddressed, leaving a minor gap for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by explaining interacting semantics — window as Sunday-Saturday week or calendar month, and the one-date/none-date fallback for start/end filters — which the schema does not state.

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

Purpose5/5

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

The description opens with a specific verb and resource ('List TaScan projects in the organization') and enumerates what each record carries (number, external_refs, report_options, calendar/webcal/map/wallet URLs), so the agent knows exactly what it gets back. It is clearly distinct from tascan_get_project (single) and tascan_find.

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

Usage Guidelines3/5

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

It spells out the meaning of each filter (exact status comma list, exact number, exact ref against external_refs, date window semantics), which implies when the tool is appropriate. However, it never says when to prefer this over tascan_get_project or tascan_find, nor are there explicit exclusions.

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

tascan_list_qr_stylesA
Read-onlyIdempotent
Inspect

Your saved QR looks (GET /qr-styles) with the per-purpose defaults, or, given task_id, list_id, project_id or site_id (and/or purpose share, placard, asset, receipt or work_order), the look that applies (GET /qr-styles/resolve: task, then list, project, site, purpose default, org default, then TaScan's own). Read tier.

NameRequiredDescriptionDefault
list_idNo
purposeNo
resolveNoResolve even with no item (purpose default, org default, TaScan)
site_idNo
task_idNo
project_idNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, closed-world profile, yet the description adds genuinely useful behavior: the precedence chain (task → list → project → site → purpose default → org default → TaScan's own) and the fact that resolution can occur with no item when resolve is set. 'Read tier' is unexplained, which costs a little.

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

Conciseness3/5

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

Almost no wasted content, but the entire description is a single tangled sentence with nested parentheticals, so the list-vs-resolve distinction is not front-loaded. Information density is high while parseability is low.

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

Completeness3/5

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

With six optional parameters and no output schema, the description should also convey what a 'look' contains and what a resolve result looks like. It covers inputs and precedence thoroughly but says nothing about return shape, and leaves 'Read tier' opaque.

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

Parameters4/5

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

Schema coverage is only 17% (just the resolve flag), so the description carries the burden and mostly does: it names all four ID parameters and enumerates the purpose values (share, placard, asset, receipt, work_order) that are absent from the schema. It still doesn't say what a list_id or site_id refers to in domain terms.

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

Purpose4/5

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

The description names both operations concretely: listing saved QR styles at GET /qr-styles and resolving the applicable style at GET /qr-styles/resolve. The two modes are distinguishable, but the run-on sentence and the unexplained phrase 'Read tier' keep it from being crisply stated.

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

Usage Guidelines3/5

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

It implies the selection rule well – call with no IDs to list, call with task_id/list_id/project_id/site_id to resolve – and gives the fallback chain. But it never names or excludes sibling tools such as tascan_apply_qr_style, tascan_save_qr_style, or tascan_generate_qr, so the agent must infer the boundary itself.

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

tascan_list_reportsA
Read-onlyIdempotent
Inspect

List existing report links for a list or project (completion / service / project / evidence), newest first, with client acknowledgment status for service reports.

NameRequiredDescriptionDefault
list_idNo
project_idNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
statusNoFilter by status (default pending + sending)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

For a simple read-only list tool with 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.

Parameters4/5

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.

Purpose5/5

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

The description uses a specific verb and resource ('List 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.

Usage Guidelines4/5

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

List the organization's sites (job locations: name, address, lat/lng, client company, external key). Filters: active (true, the default, false or all), q (name, address or client company) and project_id (sites linked to that project). Read tier.

NameRequiredDescriptionDefault
qNoSubstring of the name, address or client company
activeNoDefault true (active sites only)
project_idNoOnly sites linked to this project

TDQS

A4/5.0
Behavior3/5

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

Read-only, idempotent and non-destructive behavior is already declared by annotations, so the description needn't repeat it. What it adds is the field shape of results and the 'Read tier' note, but it says nothing about pagination, result limits, or ordering for an organization-wide listing.

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

Conciseness5/5

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

Two tight sentences: the resource and its returned fields are front-loaded, then filters follow. Every clause carries information; there is no filler.

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

Completeness4/5

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

With no output schema, the description usefully lists the fields returned and covers all parameters, which is enough to call the tool correctly. Missing pagination/limit behavior and ordering for a potentially large org-wide list keeps it from a 5.

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

Parameters3/5

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

Schema coverage is 100% and all three parameters carry descriptions that the prose largely restates (q matches name/address/client company, active defaults true, project_id scopes to a project). Baseline 3 applies since the schema does the heavy lifting, though the description does usefully surface the 'active' default in context.

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

Purpose5/5

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

It states a specific verb and resource ('List the organization's sites') and enumerates what a site contains (name, address, lat/lng, client company, external key), which clearly separates it from the singular tascan_get_site and from tascan_list_zones/projects. An agent can recognize the tool's job without opening the schema.

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

Usage Guidelines4/5

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

It documents each filter and the important default (active=true lists only active sites; false/all change scope), giving clear conditions for narrowing results. It stops short of naming alternatives such as tascan_get_site for a single record or tascan_list_projects for the parent entity.

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

tascan_list_subtasksA
Read-onlyIdempotent
Inspect

List the subtasks of a task, including completion state, stored response values, and completion timestamps (per-set timing).

NameRequiredDescriptionDefault
task_idYesParent task ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple, one-parameter read-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.

Parameters3/5

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.

Purpose5/5

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

The description uses a specific verb and resource: 'List the 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.

Usage Guidelines3/5

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

List all registered NFC tags in the organization with their linked projects/task lists and scan counts

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

List the tasks in an event (task list). status "open" returns only tasks with no completion yet: use it when checking for work to do, so a long list is not re-read in full. "done" returns only completed tasks; "all" (default) returns every task.

NameRequiredDescriptionDefault
statusNoopen = not completed yet (use this to find work), done = completed, all = everything (default).
list_idYesTask list (event) ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds a useful behavioral note that filtering by 'open' avoids re-reading long lists, but says nothing about pagination, ordering, or result size limits.

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

Conciseness4/5

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

Front-loads the core action, then explains the status filter in a compact sequence. Every sentence carries information, though the enum explanation slightly duplicates the schema.

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

Completeness4/5

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

For a read-only list tool with an output schema absent but an obvious tabular return, the description covers the required list_id and the filter semantics adequately. Ordering/pagination behavior is the only notable omission.

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

Parameters3/5

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

Schema description coverage is 100% and the enum values are already documented per-parameter, so the description largely restates the schema. It adds the default ('all') and a rationale for 'open' but no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('List') and resource ('the tasks in an event (task list)'), so the agent knows exactly what it returns. It does not explicitly distinguish itself from siblings like tascan_get_task or tascan_list_subtasks, but the scope is clear enough to select the right tool.

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

Usage Guidelines4/5

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

Gives explicit guidance on the status filter: 'open' should be used 'when checking for work to do, so a long list is not re-read in full', and 'done'/'all' are defined. No exclusions or named alternative tools, 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_list_templatesA
Read-onlyIdempotent
Inspect

List available task templates (built-in and saved)

NameRequiredDescriptionDefault
categoryNoFilter by category (e.g. "live-events", "hospitality", "logistics")

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the verb 'List' and 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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault
completion_idYestask_completions.id (UUID) — from tascan_get_task -> completions[].id.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: "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.

Usage Guidelines3/5

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

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

NameRequiredDescriptionDefault
queryNoSubstring match on name, email, or phone
has_emailNotrue/false — same for email
has_phoneNotrue = only workers with a phone on file; false = only without
actor_kindNoOnly these kinds of worker row: person, agent, admin or device, or a comma list (e.g. "person,agent")
active_sinceNoISO date/datetime — only workers with last_active_at on/after this
include_inactiveNotrue = 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

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds that each row includes completion_count, which is useful return-shape context, but says nothing about pagination, result caps, or ordering — so it adds only modest value beyond annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then filtering and result-shape details. Zero wasted text.

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

Completeness4/5

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

No output schema, but the description compensates partially by naming the completion_count return field. Combined with full schema coverage and complete annotations, an agent has what it needs; only pagination/limits are unaddressed, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meanings are already fully documented in the schema. The description only echoes the filter categories (name/email/phone, contact presence, last activity) without adding syntax or semantics beyond that, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List workers (taskees) in the organization') and clarifies the 'taskees' synonym, which is genuinely useful. It does not distinguish itself from siblings like tascan_get_worker (single lookup) or tascan_list_agents, so sibling differentiation is missing.

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

Usage Guidelines3/5

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

The description implies usage by listing supported filters (substring, contact-info presence, last-activity date), which gives an agent a sense of scope. But it never states when to use this vs tascan_get_worker or tascan_list_agents, and gives no exclusions or prerequisites.

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

tascan_list_zonesA
Read-onlyIdempotent
Inspect

List geofenced work zones, optionally filtered by project. Shows center, radius, routing target, and zone-lock status.

NameRequiredDescriptionDefault
project_idNoFilter by project

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_workersA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
dry_runNotrue (default) = report reassignment counts only, change nothing. false = execute atomically.
primary_worker_idYesThe canonical worker that survives (usually the one with a phone)
duplicate_worker_idsYesWorker IDs to fold into the primary (max 20)

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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_mint_completion_reportA
Idempotent
Inspect

Mint (or reuse) a task list's completion report and get its link (POST /lists/:id/completion-report): the same stable link tascan_generate_report type completion returns, never a worker's own shift report. Nothing is sent; text it with tascan_text_report. Write tier.

NameRequiredDescriptionDefault
list_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces this with 'mint (or reuse)' and 'stable link.' It adds context annotations cannot carry: that minting has no send side effect ('Nothing is sent') and that it is gated as 'Write tier,' which warns of permission requirements. Missing details on scope/expiry of the link keep it from a 5.

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

Conciseness4/5

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

One dense sentence front-loads the action and result, then packs the disambiguation, side-effect note, and tier. Every clause earns its place, though the embedded endpoint and 'Write tier' jargon make it slightly harder to scan than plain prose.

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

Completeness4/5

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

For a one-parameter, non-destructive write with no output schema, the description covers what the agent still needs: the return is a link, the operation is reusable/idempotent, nothing is sent, and there is a follow-up tool. Only the auth/tier mechanics and link lifetime remain unspecified.

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

Parameters3/5

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

Schema description coverage is 0% for the single list_id parameter, so the description must compensate. It does so only indirectly, by calling it 'a task list's' report and referencing the ':id' path segment, which implies list_id is a task-list identifier. That is enough to call correctly but no format or example is given.

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

Purpose5/5

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

States a specific verb ('Mint (or reuse)') plus resource ('a task list's completion report') and the resulting artifact ('get its link'), with the endpoint as corroboration. It explicitly separates itself from tascan_generate_report (same link type) and from a worker's shift report, so an agent can distinguish it from siblings without opening a schema.

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

Usage Guidelines4/5

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

'Mint (or reuse)' signals call-anytime idempotent behavior, and 'Nothing is sent; text it with tascan_text_report' tells the agent the follow-up path for delivery. It doesn't spell out the precise condition selecting this over tascan_generate_report directly (the relationship is only implied via 'same stable link ... returns'), so it stops short of full when/when-not coverage.

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

tascan_nudge_workerAInspect

Nudge a worker by text about a task list (POST /lists/:id/nudge), through the same guards as the Simple page's nudge: the list must be yours, the recipient must be known to your org, burst limits, the SMS quota and STOP opt-outs apply, and the list link is appended. Send worker_id or phone (one), and an optional message (at most 300 characters). tascan_send_sms is the general text lane. Full tier.

NameRequiredDescriptionDefault
phoneNo
list_idYes
messageNo
worker_idNo

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: ownership requirement ('the list must be yours'), recipient must be org-known, burst limits, SMS quota, STOP opt-outs, and that the list link is auto-appended. Annotations only give safety hints, so this guard-level detail is genuinely valuable context an agent cannot infer.

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

Conciseness4/5

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

Front-loads the verb and resource, then packs constraints efficiently. The guard enumeration reads as one long run-on clause, slightly dense, but nearly every element adds actionable information.

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

Completeness5/5

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

For a non-idempotent, open-world mutation with no output schema, the description covers recipients, guards, quota/opt-out rules, parameter constraints, and the sibling alternative. An agent has everything needed to call it correctly.

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

Parameters4/5

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

With 0% schema coverage the description carries the load and does so well: it documents the worker_id/phone mutual-exclusivity ('one') and the 300-character cap on message, both constraints absent from the schema. Minor gap on phone format syntax keeps it from 5.

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

Purpose5/5

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

States a specific verb ('Nudge'), resource ('a worker'), channel ('by text') and object ('about a task list'), plus the underlying endpoint. It distinguishes itself from the sibling tascan_send_sms by naming it as the 'general text lane', so an agent can tell which of the two to pick.

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

Usage Guidelines4/5

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

Explicitly routes the general case to tascan_send_sms and implies this is the list-specific lane, and it states the delivery-identifier choice (worker_id OR phone, one). It lacks an explicit 'do not use when' beyond that sibling pointer, keeping it at 4 rather than 5.

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

tascan_org_analyticsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
viewYesWhich analytics surface to read.
limitNoresolutions only: page size (default 50, max 200).
offsetNoresolutions only: page offset.
patternNoresolutions only: true to filter to pattern_detected rows only.
categoryNoresolutions only: filter by issue_category.
severityNoresolutions only: filter by classification_severity.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb and resource: 'Read 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.

Usage Guidelines3/5

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_evidenceA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
actorYesWho did it.
actionYesWhat happened, e.g. inspected, scanned, calibrated.
objectYesWhat it happened to.
locationNoOptional location.
provenanceNoOptional 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.
correlationNoOptional correlation hint.
occurred_atYesISO timestamp for when the event actually happened.
idempotency_keyYesRequired, 1-200 chars. The same key on the same org replays the same stored row.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description names a specific verb and resource: '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.

Usage Guidelines4/5

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_messageA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
bodyYesThe 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.
kindYesquestion = 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_idYesTask ID (UUID). For an answer: the QUESTION task id (tascan_get_task on the asker shows coord.blocked_by).
reply_toNoOptional message id this replies to.
addresseeNoOptional, kind=question only: who the question is for (recorded; nobody is paged).
build_refNoOptional sha256:<64 hex> the message is about (defaults to the cycle task's bound build).
idempotency_keyNoOptional replay key (≤ 200 chars): the same key on the same task returns the same message id.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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

The description states a specific verb and resource, '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.

Usage Guidelines5/5

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

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.

NameRequiredDescriptionDefault
project_idYesProject ID (UUID).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb and resource: '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.

Usage Guidelines4/5

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

A project's progress and insights (GET /projects/:id/insights), counted like the portal's panel: per task list done of total (people's tasks), open issues by list (open / acknowledged / in progress, 30 days; an archived, completed or demo project counts none unless demo=true), and the newest 20 activity items (completions, scans, issues) with who and when. Read tier.

NameRequiredDescriptionDefault
demoNoCount a demo / test project's open issues too (default false)
project_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description correctly spends its words on semantics instead: a 30-day window for open issues, the rule that archived/completed/demo projects count nothing unless demo=true, and the cap of 20 activity items. That is genuinely additive context not derivable from the annotations.

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

Conciseness4/5

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

Front-loaded with purpose and endpoint, then the three returned sections in order; information-dense rather than padded. The single long sentence with stacked parentheticals is slightly hard to parse but every clause carries content.

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

Completeness4/5

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

With no output schema, the description does the work of describing the return payload (per-list done of total, open issues bucketed open/acknowledged/in progress, newest 20 activity items with who and when). For a two-parameter read tool this is close to sufficient; only the project_id format and the response envelope remain unstated.

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

Parameters3/5

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

Schema coverage is 50%: the demo parameter is already documented in the schema, and the description mostly restates its effect (with the useful addition that archived/completed projects also count zero). project_id has no schema description at all, though the ':id' in the endpoint hints at its role. Adequate but not compensating for the gap.

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

Purpose4/5

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

States a specific verb+resource ('A project's progress and insights') and even cites the backing endpoint GET /projects/:id/insights, then enumerates the three sections returned. It never names a sibling (e.g. tascan_project_digest or tascan_get_project) as an alternative, so differentiation from adjacent read tools is left implicit.

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

Usage Guidelines3/5

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

The trailing 'Read tier.' signals it is a non-mutating read and the demo flag rule gives a conditional usage hint, but there is no explicit when-to-use or when-not-to-use guidance versus siblings like project_digest, get_project, or org_analytics.

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

tascan_query_responsesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
taskYesTask title pattern (case-insensitive substring) or exact task ID
limitNoMax responses to return (default 200, max 500)
project_idYesProject ID

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_quickstartAInspect

One action to a genuinely verified receipt (POST /quickstart). Under your org it reuses-or-creates the project "TaScan Quickstart", its list "Quickstart" and the worker "Quickstart executor", adds a NEW task "Reply with the exact text: ", completes it with your key, has the named policy quickstart_exact_output v1 compare the response to the expected text (verified or refuted, signed into the receipt), and publishes the receipt's public profile. expected defaults to "VERIFIED" (max 200 chars); response defaults to expected — pass a different response to see a refuted receipt. Returns the receipt URL and the public verify URL. Write tier.

NameRequiredDescriptionDefault
expectedNoThe exact text the task asks for (default "VERIFIED", max 200 chars).
responseNoThe response to submit (default: the expected text). A different value is refuted.

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it discloses the reuse-or-create semantics for the project/list/worker, that a NEW task is added each call (consistent with idempotentHint=false), the named verification policy, that a signed receipt is produced, that the public profile is published, and that the return is the receipt URL plus public verify URL. It even labels the operation 'Write tier.'

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

Conciseness4/5

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

A single dense paragraph, but it is front-loaded with the purpose and every clause carries information given the multi-step behavior being described. It is on the longer side yet wastes little; only minor tightening is possible.

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

Completeness5/5

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

For a composite write tool with no output schema, the description covers side effects, defaults, the verification policy, and what the call returns. An agent has everything needed to invoke it correctly and interpret the result.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantic meaning beyond the schema: expected defaults to 'VERIFIED', response defaults to expected, and crucially that passing a differing response yields a refuted receipt. That maps the parameter choice to an outcome the schema alone does not convey.

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

Purpose5/5

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

States a precise verb+resource ('One action to a genuinely verified receipt') and then enumerates the exact artifacts created: project 'TaScan Quickstart', list 'Quickstart', worker 'Quickstart executor', and a task. An agent can tell this composite onboarding tool apart from granular siblings like create_project or complete_task without opening a schema.

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

Usage Guidelines3/5

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

The description establishes the scenario (a one-shot quickstart to a verified receipt) and hints at a demo use via 'pass a different response to see a refuted receipt,' but it never states explicitly when to prefer this over chaining the individual primitives. Usage is strongly implied by the name and content rather than spelled out with alternatives or exclusions.

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

tascan_raise_issueAInspect

Raise an issue on a task (POST /tasks/:id/issues), the way an admin does it in TaScan: status OPEN, source admin, the description as the first thread message. category DELAY, MISSING_MATERIALS, SAFETY_CONCERN, EQUIPMENT_ISSUE, WEATHER, PERSONNEL, QUALITY or OTHER (default); severity LOW, MEDIUM (default), HIGH or CRITICAL. Write tier.

NameRequiredDescriptionDefault
task_idYes
categoryNo
severityNo
photo_pathNoA task-photos storage path under issues/ (upload first)
descriptionYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish that this is a non-read-only, non-destructive, non-idempotent write operation. The description adds useful behavioral detail beyond annotations: created status is OPEN, source is admin, and the description becomes the first thread message, with category and severity defaults.

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

Conciseness4/5

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

The description is dense but front-loads the core action and then supplies necessary enum and default details. The category and severity lists make it longer, but that information is useful and not redundant.

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

Completeness4/5

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

For a five-parameter write tool with annotations covering safety and no output schema, the description is largely complete. It covers creation semantics, defaults, and thread-message behavior, though it leaves task_id and return behavior implicit.

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

Parameters4/5

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

Schema description coverage is low at 20%, so the description carries more burden. It compensates well for the ambiguous category and severity parameters by listing allowed values and defaults, and it explains how description is used, though it does not elaborate on task_id.

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

Purpose4/5

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

The description clearly states a specific verb and resource: raising an issue on a task, including the underlying POST endpoint. It does not explicitly distinguish itself from nearby siblings such as update_issue or reply_issue, so it falls short of the top score.

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

Usage Guidelines2/5

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

It explains the admin-style creation behavior and marks this as a write-tier tool, but gives no explicit guidance on when to use this versus update_issue, reply_issue, or list_issues. Alternative-routing guidance is absent.

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.

NameRequiredDescriptionDefault
ai_agentNoName of the AI agent posting (default: TaScan AI)
issue_idYesIssue ID to recommend a fix for
recommendationYesThe AI-generated recommendation text (clear, actionable instructions)
structured_recommendationNoOptional 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

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_integrationA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
noteNoOptional note (≤ 2000 chars) recorded alongside the completion — e.g. what changed in this deploy.
root_idYesThe cycle root = the T1 build task id (tascan_get_cycle_report / tascan_create_cycle). Must currently be authorized (checkpoint Approved, Integrate task open).
deploy_idYesThe 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

A4.2/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness4/5

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

For a mutation tool with no output schema, the description 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.

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description 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.

Purpose5/5

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.

Usage Guidelines4/5

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_agentA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
idYesUnique agent ID (e.g. "my-agent-1")
nameYesDisplay name (e.g. "Research Bot")
typeYesAgent type
modelNoModel powering this agent (e.g. "claude-sonnet-4-6")
inbox_idYesTask list ID this agent monitors for new tasks
locationNoWhere the agent runs (e.g. "AWS us-east-1")
worker_idNoTaScan worker ID for this agent
descriptionNoWhat this agent does
capabilitiesYesTask type prefixes this agent handles (e.g. ["RESEARCH", "WRITE"])

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb and resource: '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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
nameYesAsset name (e.g. "LED Wall Processor #3")
asset_typeNoType (e.g. "LED processor", "forklift", "scaffold")
project_idNo
descriptionNoContext the AI assessor should know
serial_numberNoSerial number or asset tag (unique per org)
location_descriptionNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
task_idNoTask ID (required for task targets)
tag_nameYesFriendly name (e.g., "Ballroom A Door", "Breaker Panel 3")
project_idNoProject ID
target_typeYesWhat this tag points to
task_list_idNoTask list ID (required for task_list/task targets)
tag_hardware_idYesNFC tag hardware serial number (e.g., "04:CB:6C:51:CE:2A:81")
location_descriptionNoPhysical location of the tag

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a tool with 7 parameters 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

Remove a worker from a project (DELETE /projects/:id/workers/:worker_id): deletes only that worker's assignments on the project's lists. Completions, issues and the worker record are untouched. Receipted first (actor, worker, lists, reason). To deactivate the worker everywhere use tascan_update_worker active false. Write tier.

NameRequiredDescriptionDefault
reasonNo
worker_idYes
project_idYes

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the destructive/idempotent annotations by naming exactly what is deleted (list assignments) and what survives (completions, issues, worker record), plus the receipting behavior with its recorded fields and the 'write tier' classification. The only thing absent is any note on reversibility or how to undo, which for a destructive operation would complete the picture.

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

Conciseness5/5

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

Three terse sentences, each earning its place: scope definition first, blast-radius clarification second, alternative routing last. No filler and no repetition of the annotation hints.

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

Completeness4/5

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

For a destructive three-parameter tool with no output schema, the description covers destruction scope, side effects, receipting, and the sibling alternative. It stops short of describing what the call returns (e.g., a receipt id), which would let an agent chain verify_receipt or get_receipt.

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

Parameters4/5

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

Schema coverage is 0%, so the description has to carry the load; it does so for the path parameters by mapping them to the endpoint template and reveals that 'reason' is captured in the receipt, which the bare string schema does not convey. It still doesn't clarify that reason is optional or what a good reason looks like, leaving one gap.

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

Purpose5/5

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

Names a specific verb and resource ('Remove a worker from a project') and pins the exact endpoint, then immediately narrows scope: 'deletes only that worker's assignments on the project's lists.' That distinguishes it from delete_worker and update_worker without the agent needing to open any schema.

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

Usage Guidelines5/5

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

Explicitly routes the alternative case: 'To deactivate the worker everywhere use tascan_update_worker active false.' Combined with the stated scope of removal (project-list assignments only), the when-to-use and when-not-to-use boundary is fully specified.

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

tascan_reply_issueAInspect

Reply on an issue's thread (POST /issues/:id/messages): an issue_messages row from the admin side. media_path attaches a photo already uploaded to task-photos under issues/ (a storage path, never a URL). Write tier.

NameRequiredDescriptionDefault
bodyYes1-4000 characters
issue_idYes
media_pathNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world write, and the description adds real context beyond that: the 'Write tier' framing plus the constraint that media_path must reference an already-uploaded storage path under issues/, never a URL. It stops short of saying what happens on the other side (notification to the worker, response shape).

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

Conciseness4/5

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

Front-loaded with the action and route, then the media_path caveat, then the tier label. Dense but every clause carries information; the nested parentheticals make it slightly harder to scan than a flat prose sentence.

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

Completeness4/5

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

For a three-parameter write tool with annotations and no output schema, the description covers endpoint, resource, the non-obvious media_path semantics, and the write tier. Missing only side effects (does the reply notify the worker?) and any error/validation behavior.

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

Parameters4/5

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

Schema coverage is only 33% (only body's 1-4000 char range is documented), so the description has to compensate. It does so well for media_path — clarifying it is a task-photos storage path under issues/, not a URL — but leaves issue_id undocumented and adds nothing to body's limits.

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

Purpose4/5

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

States a specific verb and resource ('Reply on an issue's thread') and pins the resource further with the route POST /issues/:id/messages and the resulting 'issue_messages row from the admin side'. That is enough to separate it from siblings like tascan_update_issue or tascan_post_message, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

'from the admin side' and 'Write tier' imply this is the agent-side write counterpart to text from the worker side, but there is no explicit when-to-use/when-not guidance and no named alternative (e.g. reply_with_list, raise_issue). Usage must be inferred from the route and tier label.

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.

NameRequiredDescriptionDefault
tasksYesItems the recipient answers — each becomes a typed task
titleYesReply list title (e.g. "Before I can start...")
author_nameNoWho is replying (shown in the thread)
parent_list_idYesThe list being replied to

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A report's engagement (GET /reports/:token/engagement, get_report_engagement): declared, engaged and idle minutes per worker shift on the report's list. There are no view or open counts. Read tier.

NameRequiredDescriptionDefault
tokenYesThe report token

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: it enumerates what the response contains (declared/engaged/idle minutes per shift) and explicitly rules out view/open counts, preempting a false assumption. It still omits pagination/size behavior, which keeps it off a 5.

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

Conciseness4/5

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

Two tight sentences with the payload definition front-loaded and the exclusion immediately after. The raw route (GET /reports/:token/engagement) and internal symbol (get_report_engagement) are scaffolding an agent cannot act on, but they cost little space.

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

Completeness4/5

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

With no output schema, the description must describe the return shape, and it does so concretely (minutes by worker shift). One required, fully documented parameter means nothing else is needed for correct invocation. Only the absence of any note on result size or empty-report behavior keeps it from 5.

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

Parameters3/5

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

There is a single required parameter with 100% schema coverage ('The report token'), so the schema already carries the semantics. The description contextualizes the token as belonging to a report on the report list, but adds no format or sourcing detail (e.g. obtain it from tascan_list_reports). Baseline 3 applies.

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

Purpose4/5

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

States a specific resource and payload: declared, engaged and idle minutes per worker shift for a report. The line 'There are no view or open counts' sharpens the boundary against what an agent might expect from a generic 'engagement' report. It stops short of naming the sibling it displaces (e.g. tascan_get_report or tascan_get_cycle_report), so an agent must still infer the split.

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

Usage Guidelines3/5

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

'Read tier' plus the read-only framing implies when it is appropriate, and the metric list implies the analytical use case. However, with close siblings like tascan_get_report, tascan_get_cycle_report and tascan_org_analytics, there is no explicit 'use this instead of X when Y' guidance, 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_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).

NameRequiredDescriptionDefault
memoNoWhat the payment is for (shown to the payer)
worker_idYesWorker who gets paid
payer_nameNo
payer_emailYesWho pays — receives the pay link on verification
amount_centsYesAmount in cents ($1 min, $10,000 max)
task_list_idYesTask list the payment is tied to
idempotency_keyNoB1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original pledge instead of creating a second one.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only supply the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description carries the real burden and delivers: no money moves or card stored at pledge time, funds route directly to the worker with a 0% TaScan fee, and the payer receives a Stripe pay link on verification. Minor gap: the annotations declare idempotentHint=false while the schema's idempotency_key offers replay semantics — the description never reconciles that.

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

Conciseness4/5

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

Three tight sentences with the trigger condition and the 'no money moves' reassurance front-loaded, and no filler. The parenthetical conditionals make it dense but every clause earns its place.

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

Completeness4/5

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

For a 7-parameter mutation tool with no output schema, the description covers timing, prerequisite, fee model, and fund routing well. What it omits is the return value (what the pledge call yields) and failure modes, which an agent calling a payment-pledge tool would reasonably want.

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

Parameters3/5

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

Schema description coverage is 86%, so the schema already documents every parameter including the idempotency_key replay behavior. The description reinforces the payer/worker money-routing relationship but adds no format, range, or syntax detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Pledge a payment on a task list') and immediately defines the trigger condition (list verified complete with photo evidence). This distinguishes it from siblings like tascan_create_invoice, tascan_list_payments, and tascan_verify_receipt, which an agent can rule out without opening their schemas.

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

Usage Guidelines4/5

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

Gives clear when-to-use context: at pledge time nothing moves, and the pay link is issued only when the list is verified complete. It also states a hard prerequisite (worker must have completed payout onboarding on their profile). It does not name alternative tools or explicitly say when NOT to use it, 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_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.

NameRequiredDescriptionDefault
paramsYesFor 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_atNoOptional ISO timestamp to schedule the job for (default now).
check_typeYesWhich autonomous check to run.
completion_idYestask_completions.id (UUID) — from tascan_get_task -> completions[].id.
idempotency_keyNoOptional replay key (up to 200 chars).

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines4/5

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_resolve_insightAInspect

Apply or dismiss an AI Insight (POST /insights/:id/apply or /dismiss), with the Simple page's status writes (applied / dismissed, an optional dismiss reason). Apply marks it applied and returns the suggestion (title, body, action) for you to carry out; it runs no AI and changes nothing else. Only a pending (or explained) insight. Write tier.

NameRequiredDescriptionDefault
actionYes
reasonNo
insight_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the write/safety profile (readOnly=false, destructive=false, idempotent=false), and the description adds value beyond that: apply runs no AI and changes nothing else, only the two status writes occur, and 'Write tier' telegraphs a permission/rate tier. It stops short of saying what dismissal returns or whether re-applying errors.

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

Conciseness4/5

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

Two front-loaded sentences that lead with the action and endpoints before caveats. Slightly dense with parenthetical endpoint paths and 'Write tier', but nearly every clause carries usable signal.

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

Completeness4/5

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

With no output schema, the description usefully discloses what apply returns (title, body, action), states the state precondition, and confirms no side effects beyond the status write. The dismiss return value and the effect of a missing/nonexistent insight_id remain unstated.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry all meaning for the 3 parameters. It conveys that action is apply vs dismiss and that reason is an optional dismiss-only field, but says nothing about the insight_id format or where it comes from, leaving a real gap.

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

Purpose5/5

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

Names a specific verb pair and resource ('Apply or dismiss an AI Insight') plus the exact endpoints, and separates apply ('returns the suggestion for you to carry out') from dismiss ('optional dismiss reason'). An agent can distinguish it from tascan_list_insights without opening the schema.

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

Usage Guidelines3/5

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

Provides a real precondition ('Only a pending (or explained) insight'), which narrows when the call is valid. But it never names alternatives (e.g., list_insights to find a pending insight) or states what to do when the insight is already resolved, so the routing guidance is implied rather than explicit.

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

tascan_revoke_delegationA
DestructiveIdempotent
Inspect

Revoke a delegated child key immediately (DELETE /delegations/:key_id) — self-revoke, revoke by an ancestor key, or by an admin session of the org; any other caller is refused. Revoking cascades to every key IT delegated, in turn (the database trigger, not application code). Idempotent: revoking an already-revoked key reports already_revoked, no error.

NameRequiredDescriptionDefault
key_idYesThe delegated key id to revoke (from tascan_list_delegations)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description still adds non-obvious behavior: the revocation cascades to every key the target delegated (implemented via a database trigger, not application code), takes effect immediately, and returns already_revoked rather than an error on repeat calls. This is exactly the extra context structured fields cannot carry.

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

Conciseness5/5

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

Three dense sentences, each front-loaded with actionable content: the operation and endpoint, then authorization scope, then the cascade side effect, then idempotency semantics. No filler sentences.

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

Completeness5/5

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

For a one-parameter mutation with no output schema, the description covers the essentials an agent needs: who may call it, the destructive cascade it triggers, and the exact response signal for an already-revoked key. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single key_id parameter is fully described in the schema, including its source (tascan_list_delegations). The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (revoke) and resource (delegated child key), plus the concrete HTTP endpoint DELETE /delegations/:key_id. It is trivially distinguishable from its closest sibling, tascan_list_delegations, without opening either schema.

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

Usage Guidelines4/5

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

Gives explicit caller-eligibility rules — self-revoke, ancestor-key revoke, or org-admin session; all other callers are refused — which tells an agent exactly when this call will succeed. It stops short of naming an alternative tool to use for the disallowed cases, but the gating conditions are unusually concrete.

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

tascan_revoke_deviceA
DestructiveIdempotent
Inspect

Revoke a device credential immediately — the kill switch for a lost, stolen, or decommissioned device (RFID portal, barcode gun, PLC, camera, robot, tool, sensor). Its next evidence post is refused. Idempotent: revoking an already-revoked device reports already_revoked and mints no second receipt. Requires the device:admin permission (owner-only, needs full, never reachable through OAuth).

NameRequiredDescriptionDefault
reasonNoWhy this device is being revoked (up to 500 characters)
device_idYesDevice ID to revoke

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the real consequence ('its next evidence post is refused'), the idempotency outcome ('reports already_revoked and mints no second receipt'), and a precise auth constraint (device:admin, owner-only, never reachable through OAuth). Annotations only flag destructive/idempotent; the description explains what those mean in practice.

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

Conciseness4/5

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

Front-loaded with the core action and consequence, then idempotency and permissions in descending importance. Dense but every clause carries information; the parenthetical device enumeration is the only slightly expendable part.

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

Completeness5/5

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

For a mutation tool without an output schema, the description supplies the missing outcome semantics (evidence posts refused, already_revoked report), the auth model, and reversibility implications, leaving nothing an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description conveys the intent of revocation but adds no syntax, format, or edge-case detail for device_id or the up-to-500-character reason beyond what the schema states.

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

Purpose5/5

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

States a specific verb and resource (revoke a device credential) and grounds it with a memorable metaphor plus concrete device examples. No sibling tool performs a revoke action, so an agent can identify this uniquely without opening schemas.

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

Usage Guidelines4/5

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

The 'kill switch for a lost, stolen, or decommissioned device' clause gives clear triggering contexts. It stops short of naming alternatives or when-not-to-use conditions, and no revoke sibling exists, so there is nothing to route against.

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

tascan_save_chat_threadAInspect

Create a chat thread for an admin of your org (no thread_id: POST /chat/threads with admin_id and an optional title, default New Chat) or rename one (thread_id: PUT /chat/threads/:id with title and/or preview). Write tier.

NameRequiredDescriptionDefault
titleNo
previewNo
admin_idNo
thread_idNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare write (readOnlyHint=false), non-destructive, non-idempotent, closed-world. The description adds useful behavioral detail beyond them: the default title 'New Chat', that title is optional on creation, and that renaming is a partial update of title and/or preview. It does not state what happens to fields not supplied, whether renaming requires admin_id, or what the call returns.

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

Conciseness4/5

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

One dense sentence, front-loaded with the outcome, then the branch conditions, then a useful tier marker. The raw HTTP endpoint notation is slightly jargon-heavy but earns its place by making behavior predictable.

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

Completeness3/5

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

For a mutation tool with annotations and no output schema, the definition covers mode selection and parameter roles, but leaves open permission requirements, which fields survive a rename, and the response shape an agent should expect after a write.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the meaning, and it largely does: admin_id and optional title are tied to the create path, thread_id selects the rename path, and preview is scoped to renaming. Only format/constraint details are left implicit.

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

Purpose5/5

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

States a specific verb (create/rename) and resource (chat thread) and disambiguates the two modes it handles via the presence or absence of thread_id. An agent can tell exactly which operation will execute from the parameter shape without opening the schema.

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

Usage Guidelines4/5

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

The parenthetical routing (no thread_id → POST with admin_id and optional title; thread_id → PUT with title and/or preview) is an explicit when-to-use-which-mode rule. It doesn't reference sibling alternatives such as list_chat_threads or delete_chat_thread, but the internal branching is unambiguous.

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

tascan_save_qr_styleA
Destructive
Inspect

Create a saved QR look (no qr_style_id: POST /qr-styles), change one (PUT /qr-styles/:id) or delete one (delete true). style is a flat JSON object of the QR options; a logo is a storage path in your org's logo folder (/qr/), never a data: URL. is_default true makes it the org default (the previous default is cleared). Write tier.

NameRequiredDescriptionDefault
nameNo
styleNo
deleteNo
is_defaultNo
qr_style_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Goes beyond the destructiveHint=true annotation by disclosing the non-obvious side effect that setting is_default clears the previous org default, plus a real validation rule (logo must be an org storage path, never a data: URL) and the 'write tier' rate/auth class. It stops short of saying whether delete is irreversible or what a successful write returns.

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

Conciseness4/5

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

Front-loaded with the action and mode predicates, then rules, then tier; every sentence carries information. The parenthetical HTTP endpoints and 'Write tier' are slightly internal-flavored but aid an agent familiar with the API surface, and there is no filler.

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

Completeness3/5

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

For a destructive, 5-parameter write tool with no output schema, the essentials are covered, but notable gaps remain: which parameters are required for create (all are optional per schema), what the response contains (e.g., the new style id), and what the valid keys inside style are. An agent can invoke it, but may need trial and error on the create path.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the burden and mostly succeeds: qr_style_id, delete, is_default and style all get meaning and conditional behavior, and the logo path format is spelled out. Gaps remain – 'name' is never mentioned, and 'flat JSON object of the QR options' does not reveal which option keys are valid.

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

Purpose4/5

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

States a specific verb+resource ('Create a saved QR look') and then enumerates the three operating modes driven by parameter presence: POST when no qr_style_id, PUT when one is supplied, delete when delete=true. It is clear what the tool does, though it never names the nearby siblings (list_qr_styles, apply_qr_style, generate_qr) that an agent must choose between.

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

Usage Guidelines4/5

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

Gives concrete when-conditions per mode ('no qr_style_id: POST', 'change one', 'delete true'), so an agent knows which call shape to use. It does not say where to obtain an existing qr_style_id (presumably list_qr_styles) or when to prefer applying a style versus saving one, so alternatives are only implied.

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

tascan_schedule_smsA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
phoneNoRaw phone (E.164) — must already belong to a worker or roster entry of your org
list_idNoOptional task list ID — appends the tap-to-open checklist link
messageYesMessage text (1-400 chars, links stripped). Transactional and work-related only.
send_atYesWhen 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_idNoWorker ID — texts their phone on file (preferred over raw phone)
include_linkNoAppend the list link (default true when list_id is given)
idempotency_keyNoOptional caller key (≤ 200 chars) — replays return the existing scheduled row

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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

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.

NameRequiredDescriptionDefault
qNoSkill, category, name, or civilian job title — e.g. "forklift", "LED wall", "AV technician"
cityNoFilter by the worker's opt-in home city, e.g. "Las Vegas"
limitNoMax cards (default 25, max 50)
availableNoOnly workers who marked themselves available on their passport
min_completionsNoOnly workers with at least this many verified completions

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. Attach images (MMS) with media_url (public https image URL) or media_base64 + media_type (jpeg/png/gif, max 3.5 MB) — e.g. a diagram, a tutorial photo or a site photo; the message text is optional when an image is attached. 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.

NameRequiredDescriptionDefault
phoneNoRaw phone number (e.g. "+17025551234") — used when no worker_id given
list_idNoOptional task list ID — appends a tap-to-open worker checklist link
messageNoMessage text. Transactional and work-related only.
media_urlNoOptional image to attach (MMS): a public https URL of a JPEG, PNG or GIF. The carrier fetches it at send time.
worker_idNoWorker ID — sends to their phone on file (preferred over raw phone)
media_typeNoMIME type of media_base64 (not needed when media_base64 is a data: URI).
include_linkNoWhen 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.
media_base64NoOptional image to attach (MMS) as base64 bytes (a data: URI prefix is accepted). JPEG, PNG or GIF, max 3.5 MB. Stored privately by TaScan and sent through a short-lived link.
idempotency_keyNoB1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response instead of sending a second text.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false. The description adds valuable context beyond those hints: the message is sent from TaScan's carrier-registered A2P number (or org Twilio if BYOK), counts against the org's monthly SMS quota unless BYOK, and is auto-prefixed with 'TaScan:' per carrier registration. It does not mention rate limits or failure modes, but for a send tool it is meaningfully transparent about billing and sender identity.

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

Conciseness4/5

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

The description is a single dense paragraph that front-loads the core action before covering optional features and sending constraints. Every sentence carries relevant information, though bullet-point structure would improve scanability for the media and sender details.

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

Completeness4/5

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

With no output schema and full annotation coverage, the description must explain send behavior, media handling, link attachment, sender identity, quota impact, and content policy — and it does. It omits any mention of idempotency_key (though the schema covers it) and doesn't point to get_sms_status for delivery verification, but overall it is complete enough for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly. The description adds minor extra meaning, such as 'the message text is optional when an image is attached,' but largely restates what is already in the schema (MMS constraints, list link behavior, worker_id preference). Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Send a transactional TaScan SMS text to a worker ... or to a raw phone number.' It also implicitly distinguishes itself from siblings like tascan_schedule_sms and tascan_cancel_scheduled_sms by focusing on immediate sending. An agent can tell what this tool does without opening the schema.

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

Usage Guidelines3/5

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

The description gives clear context (transactional, work-related, no marketing) and explains when to use worker_id vs phone, but it never names alternatives such as schedule_sms, send_task_email, or post_message. Usage is implied by the send action, not explicitly contrasted with sibling tools.

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.

NameRequiredDescriptionDefault
list_idYesTask list (event) ID
messageNoOptional custom message to include in the email body
subjectNoCustom email subject (defaults to auto-generated)
task_idNoOptional specific task ID to highlight
to_nameNoRecipient display name
to_emailYesRecipient email address
include_qrNoInclude QR code for the task list in the email (default: true)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_set_accessA
Idempotent
Inspect

Set the security level of a task list (list_id) or a task (task_id): access_level (open, assigned, secured or null), human_assignees (worker ids, lists only) and agent_assignee (an agent_id of your org, or null; lists only: a task follows its list and refuses it as task_agent_assignee_unsupported). Raising it needs any write key that can see the item; lowering it or removing an assignee needs an owner/admin-tier key (an agent key is refused lower_requires_admin); a Decisions list or a passkey card never goes below assigned. The change and its access_changed ledger event are one transaction (all or nothing); access_conflict when the item changed meanwhile. Write tier.

NameRequiredDescriptionDefault
list_idNo
task_idNo
access_levelNo
agent_assigneeNoLists only: the agent_id whose key alone may reach the list and every task on it, or null
human_assigneesNoLists only: the full set of assigned worker ids (replaces the current set)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds substantial context beyond that: permission tiers for raising vs. lowering, agent-key refusal (lower_requires_admin), the Decisions/passkey floor at assigned, atomic transaction with the access_changed ledger event, and access_conflict on concurrent change. However, it says human_assignees 'replaces the current set', which quietly removes existing assignees while annotations assert destructiveHint=false – a tension worth noting, though not a direct contradiction of a stated behavior.

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

Conciseness4/5

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

Front-loads the operation, then layers constraints and error codes with no filler. It is dense but every clause carries operational meaning; slightly long for a single block but well ordered.

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

Completeness5/5

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

With no output schema, the description carries the full burden and does: it covers the permission model, entity scoping, error conditions (task_agent_assignee_unsupported, lower_requires_admin, access_conflict), and transaction semantics. An agent has what it needs to call this correctly.

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

Parameters4/5

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

Schema coverage is only 40%, but the description compensates well: it names list_id and task_id, lists the access_level enum values (open/assigned/secured/null), and clarifies that human_assignees and agent_assignee are list-scoped. It does not state that exactly one of list_id/task_id must be supplied, which is the main remaining ambiguity.

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

Purpose5/5

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

States a specific verb+resource (set access level of a task list or task), names both target ids, and enumerates the access levels. An agent immediately knows this is the security-level mutation tool, distinct from read-side siblings like tascan_get_access.

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

Usage Guidelines4/5

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

Clear about when each mode applies: human_assignees and agent_assignee are 'lists only', and a task 'follows its list and refuses it as task_agent_assignee_unsupported'. It does not, however, name alternatives (e.g. use tascan_get_access to inspect first) or 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_set_templateA
Idempotent
Inspect

Share a task list as a template (shared true: POST /templates/:list_id) or remove it from your templates (shared false: DELETE, receipted; the list itself is untouched). Returns template_url, the share link (template.html?id=). List reads carry the same template_url. Write tier.

NameRequiredDescriptionDefault
sharedYes
list_idYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (which already say idempotent, non-destructive, not read-only), it discloses that the undo path is receipted, that the underlying list is untouched on removal, that the call returns template_url, and that this is a 'write tier' operation. Consistent with destructiveHint=false.

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

Conciseness4/5

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

Two dense sentences with the mode split front-loaded and no filler. Parentheticals (endpoint, receipted, list untouched) are compressed but readable rather than wasteful.

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

Completeness4/5

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

For a two-parameter, no-output-schema mutation, the description covers both modes, side effects, reversibility, and the returned link. Only failure cases (missing list, already-shared state) are absent.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the burden and does: it defines the two values of `shared` by their effect and endpoint, and identifies `list_id` implicitly as the target list. It does not spell out the id format or error behavior for a non-shared list.

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

Purpose4/5

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

The description states a specific verb and resource — sharing a task list as a template and removing it — and disambiguates the two modes by the `shared` flag. It does not name sibling tools like tascan_apply_template or tascan_list_templates, so the boundary with those is left implicit.

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

Usage Guidelines4/5

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

It gives an explicit condition for each mode: shared=true posts to /templates/:list_id, shared=false deletes the template entry. It does not say when to prefer this over applying an existing template or listing templates, so alternative selection remains inferred.

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

tascan_share_listAInspect

Get a task list's share link and its QR code (an SVG drawn by TaScan; no third-party QR service), and optionally send the link to one person: send.phone or send.worker_id texts it through TaScan's guarded SMS lane (recipient must be known to your org, STOP opt-outs and limits apply), send.email e-mails it. Write tier for the link; sending needs the full access level. style is reserved for saved QR styles and ignored today.

NameRequiredDescriptionDefault
sendNoOptional: send the link to ONE recipient — { phone } or { worker_id } (text) or { email }, plus an optional message (at most 300 characters)
styleNoReserved for saved QR styles (SR-P4c): accepted and ignored today
list_idYesTask list (event) ID

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing permission tiers ('Write tier for the link; sending needs the full access level'), external side effects of the guarded SMS lane (STOP opt-outs and limits apply, recipient must be known to your org), and that messaging is external-facing. These are exactly the auth and rate-limit details an agent needs before triggering a send, and they are consistent with readOnlyHint=false and openWorldHint=true.

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

Conciseness4/5

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

The main action is front-loaded in the first clause, and every subsequent clause adds information (QR provenance, send routing, permission tiers, deprecated style). It is a single dense sentence packed with semicolons, which makes it slightly harder to scan than it needs to be.

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

Completeness5/5

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

For a three-parameter tool with full schema coverage, no output schema, and annotations covering the safety profile, the description covers everything material: what is produced (link + SVG QR), the optional delivery paths, the permission requirements, and the no-op `style` parameter. Nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the nested `send` object, its message length cap, and the deprecated `style` field are already documented in the schema. The description adds routing semantics (phone/worker_id = text, email = e-mail) and the guarded-lane constraint, but largely restates what structured fields already carry, so baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource (get a task list's share link plus its QR code) and clarifies the QR is drawn by TaScan rather than a third-party service, which implicitly partitions it from tascan_generate_qr. The optional send behavior is spelled out clearly. It stops short of explicitly naming which sibling to use for standalone QR or unguarded SMS, so differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

Usage context is concrete: call it to obtain the share link/QR, and add `send` only if you want to deliver it to one recipient, with the constraint that SMS recipients must be known to the org. There are no explicit exclusions (e.g., 'use tascan_send_sms for arbitrary numbers'), so the agent must infer the boundaries against the SMS/email siblings.

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

tascan_text_reportAInspect

Text an existing report's link to a phone (POST /reports/:token/text) through the guarded SMS lane: the number must belong to a worker or roster entry of your org, burst limits, the SMS quota and STOP opt-outs apply, and the report's task list proves ownership. token is the report token (tascan_mint_completion_report / tascan_generate_report). Full tier (it sends to a person).

NameRequiredDescriptionDefault
noteNoOptional short intro, at most 160 characters
phoneYesE.164 or 10-digit US number
tokenYesThe report token

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false. The description adds substantial behavioral context beyond annotations: phone eligibility (worker/roster of org), burst limits, SMS quota, STOP opt-outs, ownership proof via task list, and the 'full tier' cost implication.

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

Conciseness4/5

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

The definition is a single dense sentence that front-loads the action and then packs in constraints. It is efficient with no filler, though the run-on structure could be slightly clearer if split into two sentences.

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

Completeness4/5

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

Given the tool sends an SMS (complex, open-world, non-idempotent) and has no output schema, the description covers prerequisites, guardrails, quotas, and token sources well. It lacks explicit mention of success/error behavior or return confirmation, but for an action tool this is largely sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning for token (report token from tascan_mint_completion_report / tascan_generate_report) and phone (must belong to worker or roster entry). It does not mention the optional 'note' parameter, but the schema already documents it fully.

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

Purpose5/5

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

States a specific verb ('Text') and resource ('an existing report's link') and gives the exact endpoint (POST /reports/:token/text). It distinguishes itself from generic SMS siblings by calling out the 'guarded SMS lane' and report-specific ownership check.

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

Usage Guidelines3/5

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

Provides clear context for when the tool applies (existing report, phone must belong to worker/roster, full tier) and names the token-generating siblings. However, it does not explicitly contrast with tascan_send_sms or tascan_schedule_sms 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_todayA
Read-onlyIdempotent
Inspect

The organization's Today summary (GET /today), counted exactly like the portal's Today: due_today, closed_today, awaiting_check, retake, photos_verified_7d and the needs list (each item's first reason of retake, issue, review, overdue, due_today). Archived, completed and demo projects never count (demo only with demo=true). The day is in zone (an IANA zone), else the org time zone, else UTC (timezone_fallback true). Read tier.

NameRequiredDescriptionDefault
demoNoCount demo / test projects too (default false)
zoneNoIANA time zone for the day boundary, e.g. America/Los_Angeles (default: the org time zone)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description spends its space well by disclosing the counting rules: archived/completed projects never count, demo projects only with demo=true, and the time zone resolution chain ending in UTC with timezone_fallback=true. That is meaningful behavior an agent could not infer from the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Effectively one dense, front-loaded sentence with the resource and the metric list up front, then the exclusion and time zone rules. Nesting parentheticals makes it slightly hard to scan, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned metrics and the needs-list precedence order (retake, issue, review, overdue, due_today), which is exactly what an agent needs. It omits only minor context such as permissions beyond 'Read tier' or the shape of the needs list items.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3; the description goes further by explaining the zone fallback chain (zone → org time zone → UTC) and surfacing the timezone_fallback response flag, and by restating what demo=true actually includes. This adds semantics beyond the terse schema strings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (returns the organization's Today summary, GET /today) and enumerates the exact metrics returned (due_today, closed_today, awaiting_check, retake, photos_verified_7d, needs list). This clearly distinguishes it from list/detail siblings like tascan_list_tasks or tascan_org_analytics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (a read-tier dashboard rollup) and clarifies counting semantics, but never states when to prefer this over tascan_org_analytics, tascan_project_digest, or tascan_list_issues, nor any prerequisites. Task-level 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_update_eventA
Idempotent
Inspect

Update an event / task list (name, description, team_mode, multi_instance, timer_mode). team_mode and multi_instance cannot both be true.

NameRequiredDescriptionDefault
nameNoNew name
list_idYesTask list (event) ID
team_modeNoTeam mode — shared completions
timer_modeNoTimer mode (auto or manual)
descriptionNoNew description
access_levelNoSR-S2: raise freely; lowering needs an owner/admin-tier key (tascan_set_access rules)
agent_assigneeNoSR-S2: the agent_id whose key alone may reach this list, or null (removing one needs an owner/admin-tier key)
multi_instanceNoMulti-instance — each worker gets isolated copy
assigned_worker_idsNoWorker 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

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, destructiveHint=false and non-read-only, so the safety profile is covered. The description adds the mutual-exclusion rule, which is useful, but says nothing about partial-update semantics (whether omitted fields are left untouched) or permission requirements for sensitive fields like access_level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler; the field list gives an at-a-glance scope and the constraint sentence adds real information rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation with no output schema, the description covers scope and one constraint, and the rich schema covers per-field meaning. It still leaves the agent guessing about partial-update behavior and what the call returns, which matters for an update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter carries meaningful notes (including the SR-S2 access rules and the additive nature of assigned_worker_ids), so the schema does the heavy lifting. The description only echoes five parameter names without adding semantics beyond them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (event / task list), and enumerates the mutable fields. The 'event / task list' phrasing implicitly separates it from tascan_update_task and tascan_update_project, but no sibling is named outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'team_mode and multi_instance cannot both be true' is a genuine usage constraint, but there is no guidance on when to choose this over tascan_update_task, tascan_set_access, or tascan_update_project, and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_invoiceA
Idempotent
Inspect

Update an invoice: mark it paid (records paid_at; a receipted ledger event with the actor, invoice id, number, amount and the before/after status is written first, and nothing changes if it cannot be), overdue, cancelled, or edit client details / notes / due date. A paid invoice is final: any further change is refused 409 invoice_paid_locked (no refunds, edits or deletes).

NameRequiredDescriptionDefault
notesNo
statusNo
paid_atNoISO timestamp (default now) when status = paid
due_dateNo
invoice_idYes
client_nameNo
client_emailNo
client_phoneNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: it explains the atomic ledger event written before a paid update, that nothing changes if the ledger event cannot be written, and that paid invoices are locked with a 409 refusal. These details are exactly the mutation and failure semantics 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the main update operations before adding behavioral detail. The long parenthetical about the ledger event is dense but earns its place by disclosing atomicity and failure behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with annotations and no output schema, it covers the critical mutation, atomicity, and paid-lock behavior. It still omits some parameter details and the response shape, but the essential operational context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 13%, so the description must compensate; it adds meaning for paid_at, client details, notes, due date, and status values paid/overdue/cancelled. However, it omits enum values draft and sent and does not explain invoice_id or client field mappings, leaving clear gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an invoice') and enumerates the main operations: mark paid, overdue, cancelled, or edit client details/notes/due date. It is clear what the tool does, though it does not explicitly differentiate itself from siblings such as request_payment or create_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a strong when-not rule: 'A paid invoice is final: any further change is refused 409 invoice_paid_locked (no refunds, edits or deletes).' It does not name alternative tools for related actions, but the usage constraints are explicit enough to guide most calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_issueA
Idempotent
Inspect

Change an issue's status (PUT /issues/:id): OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED or CLOSED. RESOLVED stamps resolved_at; a status message joins the thread. The issue is never deleted. Write tier.

NameRequiredDescriptionDefault
statusYes
issue_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, and idempotent; the description adds real side-effect detail beyond them: RESOLVED stamps resolved_at, a status message is appended to the thread, and the issue is never deleted ('Write tier'). One tension worth noting: an appended thread message implies a repeated call leaves an extra artifact, which sits awkwardly with idempotentHint=true, but the terminal state is still the same so it falls short of a true contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with action plus endpoint, then progressively finer detail (valid states, side effects, safety), and 'Write tier' is a compact safety signal. The re-listing of the enum values duplicates the schema's enum, a minor redundancy, but every other clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers the state machine, the notable side effects, and the non-destructive guarantee — enough to call it correctly. Missing links are the return shape and any permission/authorization requirements for changing an issue's status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry parameter meaning; it enumerates the five status values and explains the RESOLVED special case, which is genuinely useful. It leaves the semantics of ACKNOWLEDGED vs IN_PROGRESS unexplored and says nothing about issue_id format, so the compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change status), the resource (issue), and the underlying endpoint (PUT /issues/:id), and enumerates the exact target states. This cleanly separates it from sibling tools such as tascan_reply_issue, tascan_raise_issue, and tascan_list_issues without the agent 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb and the RESOLVED-specific note (resolved_at stamping), which tells an agent the relevant condition for the resolution path. However, it never states when to prefer this over related siblings like tascan_reply_issue or tascan_auto_resolve, nor any prerequisites or exclusions — the agent must infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_projectA
Idempotent
Inspect

Update a project (name, location, status, dates, number, external_refs, labor_rules, report_options). A number already used in the org is refused 409; external_refs replaces the whole list. report_options is merged into the stored object (other keys kept, a key set to null removed). labor_rules is validated like the projects CHECK.

NameRequiredDescriptionDefault
nameNoNew name
numberNoNew project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org. A P-<digits> number is refused 400 unless it is the project's current number
statusNoStatus
end_dateNoEnd date (ISO)
locationNoNew location
project_idYesProject ID
start_dateNoStart date (ISO)
labor_rulesNoAn object (or null to clear): { ot_after_hours (> 0, <= 24, or null), dt_after_hours (> ot_after_hours, or > 10 when that is null, <= 24, or null) }
external_refsNoThe full list of external references (replaces the current one): up to 10 { source (1-40 chars), ref (1-80 chars) }
report_optionsNoMerged into the stored options: show_location, show_time, auto_publish_receipts (booleans), client_photos (off | on | ask); a key set to null is removed; null clears them all

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing concrete failure modes (a duplicate number is refused 409) and the differing write semantics per field: external_refs replaces the entire list, report_options is deep-merged with null-valued keys removed, and labor_rules is validated against the projects CHECK. That is exactly the kind of consequence information an agent needs before a mutation, and it is consistent with destructiveHint=false / idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the verb and the affected fields, then escalating to the risky semantics (409, replacement, merge). The parenthetical field list mildly duplicates the schema property names, which is the only wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with nested objects and no output schema, it covers the highest-risk behaviors (conflict error, list replacement vs merge, rule validation). The one significant omission is the general partial-update contract — whether unspecified fields are preserved — which matters given only project_id is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description largely restates what the schema already says (external_refs replaces, report_options merged) and only adds the 409 error code for a duplicate number. It does not, for example, clarify whether omitted optional fields are left untouched or cleared.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Update a project") and enumerates exactly which fields are mutable, so an agent can immediately tell this apart from tascan_create_project / tascan_delete_project / tascan_clone_project. It stops short of naming those siblings explicitly, so it is clear but not maximally differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the name and field list; there is no explicit "use this instead of X" routing, no stated prerequisites, and no statement about what happens to fields that are omitted. The one required parameter (project_id) hints at partial-update semantics, but the agent must infer that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_siteA
Idempotent
Inspect

Update a site (name, address, lat + lng, client_company, external_key, is_active). is_active false deactivates it (the soft delete: its links, work orders and visits stay). Write tier.

NameRequiredDescriptionDefault
latNo
lngNo
nameNo
addressNo
site_idYesSite ID
is_activeNo
external_keyNo
client_companyNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare write/idempotent/non-destructive, so the bar is lower, and the description adds real value beyond them: setting is_active=false is a soft delete that preserves links, work orders and visits. It does not disclose required permissions or what the response contains, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: the field list comes first and the non-obvious soft-delete consequence is front-loaded right after. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation with no output schema and thin schema descriptions, the definition covers the fields and the destructive-vs-soft-delete semantics well. It leaves the required site_id and the partial-update behavior (are omitted fields cleared or preserved?) unstated, which an agent would want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 13% (only site_id documented), so the description must compensate — it does so by naming all seven updatable fields and explaining the semantic effect of is_active, the one parameter whose meaning is not self-evident. It adds no format or validation detail for lat/lng or external_key, keeping it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a site") and enumerates every mutable field, which lets an agent distinguish this from tascan_create_site, tascan_get_site and tascan_update_worker without opening a schema. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Write tier" implies this is a mutation and the is_active sentence implies when to use deactivation over removal, but the description never states prerequisites, when to prefer an alternative sibling (e.g. tascan_unlink_site), or whether omitted fields are left untouched. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_subtaskC
Idempotent
Inspect

Update a subtask (title, description, response_type, response_config, requires_photo, sort_order).

NameRequiredDescriptionDefault
titleNo
sort_orderNo
subtask_idYesSubtask ID
descriptionNo
response_typeNo"link" = the worker submits a URL. "url" = the worker visits a preset URL and confirms. "file" = the worker uploads a file.
requires_photoNo
response_configNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_taskA
Idempotent
Inspect

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:.

NameRequiredDescriptionDefault
titleNoNew title
task_idYesTask ID
sort_orderNoSort position
assigned_toNoWorker 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.
descriptionNoNew description
access_levelNoSR-S2: the task's own level (null = inherit the list); lowering needs an owner/admin-tier key
response_typeNoSee 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_photoNoRequire photo
response_configNoResponse configuration. For "choice": {options: [...]}. See tascan_add_tasks.
required_equipmentNoEquipment this task depends on (free text)
is_safety_checkpointNoSafety-critical flag

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (idempotent, non-destructive), the description discloses a non-obvious behavioral fact: edits to an AI-inbox task are agent input and require agent:dispatch permission, escalating to agent:dispatch:code for CODE:/SHELL: tasks. This auth/safety context is exactly the kind of added value annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation and affected fields in one tight sentence. The second sentence is long but each clause (permission requirement plus the CODE:/SHELL: escalation) carries necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with a fully-described schema and no output schema, the description covers the what and the critical authorization behavior. Remaining nuances like access_level lowering and assigned_to semantics are fully handled in the schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself documents every parameter, including enums and nested response_config. The description only lists some field names, adding no meaning beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a task') and enumerates the mutable fields, so the agent knows it is the task-editing operation. It does not explicitly contrast with tascan_update_subtask or tascan_complete_task, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description adds real context about prerequisites (agent:dispatch needed for any edit to an inbox task, agent:dispatch:code for CODE:/SHELL: tasks), which helps the agent know when the call will be authorized. However, it never names an alternative sibling or states when to prefer update_task over complete_task/update_subtask.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_workerA
Idempotent
Inspect

Update a worker profile (name, phone, email, actor_kind), or deactivate / reactivate the worker (active false / true with an optional reason: receipted as a ledger event first, never a delete; a merged record is never reactivated). Changing actor_kind to or from agent or admin is refused for every key: only an org owner or admin, signed in to the portal, can do that.

NameRequiredDescriptionDefault
nameNoNew name
emailNoNew email
phoneNoNew phone
activeNoSR-API3: false deactivates the worker, true reactivates it (receipted)
reasonNoWhy (recorded with an active change; at most 500 characters)
worker_idYesWorker ID
actor_kindNoWhat this worker row stands for (to or from agent / admin: owner or admin session only)

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond annotations: active changes are receipted as a ledger event first, never a hard delete, merged records cannot be reactivated, and actor_kind changes to/from agent or admin are refused for every key except an owner/admin portal session. This gives rich side-effect, permission, and constraint context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the main action and fields are front-loaded. It is somewhat dense, with clustered parentheticals about receipting and reactivation, but every clause contributes operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage and useful annotations, the description covers the key mutation semantics, permissions, and constraints. It does not describe the return value or response shape, and there is no output schema to fill that gap, but the core calling information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning for active, reason, and actor_kind by explaining ledger receipting, optional reason semantics, reactivation restrictions for merged records, and the specific permission rule for agent/admin transitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: update a worker profile and toggle active status. It distinguishes deactivation from deletion by saying 'never a delete', but does not explicitly name or differentiate from other worker-related siblings such as delete_worker or merge_workers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use active false/true and the optional reason, and clarifies that deactivation is never a delete. It also states exclusions: merged records cannot be reactivated and actor_kind changes to or from agent/admin are refused. However, it does not direct the agent to alternatives like delete_worker for permanent removal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_update_zoneA
Idempotent
Inspect

Update a geofenced zone — move the center, resize the radius, change the routing target, toggle zone-lock, or deactivate it (is_active=false).

NameRequiredDescriptionDefault
latNo
lngNo
kindNo
nameNo
polygonNoReplace geometry with a polygon ([[lat,lng],...], ≥3 vertices); pass null to revert to a circle
zone_idYesZone ID
radius_mNo
is_activeNo
notify_emailNo
required_ppeNo
task_list_idNo
auto_clock_inNoWrites 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_messageNo
auto_clock_outNoWrites 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_exitNo
alert_on_breachNo
enforce_on_listNo
notify_on_enterNo
ppe_photo_requiredNo
sms_worker_on_exitNo
task_list_on_enterNo
sms_worker_on_enterNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_receiptA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
jwsYesThe compact JWS to verify (from tascan_get_receipt's output, or any TaScan-format receipt).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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_void_completionA
DestructiveIdempotent
Inspect

Void a completion that is wrong (POST /completions/:id/void): records a superseding refuted verdict (method void, with your reason) and a receipted completion_voided ledger event, and the task reads open again. The completion itself is never edited or deleted, so its receipt and hash chains stay valid. completion_id comes from tascan_get_task completions[].id. Full tier.

NameRequiredDescriptionDefault
reasonYesWhy it is wrong (1-500 characters, required)
completion_idYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say destructiveHint=true and idempotentHint=true; the description explains what that actually means here — a superseding refuted verdict plus a receipted completion_voided ledger event, with the original completion never edited or deleted so hash/receipt chains stay valid. That is exactly the kind of consequence disclosure annotations cannot convey, and 'Full tier' flags a privilege requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the action and the critical 'what is not destroyed' clarification front-loaded. Every clause carries information an agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers the mechanism, the audit side effect, and the postcondition on the task. Only the 'Full tier' phrase stays opaque rather than specifying the permission or auth requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

completion_id is undocumented in the schema, and the description fills that hole precisely by naming its source (tascan_get_task completions[].id). reason's format is left to the schema's 1-500 character description, so only half the parameters get added meaning here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Void a completion'), gives the endpoint, and immediately characterizes the target as 'wrong'. That distinguishes it from sibling completion-related tools like tascan_complete_task or tascan_mint_completion_report 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger condition is explicit: use this when a completion is wrong. It also tells the agent the downstream consequence ('the task reads open again'), which is what an agent needs to decide to invoke it. No exclusions or named alternatives, which is the gap that keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tascan_zone_complianceA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
sinceNoISO date/time lower bound
untilNoISO date/time upper bound
zone_idNo
worker_idNo
project_idNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description 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.

Parameters4/5

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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('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.

Usage Guidelines4/5

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. 1 tool update
    • Addedtascan_append_chat_messages
  2. 6 tool updates
    • Changedtascan_add_tasks1 field changed
      • addedInput schema / properties / tasks / items / properties / access_level
        Added value: +{
        +  "description": "SR-S2: the task's own level (wins over the list; null = inherit)",
        +  "enum": [
        +    "open",
        +    "assigned",
        +    "secured",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedtascan_create_event2 fields changed
      • addedInput schema / properties / access_level
        Added value: +{
        +  "description": "SR-S2: open, assigned or secured (null = automatic)",
        +  "enum": [
        +    "open",
        +    "assigned",
        +    "secured",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / agent_assignee
        Added value: +{
        +  "description": "SR-S2: the agent_id whose key alone may reach this list and its tasks",
        +  "type": "string"
        +}
    • Addedtascan_get_access
    • Addedtascan_set_access
    • Changedtascan_update_event2 fields changed
      • addedInput schema / properties / access_level
        Added value: +{
        +  "description": "SR-S2: raise freely; lowering needs an owner/admin-tier key (tascan_set_access rules)",
        +  "enum": [
        +    "open",
        +    "assigned",
        +    "secured",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / agent_assignee
        Added value: +{
        +  "description": "SR-S2: the agent_id whose key alone may reach this list, or null (removing one needs an owner/admin-tier key)",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedtascan_update_task1 field changed
      • addedInput schema / properties / access_level
        Added value: +{
        +  "description": "SR-S2: the task's own level (null = inherit the list); lowering needs an owner/admin-tier key",
        +  "enum": [
        +    "open",
        +    "assigned",
        +    "secured",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  3. 20 tool updates
    • Addedtascan_apply_qr_style
    • Changedtascan_complete_task3 fields changed
      • addedInput schema / properties / on_behalf_of
        Added value: +{
        +  "description": "Worker ID the completion is done on behalf of (for an owner/admin-tier key the same as worker_id; recorded)",
        +  "type": "string"
        +}
      • changedInput schema / properties / worker_id / description
        Previous value: -"Worker ID performing the completion"New value: +"Worker ID the completion is recorded for (an agent key: omit it, or pass its own worker)"
      • changedInput schema / required
        Previous value: -[
        -  "task_id",
        -  "worker_id"
        -]New value: +[
        +  "task_id"
        +]
    • Addedtascan_delete_chat_thread
    • Addedtascan_get_org_plan
    • Addedtascan_get_timesheet
    • Addedtascan_issues_inbox
    • Addedtascan_list_chat_threads
    • Addedtascan_list_insights
    • Addedtascan_list_qr_styles
    • Addedtascan_nudge_worker
    • Addedtascan_raise_issue
    • Addedtascan_remove_worker_from_project
    • Addedtascan_reply_issue
    • Addedtascan_resolve_insight
    • Addedtascan_save_chat_thread
    • Addedtascan_save_qr_style
    • Addedtascan_set_template
    • Addedtascan_update_issue
    • Changedtascan_update_worker2 fields changed
      • addedInput schema / properties / active
        Added value: +{
        +  "description": "SR-API3: false deactivates the worker, true reactivates it (receipted)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / reason
        Added value: +{
        +  "description": "Why (recorded with an active change; at most 500 characters)",
        +  "type": "string"
        +}
    • Addedtascan_void_completion
  4. 8 tool updates
    • Addedtascan_clone_project
    • Changedtascan_delete_project3 fields changed
      • addedInput schema / properties / audit
        Added value: +{
        +  "description": "Optional audit note stored verbatim in the audit event (e.g. { reason })",
        +  "type": "object"
        +}
      • addedInput schema / properties / confirm_name
        Added value: +{
        +  "description": "The project name, typed exactly",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "project_id"
        -]New value: +[
        +  "project_id",
        +  "confirm_name"
        +]
    • Changedtascan_list_projects4 fields changed
      • addedInput schema / properties / ends_before
        Added value: +{
        +  "description": "YYYY-MM-DD: only projects whose dates end before this day",
        +  "type": "string"
        +}
      • addedInput schema / properties / starts_after
        Added value: +{
        +  "description": "YYYY-MM-DD: only projects whose dates start after this day",
        +  "type": "string"
        +}
      • addedInput schema / properties / window
        Added value: +{
        +  "description": "Only projects overlapping this week (Sunday-Saturday) or this calendar month",
        +  "enum": [
        +    "week",
        +    "month"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zone
        Added value: +{
        +  "description": "IANA time zone for the date filters, e.g. America/Los_Angeles (default: the org time zone)",
        +  "type": "string"
        +}
    • Addedtascan_mint_completion_report
    • Addedtascan_project_insights
    • Addedtascan_report_engagement
    • Addedtascan_text_report
    • Changedtascan_update_project2 fields changed
      • addedInput schema / properties / labor_rules
        Added value: +{
        +  "description": "An object (or null to clear): { ot_after_hours (> 0, <= 24, or null), dt_after_hours (> ot_after_hours, or > 10 when that is null, <= 24, or null) }",
        +  "type": "object"
        +}
      • addedInput schema / properties / report_options
        Added value: +{
        +  "description": "Merged into the stored options: show_location, show_time, auto_publish_receipts (booleans), client_photos (off | on | ask); a key set to null is removed; null clears them all",
        +  "type": "object"
        +}
  5. 12 tool updates
    • Addedtascan_create_site
    • Changedtascan_find2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Search text (min 2 chars, case-insensitive substring)"New value: +"Search text (min 2 chars, case-insensitive substring; a customer job number matches external_refs exactly)"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "project",
        -  "list",
        -  "task",
        -  "worker",
        -  "asset"
        -]New value: +[
        +  "project",
        +  "list",
        +  "task",
        +  "worker",
        +  "asset",
        +  "site",
        +  "work_order"
        +]
    • Changedtascan_generate_qr1 field changed
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Reserved for saved QR styles (SR-P4c): accepted and ignored today",
        +  "type": "string"
        +}
    • Addedtascan_get_site
    • Addedtascan_link_site
    • Addedtascan_list_sites
    • Changedtascan_list_workers1 field changed
      • addedInput schema / properties / actor_kind
        Added value: +{
        +  "description": "Only these kinds of worker row: person, agent, admin or device, or a comma list (e.g. \"person,agent\")",
        +  "type": "string"
        +}
    • Addedtascan_share_list
    • Addedtascan_today
    • Addedtascan_unlink_site
    • Addedtascan_update_site
    • Changedtascan_update_worker1 field changed
      • addedInput schema / properties / actor_kind
        Added value: +{
        +  "description": "What this worker row stands for (to or from agent / admin: owner or admin session only)",
        +  "enum": [
        +    "person",
        +    "agent",
        +    "admin",
        +    "device"
        +  ],
        +  "type": "string"
        +}
  6. 5 tool updates
    • Changedtascan_create_project2 fields changed
      • addedInput schema / properties / external_refs
        Added value: +{
        +  "description": "Up to 10 external references, each { source (1-40 chars, e.g. \"EEQ\"), ref (1-80 chars, e.g. \"P14-4680\") }",
        +  "items": {
        +    "properties": {
        +      "ref": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / number
        Added value: +{
        +  "description": "Project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org (default: next P-00001 style number). P-<digits> numbers are assigned automatically and refused 400 here; use your own format (e.g. P14-4680)",
        +  "type": "string"
        +}
    • Addedtascan_get_org
    • Addedtascan_list_connectors
    • Changedtascan_list_projects3 fields changed
      • addedInput schema / properties / number
        Added value: +{
        +  "description": "Only the project with this project number (exact, e.g. P-00012)",
        +  "type": "string"
        +}
      • addedInput schema / properties / ref
        Added value: +{
        +  "description": "Only projects whose external_refs carry this ref (exact, e.g. P14-4680)",
        +  "type": "string"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "Only projects with this status (exact; comma-separated list allowed, e.g. \"active,archived\")",
        +  "type": "string"
        +}
    • Changedtascan_update_project2 fields changed
      • addedInput schema / properties / external_refs
        Added value: +{
        +  "description": "The full list of external references (replaces the current one): up to 10 { source (1-40 chars), ref (1-80 chars) }",
        +  "items": {
        +    "properties": {
        +      "ref": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "ref"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / number
        Added value: +{
        +  "description": "New project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org. A P-<digits> number is refused 400 unless it is the project's current number",
        +  "type": "string"
        +}
  7. 1 tool update
    • Changedtascan_delegate_to_agent6 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "description": "Stable agent id used in receipts and the agent registry.",
        +  "type": "string"
        +}
      • addedInput schema / properties / display_name
        Added value: +{
        +  "description": "Readable id for the agent, e.g. \"LT-ZOOS-RSCH-02 · Zoos · Researcher 02\".",
        +  "type": "string"
        +}
      • addedInput schema / properties / model
        Added value: +{
        +  "description": "The model the agent runs on, e.g. claude-sonnet-5-5.",
        +  "type": "string"
        +}
      • changedInput schema / properties / resource_constraints / description
        Previous value: -"Optional free-form narrowing (e.g. project/list ids) recorded on the child key as metadata."New value: +"Optional project sandbox: { \"project_ids\": [\"<project uuid>\", ...] }. Enforced on every call (migration 249): the child reaches only those projects. Must be a subset of this key’s own projects when this key is itself project-limited; omitted, the child inherits this key’s projects."
      • addedInput schema / properties / role
        Added value: +{
        +  "description": "The agent’s job on the project: builder, researcher, reviewer, panelist, ...",
        +  "type": "string"
        +}
      • addedInput schema / properties / vendor
        Added value: +{
        +  "description": "The model vendor (defaults to this key’s own vendor).",
        +  "enum": [
        +    "anthropic",
        +    "openai",
        +    "gemini"
        +  ],
        +  "type": "string"
        +}
  8. 3 tool updates
    • Changedtascan_add_tasks1 field changed
      • changedInput schema / properties / tasks / items / properties / response_type / description
        Previous 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. \"signature\" = the worker reads a document and signs it with their passkey (attach the document with signature_doc_base64 and signature_doc_mime). 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. \"signature\" = the worker reads a document, types their full name and signs with their passkey (Face ID / fingerprint); the name is signed with it (attach the document with signature_doc_base64 and signature_doc_mime). Most info-collection tasks should be \"text\", most verification tasks should be \"photo\"."
    • Changedtascan_get_task_trail1 field changed
      • addedInput schema / properties / since
        Added value: +{
        +  "description": "Optional ISO 8601 time: return only messages created after it (pass the created_at of the last message you saw to read only new ones).",
        +  "type": "string"
        +}
    • Changedtascan_list_tasks1 field changed
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "open = not completed yet (use this to find work), done = completed, all = everything (default).",
        +  "enum": [
        +    "open",
        +    "done",
        +    "all"
        +  ],
        +  "type": "string"
        +}
  9. 3 tool updates
    • Changedtascan_add_tasks4 fields changed
      • changedInput schema / properties / tasks / items / properties / response_type / description
        Previous 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\"."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. \"signature\" = the worker reads a document and signs it with their passkey (attach the document with signature_doc_base64 and signature_doc_mime). Most info-collection tasks should be \"text\", most verification tasks should be \"photo\"."
      • changedInput schema / properties / tasks / items / properties / response_type / enum
        Previous value: -[
        -  "checkbox",
        -  "photo",
        -  "text",
        -  "number",
        -  "date",
        -  "choice",
        -  "link",
        -  "url",
        -  "file"
        -]New value: +[
        +  "checkbox",
        +  "photo",
        +  "text",
        +  "number",
        +  "date",
        +  "choice",
        +  "link",
        +  "url",
        +  "file",
        +  "signature"
        +]
      • addedInput schema / properties / tasks / items / properties / signature_doc_base64
        Added value: +{
        +  "description": "Only with response_type signature: the document to be signed, base64 (PDF, PNG or JPEG, at most 10 MB). Uploaded after the task is created. Needs signature_doc_mime.",
        +  "type": "string"
        +}
      • addedInput schema / properties / tasks / items / properties / signature_doc_mime
        Added value: +{
        +  "description": "Media type of signature_doc_base64.",
        +  "enum": [
        +    "application/pdf",
        +    "image/png",
        +    "image/jpeg"
        +  ],
        +  "type": "string"
        +}
    • Addedtascan_get_signature_bundle
    • Changedtascan_update_task1 field changed
      • changedInput schema / properties / response_type / enum
        Previous value: -[
        -  "checkbox",
        -  "photo",
        -  "text",
        -  "number",
        -  "date",
        -  "choice",
        -  "link",
        -  "url",
        -  "file"
        -]New value: +[
        +  "checkbox",
        +  "photo",
        +  "text",
        +  "number",
        +  "date",
        +  "choice",
        +  "link",
        +  "url",
        +  "file",
        +  "signature"
        +]
  10. 1 tool update
    • Changedtascan_send_sms4 fields changed
      • addedInput schema / properties / media_base64
        Added value: +{
        +  "description": "Optional image to attach (MMS) as base64 bytes (a data: URI prefix is accepted). JPEG, PNG or GIF, max 3.5 MB. Stored privately by TaScan and sent through a short-lived link.",
        +  "type": "string"
        +}
      • addedInput schema / properties / media_type
        Added value: +{
        +  "description": "MIME type of media_base64 (not needed when media_base64 is a data: URI).",
        +  "enum": [
        +    "image/jpeg",
        +    "image/png",
        +    "image/gif"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / media_url
        Added value: +{
        +  "description": "Optional image to attach (MMS): a public https URL of a JPEG, PNG or GIF. The carrier fetches it at send time.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "message"
        -]New value: +[]
  11. 1 tool update
    • Addedtascan_quickstart
  12. 2 tool updates
    • Changedtascan_control_fanout2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"pause, resume, cancel or close_barrier. No amend, no answer (phase 1)."New value: +"pause, resume, cancel, close_barrier or retry_synth. No amend, no answer (phase 1)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "pause",
        -  "resume",
        -  "cancel",
        -  "close_barrier"
        -]New value: +[
        +  "pause",
        +  "resume",
        +  "cancel",
        +  "close_barrier",
        +  "retry_synth"
        +]
    • Changedtascan_create_fanout2 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"Forwarded to POST /coord/fanouts as given. The route has no server-side preflight for this path today, so true still performs a REAL create -- do not rely on it to avoid creating a fan-out."New value: +"true runs the same validation plus the ceiling/cap pre-check and returns {dry_run:true, plan_sha256, seats, problems:[]} WITHOUT consuming budget or creating a fan-out -- a real preflight, not a real create."
      • addedInput schema / properties / seats / items / properties / runner
        Added value: +{
        +  "description": "Default \"research\" (the cloud runner claims it). \"local\" names a registered local/subagent agent_id -- only that agent, claiming as itself (tascan_claim_run instance starting with \"<agent_id>:\"), can claim the seat; it is never webhook-fired.",
        +  "enum": [
        +    "research",
        +    "local"
        +  ],
        +  "type": "string"
        +}
  13. 3 tool updates
    • Addedtascan_claim_run
    • Addedtascan_finish_run
    • Addedtascan_heartbeat_run
  14. 3 tool updates
    • Addedtascan_control_fanout
    • Addedtascan_create_fanout
    • Addedtascan_get_fanout
  15. 4 tool updates
    • Addedtascan_delegate_to_agent
    • Addedtascan_get_budget
    • Addedtascan_list_delegations
    • Addedtascan_revoke_delegation
  16. 4 tool updates
    • Changedtascan_add_tasks1 field changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response instead of creating the tasks twice.",
        +  "type": "string"
        +}
    • Addedtascan_get_usage
    • Changedtascan_request_payment1 field changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original pledge instead of creating a second one.",
        +  "type": "string"
        +}
    • Changedtascan_send_sms1 field changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response instead of sending a second text.",
        +  "type": "string"
        +}
  17. 3 tool updates
    • Addedtascan_get_device
    • Addedtascan_list_devices
    • Addedtascan_revoke_device
  18. 1 tool update
    • Changedtascan_create_cycle8 fields changed
      • addedInput schema / properties / artifact_bytes
        Added 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"
        +}
      • addedInput schema / properties / dry_run
        Added 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"
        +}
      • changedInput schema / properties / idempotency_key / description
        Previous 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."
      • addedInput schema / properties / kind
        Added 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"
        +}
      • addedInput schema / properties / revisable_by
        Added 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"
        +}
      • changedInput schema / properties / task_type / description
        Previous 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."
      • changedInput schema / properties / task_type / enum
        Previous value: -[
        -  "CODE",
        -  "SHELL"
        -]New value: +[
        +  "CODE",
        +  "SHELL",
        +  "RESEARCH"
        +]
      • changedInput schema / properties / title / description
        Previous 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>\"."
  19. 10 tool updates
    • Addedtascan_dispatcher_action
    • Addedtascan_evidence_policy
    • Addedtascan_get_build_diff
    • Addedtascan_get_task_trail
    • Addedtascan_list_cycles
    • Addedtascan_list_verifications
    • Addedtascan_org_analytics
    • Addedtascan_post_evidence
    • Addedtascan_request_verification
    • Addedtascan_verify_receipt

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.