AssetLab
Server Details
Work orders, PM schedules, assets, capital plans and infrastructure in AssetLab CMMS/EAM.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 480 tools
The 480 tools are distinctly named by resource and action, and descriptions often cross-reference alternatives (e.g., get_asset_cost vs get_expense). However, the massive surface creates many near-duplicate patterns across modules (asset vs infrastructure asset vs project entities), making misselection likely despite the detailed guidance.
Tool names follow a highly consistent verb_noun snake_case pattern: create_X, update_X, delete_X, get_X, list_X. The few exceptions (bulk_create, bulk_update, upload_file, create_upload_url) are general-purpose and still fit the predictable convention.
With 480 tools, the server is far beyond any reasonable scope for an agent to handle. Even for a comprehensive asset management system, this count is extreme and forces agents to navigate an overwhelming catalog, leading to poor suitability.
The surface covers CRUD for nearly every entity (assets, work orders, projects, contracts, vendors, parts, compliance, Level of Service, infrastructure, floorplans, forms, etc.). Minor gaps exist for some junction tables (e.g., no update for contract_site or service_area_site), but overall coverage is extensive and workable.
Available Tools
480 toolsbulk_createAInspect
Create multiple records of a resource type in one API call (max 100). Each item is processed independently - one failure does not affect others. Returns per-item results. Requires {resource}:write scope. Counts as 1 request for rate limiting.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of objects to create (max 100). Each object uses the same fields as the single-create endpoint for that resource. | |
| resource | Yes | Resource type (e.g. "assets", "work-orders") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: partial-failure semantics ('one failure does not affect others'), per-item return results, the {resource}:write scope requirement, and the rate-limit accounting (1 request). It stops short of stating the failure response shape (e.g. whether the call returns 207 vs 400) or idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short, front-loaded sentences; the limit, the partial-failure guarantee, and the rate-limit note are each distinct and none restate the tool name. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter batch tool with no output schema, the description supplies the operational facts an agent needs (cap, isolation of failures, per-item results, scope, rate-limit cost). Only a note on error/response shape or retry behavior is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema, including the maxItems=100 bound that the description merely repeats. The only added meaning is tying the 'write scope' requirement to the resource parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') plus a clearly bounded resource scope ('multiple records of a resource type in one API call'), which cleanly separates it from the ~90 singular create_* siblings and from bulk_update. An agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the batch semantics and the max-100 cap, but the description never explicitly names the alternative (e.g. 'use create_asset for a single record, bulk_create for batches') or states when a batch is preferable to repeated single calls. It also gives no exclusion guidance for bulk_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_updateAInspect
Update multiple records of a resource type in one API call (max 100). Each item must include an "id" field (UUID). Each item is processed independently - one failure does not affect others. Returns per-item results. Requires {resource}:write scope. Counts as 1 request for rate limiting.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of objects to update (max 100). Each must include an "id" field (UUID) plus fields to change. | |
| resource | Yes | Resource type (e.g. "assets", "work-orders") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the 100-item cap, per-item independence ('one failure does not affect others'), per-item results, required {resource}:write scope, and rate-limit accounting. It omits reversibility and what a failed-item result contains, but this is substantially more behavioral context than most definitions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, zero waste, front-loaded with the core action and cap. Each sentence delivers a distinct operational fact (cap, id requirement, independence, scope, rate limit).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter batch mutation with no output schema, the description covers limits, failure semantics, scope, and return shape adequately. Only edge details (e.g., behavior on missing/invalid IDs beyond independence) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the 'id' field requirement. The description adds the {resource}:write scope mapping, which is mildly useful, but otherwise repeats schema content; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update multiple records of a resource type in one API call') with a clear batch scope. The batching semantics distinguish it cleanly from the many single-record update_* siblings and from bulk_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case (bulk efficiency, max 100 items) but never states when to prefer this over the singular update_* tools or when to fall back to them. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_assetAInspect
Create a new asset. Requires assets:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs (site_id, building_id, location_id) explicitly. System hierarchy: similarly resolve via list_system_classes → list_system_groups → list_systems.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Asset name (required) | |
| model | No | Model name/number | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Custom asset identifier (unique per tenant) | |
| quantity | No | Quantity | |
| image_url | No | Image URL | |
| status_id | No | Status identifier | |
| system_id | No | System ID - resolve last via list_systems filtered by system_group_id | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| risk_factor | No | Risk factor (CRITICAL, HIGH, MEDIUM, LOW) | |
| asset_type_id | No | Asset type ID (from asset_types) | |
| purchase_cost | No | Purchase cost | |
| purchase_date | No | Purchase date (ISO 8601) | |
| safety_impact | No | Safety impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| salvage_value | No | Salvage value | |
| serial_number | No | Serial number | |
| cost_per_sq_ft | No | Cost per square foot | |
| service_impact | No | Service impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| condition_score | No | Condition score (0-100) | |
| manufacturer_id | No | Manufacturer ID (from manufacturers) | |
| system_class_id | No | System class ID - resolve first via list_system_classes | |
| system_group_id | No | System group ID - resolve second via list_system_groups filtered by system_class_id | |
| unit_of_measure | No | Unit of measure | |
| regulatory_impact | No | Regulatory impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| replacement_value | No | Cost to replace this asset today, in current dollars. Distinct from purchase_cost, which is what was paid and is the depreciation basis. | |
| reputation_impact | No | Reputation impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| environmental_impact | No | Environmental impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| current_meter_reading | No | Current meter/odometer reading | |
| last_maintenance_date | No | Last maintenance date (ISO 8601) | |
| unit_replacement_value | No | Unit replacement value | |
| expected_lifetime_years | No | Expected lifetime in years | |
| salvage_value_percentage | No | Salvage value percentage (0-100) | |
| likelihood_of_failure_score | No | Likelihood of failure score | |
| consequence_of_failure_score | No | Consequence of failure score | |
| replacement_value_reviewed_on | No | Date replacement_value was last confirmed (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required 'assets:write' scope, but says nothing about validation behavior, whether the child IDs must all be supplied, error handling, or what the create returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then scope, then the two resolution workflows. Dense but each sentence carries information; only the two hierarchy walkthroughs sit close to redundant with the per-parameter hints in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 38-parameter creation tool with no annotations and no output schema, the description supplies purpose, authorization scope, and the two dependency-resolution chains that an agent would otherwise get wrong. It stops short of describing required-vs-optional expectations or post-create behavior, but covers the critical trap (hierarchy resolution order).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 38 parameters, including the same 'resolve first via list_sites' hints reproduced in the description. The description adds the enforced ordering of lookups, which is modest incremental value over the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new asset'), so the operation is unambiguous. However, with dozens of create_* siblings including create_infrastructure_asset, create_asset_betterment and create_asset_type, it does nothing to distinguish itself from those neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful workflow guidance for resolving the location and system hierarchies (list_sites → list_buildings → list_locations and list_system_classes → list_system_groups → list_systems), which is more about parameter preparation than when to select this tool. There is no explicit when-to-use vs the other create_* variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_bettermentAInspect
Record capital work that ALREADY extended a facility asset's life - an elevator modernization, a boiler retube, a major component replacement. Required: asset_id, occurred_on, and at least one of capitalized_amount or added_life_years (work that adds neither changes nothing and is rejected). The asset's net book value and remaining life re-base from occurred_on, and its purchase_date is NEVER changed - if a user asks to change an in-service date to reflect an overhaul, record this instead and say why. Use asset_lifecycle_events for work expected in future; use a condition assessment for what someone observed. Call list_assets first to resolve asset_id. Requires asset_betterments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset the capital work was performed on (required) | |
| project_id | No | The project that delivered it | |
| description | No | What was actually done | |
| occurred_on | Yes | Date the work went into service, YYYY-MM-DD (required). Not the invoice date - this is the date its value begins depreciating from. | |
| asset_cost_id | No | The asset cost row holding the spend, so the money is not double-entered | |
| work_order_id | No | The work order that delivered it | |
| added_life_years | No | Extra service life the work bought, in years. Required unless capitalized_amount is given. | |
| capitalized_amount | No | Amount added to the asset value, in the organization currency (call get_organization_settings for currency_code). Required unless added_life_years is given. | |
| asset_lifecycle_event_id | No | The lifecycle strategy event this executed, if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden and does it well: it discloses the rejection rule (work adding neither amount nor life), the re-basing of net book value and remaining life from occurred_on, that purchase_date is NEVER changed, and the required asset_betterments:write scope. These are non-obvious side effects an agent must know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the required/at-least-one constraint before the side-effect and alternative-tool guidance. Dense but every clause adds functional information; slightly long, though nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers requirements, rejection behavior, side effects on derived fields, scope/auth needs, and alternative-tool routing, 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.
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 the cross-parameter constraint (at least one of capitalized_amount or added_life_years, otherwise rejected) and clarifies that occurred_on is the in-service date, not the invoice date, which goes beyond the schema's per-field text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Record capital work that ALREADY extended a facility asset's life') and gives concrete examples (elevator modernization, boiler retube). It explicitly distinguishes itself from sibling tools create_asset_lifecycle_event and condition assessments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: 'Use asset_lifecycle_events for work expected in future; use a condition assessment for what someone observed,' instructs to call list_assets first to resolve asset_id, and covers the in-service-date misconception case. Clear when-to-use and when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_commentBInspect
Create a new comment on an asset. Requires asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Comment text (required) | |
| asset_id | Yes | Asset ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose a genuine operational requirement: the asset_comments:write scope. However, it says nothing about the mutation's nature, whether the comment can be edited/deleted afterward, or what the call returns, leaving meaningful behavioral gaps for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the permission requirement. Nothing is wasted and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create tool, the description covers purpose and authorization, which is roughly adequate. It omits any sense of the response or failure behavior, and with no output schema and no annotations there is no other structured source to fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, both documented in the schema (comment text, asset UUID). The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new comment on an asset'), which is unambiguous and distinguishes it from the many sibling comment creators (project, work order, infrastructure asset) by naming the asset scope. It stops short of explicitly naming or contrasting those siblings, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as update_asset_comment, list_asset_comments, or the other comment-creation tools. The agent is left to infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_condition_assessmentAInspect
Record a point-in-time condition assessment against an asset. Requires asset_condition_assessments:write scope. Call list_assets first to resolve asset_id.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-form notes | |
| method | No | Assessment method | |
| defects | No | Structured defect findings (JSON) | |
| asset_id | Yes | Asset ID (required) | |
| assessed_on | Yes | Assessment date (YYYY-MM-DD, required; today or earlier) | |
| assessor_id | No | Assessor user ID | |
| condition_score | No | Condition score (0-100) | |
| replacement_cost | No | Current replacement value / CRV at assessment time | |
| update_purchase_cost | No | Default OFF - omit unless the user explicitly asks to update/overwrite the asset's purchase cost, or says their org treats purchase cost as the current replacement value. Recording an assessment does NOT by itself change purchase cost. When true, overwrites assets.purchase_cost with this replacement_cost (CRV); the prior value is preserved on the assessment as previous_purchase_cost (read-only). Create-only and not reversible via update - when unsure, leave it off and ask. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the auth scope requirement plus a workflow prerequisite. However, it omits key traits: that this is an append-only point-in-time record, whether duplicates are permitted, and what the call returns. The potentially destructive purchase-cost overwrite behavior is documented only inside the schema, not surfaced in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action stated first and the prerequisites following. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a fully documented 9-parameter schema and no output schema, the description covers the essentials: what it creates, the scope needed, and the prerequisite lookup. It could add what happens on success or how the assessment relates to downstream FCI/score calculations, but nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every parameter, including the detailed caveats around update_purchase_cost. The description adds only the list_assets resolution hint for asset_id, which is a marginal gain over the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Record a point-in-time condition assessment against an asset'), which is far more precise than the many terse sibling names like create_asset_cost or create_asset_status. It does not explicitly distinguish itself from update_asset_condition_assessment or delete_asset_condition_assessment, but the create semantics plus 'point-in-time' framing make the intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete operational prerequisites: the required write scope and the instruction to 'Call list_assets first to resolve asset_id.' That is genuine when/how guidance. It stops short of stating when NOT to use it (e.g., correcting an existing assessment should go through update_asset_condition_assessment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_costBInspect
Create a new asset cost entry - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Cost amount (required) | |
| site_id | No | Site ID | |
| asset_id | No | Asset ID | |
| category | Yes | Cost category (required) | |
| cost_date | Yes | Cost date (ISO 8601, required) | |
| po_number | No | Purchase order number (free text) | |
| building_id | No | Building ID | |
| description | No | Description | |
| work_order_id | No | Work order ID | |
| invoice_number | No | Invoice number (free text) | |
| purchase_order_id | No | Purchase order that paid this cost - resolve via list_purchase_orders. Counts against the order's remaining balance unless the cost belongs to a work order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the required write scope, which is genuinely useful. However, for a mutation it says nothing about reversibility, validation, or the cross-entity side effect (costs consuming a purchase order's remaining balance) that only appears buried in the schema for purchase_order_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with the operation and scope front-loaded, no filler. It is slightly terse for an 11-parameter mutation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation with 11 params, no annotations, and no output schema, the description covers purpose and auth but omits what the call returns, what gets counted against PO balances, and when a sibling create tool is the better choice. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters including the meaningful purchase_order_id balance semantics. The description adds no parameter-level information, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (asset cost entry) and adds a disambiguating anchor — 'the record type shown on the AssetLab "Expenses" page' — which helps separate it from the sibling create_expense and create_infrastructure_asset_cost. It does not explicitly name those siblings, so a reader must still infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative tool is named, even though create_expense, create_infrastructure_asset_cost, and create_purchase_order_line all overlap. The only contextual guidance is 'Requires asset_costs:write scope,' which is a prerequisite rather than usage selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_documentAInspect
Create an asset document record (after uploading the file via create_upload_url). Requires asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name (required) | |
| user_id | No | Uploader user ID | |
| asset_id | Yes | Asset ID this document belongs to (required) | |
| category | No | Document category | |
| file_path | Yes | Storage path from upload URL response (required) | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the required scope (asset_documents:write) and the upload-before-create sequencing, which is genuinely useful. It does not say whether the call is idempotent, what happens on duplicate file_path, or what is returned, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the prerequisite and scope. No filler. It could be marginally tighter but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers the essential workflow (upload first) and authorization requirement, but omits return behavior, failure modes, and how this differs from the parallel document-creation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 8 parameters, so the schema already documents name, asset_id, category enum, file_size, file_type, etc. The description only reinforces the file_path linkage to create_upload_url. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an asset document record') and adds the precondition that the file must already be uploaded. It does not explicitly differentiate itself from the many sibling create_*_document tools (project, contract, infrastructure asset), but the resource is unambiguous from the name plus description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete ordering rule: create the document only after obtaining a path via create_upload_url. That is real usage guidance. It stops short of naming alternatives (e.g. create_infrastructure_asset_document) or stating when this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_lifecycle_eventAInspect
Create a facility lifecycle strategy event. Events attach to an asset-type SCOPE - exactly ONE of asset_type_id or asset_type_group_id - never to individual assets; an asset resolves its type's own strategy first, else its type group's. Replacement is NOT an event (it stays the renewal forecast + replacement value) - model the interventions BEFORE replacement: roof recoats, boiler retubes, overhauls. Resolve type ids with list_asset_types / list_asset_type_groups, and list existing events first to reuse a scope. Requires asset_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name (required, e.g. "Roof recoat") | |
| fixed_cost | No | Fixed cost per application (current dollars, never indexed) | |
| sort_order | No | Evaluation order within the strategy | |
| cost_source | No | Provenance of the cost ("Engineering 2026", a tender reference) | |
| event_class | Yes | Event type - preventative maintenance or rehabilitation | |
| asset_type_id | No | Asset type the strategy scope applies to (exactly one of the two scope ids) | |
| impact_method | Yes | Effect: add years of life, or reset condition to a value | |
| impact_reset_to | No | Condition after the event (required when impact_method is reset_condition) | |
| work_generation | No | What a due application of this event becomes when created from the interventions list: none (plan only, default), work_order, or project. Nothing is created on a schedule. | |
| impact_add_years | No | Years added (required when impact_method is add_years) | |
| max_applications | No | How many times the event may fire over an asset's life (default 1) | |
| min_years_between | No | Minimum years between firings of a recurring event (default 1) | |
| asset_type_group_id | No | Asset type group the scope applies to (exactly one of the two scope ids) | |
| trigger_condition_max | Yes | Upper bound of the trigger window - the event fires when projected condition falls to this | |
| trigger_condition_min | No | Lower bound of the trigger window (default 0); an asset already below it has missed the event | |
| work_generation_priority | No | Priority for generated work orders. Ignored unless work_generation is work_order. | |
| work_generation_category_id | No | Work category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers: it discloses the required auth scope (asset_lifecycle_events:write), the exactly-one-of-two scope-id constraint with type-before-group resolution precedence, and the semantics of what does NOT belong here. It stops short of describing failure behavior or what the create returns, which leaves a modest gap for a 17-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the scope rule, then the exclusion, then the prerequisite lookups. Dense and every sentence earns its place, though the four-clause opening block is packed tightly enough to require careful reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, 4-required mutation with no annotations and no output schema, the description covers purpose, scoping semantics, prerequisites, and auth requirements, while the schema fully documents parameters. Adequate to call correctly; only return/failure expectations are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description adds genuine value beyond the schema by explaining scope resolution precedence (an asset resolves its type's own strategy first, else its type group's) and the conceptual role of event_class relative to replacement, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Create a facility lifecycle strategy event") and immediately disambiguates it from its infrastructure sibling and from the replacement-forecast concept. It also explains the scope model (asset-type scope, never individual assets), so an agent can tell it apart from create_asset_replacement_plan and create_infrastructure_lifecycle_event without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when-to-use (model interventions BEFORE replacement: roof recoats, boiler retubes, overhauls), an exclusion ("Replacement is NOT an event"), and prerequisites/alternatives (resolve ids via list_asset_types / list_asset_type_groups; list existing events first to reuse a scope). This is textbook routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_partBInspect
Link a part to an asset (creates an asset-part association). Requires asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| part_id | Yes | Part ID (required) | |
| asset_id | Yes | Asset ID (required) | |
| quantity | No | Quantity of this part on the asset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required authorization scope ('asset_parts:write'), which is real behavioral value. But it omits what happens on a duplicate association (upsert vs. error), whether quantity defaults, and whether the operation is reversible, leaving meaningful gaps for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operation is front-loaded and the auth requirement is appended. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-parameter link tool with no annotations and no output schema, the description covers the core operation and the scope requirement. It still leaves unclear duplicate-handling and return behavior, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (part_id, asset_id, quantity) are already documented in the schema. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Link a part to an asset', with a parenthetical clarifying that it creates an association. This clearly separates it from sibling create_part (creates a part) and create_asset (creates an asset). However, it does not explicitly name a sibling alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but gives no when-to-use guidance and never mentions the alternatives for this domain (e.g., update_asset_part when changing the quantity of an existing link, or delete_asset_part to remove it). An agent must infer the boundaries on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_placementAInspect
Place an asset on a floorplan at the given (x, y) coordinate (normalized 0-1, origin top-left). UPSERTS by asset_id - an asset can have at most ONE placement globally, so calling this again just moves the pin. Use bulk_create with resource="asset-placements" to place many assets at once. Requires asset_placements:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Normalized x coordinate (0=left, 1=right) | |
| y | Yes | Normalized y coordinate (0=top, 1=bottom) | |
| source | No | "manual" (default) or "ai" for AI-placed | |
| asset_id | Yes | Asset to place (resolve via list_assets) | |
| region_id | No | Optional region the pin sits inside (usually auto-inferred) | |
| floorplan_id | Yes | Target floorplan (resolve via list_floorplans) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers well: it discloses upsert semantics, the one-placement-per-asset-global constraint, and a required scope (asset_placements:write). It omits error/conflict behavior and what the response returns, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then the surprising upsert constraint, then the routing to bulk_create and the scope requirement. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the critical non-obvious facts: upsert behavior, global single-placement constraint, and auth scope. It does not describe return value or failure modes, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented, including x/y normalization and enum for source. The description restates the coordinate frame ('normalized 0-1, origin top-left'), which is largely duplicative of the schema's own x/y descriptions, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Place an asset on a floorplan') plus the coordinate frame, and materially differentiates itself from update_asset_placement by declaring the operation UPSERTS by asset_id. An agent can tell exactly what this does versus its siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes bulk work to an alternative ('Use bulk_create with resource="asset-placements" to place many assets at once') and clarifies that re-calling is not a duplicate but a move. Both the when-to-use and when-to-use-something-else conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_replacement_planBInspect
Create a new asset replacement plan. Requires asset_replacement_plans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes | |
| status | No | Status | |
| asset_id | Yes | Asset ID (required) | |
| priority | No | Priority | |
| estimated_cost | No | Estimated replacement cost | |
| funding_source | No | Funding source | |
| planned_replacement_year | Yes | Planned replacement year (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the required authorization scope ('asset_replacement_plans:write'), which is genuine added value. However, it says nothing about mutation side effects, duplicate handling, or whether creating a plan triggers downstream lifecycle/cost changes, leaving significant gaps for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and followed by the permission requirement. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must stand in for the behavioral profile. It covers purpose and auth scope adequately, which is enough to call the tool, but omits return values, error behavior, and any constraints linking this plan to an existing asset record.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 7 parameters (including required asset_id and planned_replacement_year, plus enums for status and priority) are already documented in the schema. The description adds no semantics beyond that; the baseline of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Create a new asset replacement plan.' That is unambiguous and distinct from sibling read/write tools. It stops short of explicitly differentiating from update_asset_replacement_plan or bulk_create, but the noun phrase is specific enough to identify the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_asset_replacement_plan, bulk_create, or list_asset_replacement_plans. There is no mention of prerequisites (e.g., the asset must already exist) or when-not-to-use conditions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_statusAInspect
Create a new asset status (lifecycle state for assets). Requires asset_statuses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Status name (required) | |
| module | No | Workspace the status is offered in: facilities (assets), infrastructure (features), or shared (both). Defaults to shared. | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required authorization scope (asset_statuses:write), which is real behavioral context. However, it says nothing about name uniqueness constraints, what the created record contains, or failure behavior — notable gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the operation stated first and the prerequisite second. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create with a fully documented schema and no output schema, the description covers purpose and the auth prerequisite, which is enough to call the tool. It could add uniqueness/validation expectations, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, module (with enum values and default) and description fully. The description adds no parameter-level 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.
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 asset status') and adds a clarifying gloss ('lifecycle state for assets') that distinguishes it from the many other create_asset_* siblings. It does not explicitly name or contrast with update_asset_status or list_asset_statuses, so it misses the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating asset statuses but gives no when-to-use guidance, no exclusion against the sibling update_asset_status, and no mention of when a status already exists. The scope prerequisite ('requires asset_statuses:write') is the only actionable usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_typeBInspect
Create a new asset type. Requires asset_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Asset type name (required) | |
| group_id | No | Group ID | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does disclose the required write scope, which is genuinely useful auth context. However, it omits whether the name must be unique, whether the new type is immediately available for use, and any idempotency or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short sentences with the action front-loaded and the permission requirement second. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the scope disclosure is a useful start, but an agent still lacks information about uniqueness constraints and what the response contains. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, group_id, and description are already documented in the schema, including required status and length limits. The description adds nothing about parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new asset type'), which is clearly distinguishable from update_asset_type and delete_asset_type. It does not differentiate itself from the adjacent create_asset_type_group or bulk_create siblings, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_asset_type_group, create_asset, or bulk_create, and no prerequisites beyond the scope note. Usage context is left entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_asset_type_groupAInspect
Create a new asset type group. Groups organize asset types into logical categories. Requires asset_type_groups:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name (required) | |
| color | No | Color hex code (e.g., #6366f1) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required authorization scope ('asset_type_groups:write'), but says nothing about uniqueness constraints on name, duplicate-name behavior, reversibility, or the response. Useful but incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, action verb first, definition second, prerequisite last. No filler and nothing that could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter create tool with full schema coverage and no output schema, the description covers purpose, domain meaning, and the auth scope. Only edge-case behavior (name collisions, validation failures) is missing, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three parameters (name, color, description) is documented in the schema with constraints like maxLength and a hex-code example. The description adds no parameter detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new asset type group') and adds a definition of what a group is ('organize asset types into logical categories'), which implicitly separates it from the sibling create_asset_type. It stops short of naming the adjacent tools, so differentiation is conceptual rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives implied usage (create a grouping construct for asset types) and states the required scope, but offers no when/when-not guidance or alternatives among the many create_* siblings. Adequate context, no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_attachmentAInspect
Create an attachment record linked to a work order, work request, PM schedule, or PM template. Exactly one parent ID must be provided. Requires attachments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | Yes | File URL / storage path (required) | |
| file_name | Yes | File name (required) | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| description | No | Description | |
| uploaded_by | No | Uploader user ID | |
| work_order_id | No | Work order ID (exactly one parent required) | |
| pm_schedule_id | No | PM schedule ID (exactly one parent required) | |
| pm_template_id | No | PM template ID (exactly one parent required) | |
| work_request_id | No | Work request ID (exactly one parent required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the auth requirement ('Requires attachments:write scope') and the exactly-one-parent invariant, which are non-obvious operational facts. It says nothing about return values, whether the referenced parent must already exist, or failure behavior, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action front-loaded and the constraint and prerequisite following in logical order. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with full schema coverage, no output schema, and no annotations, the description covers the essentials: what it creates, the parent-selection rule, and the required scope. It could be slightly more complete on return behavior or parent-existence preconditions, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the four mutually exclusive parent IDs, is already documented in the schema. The description restates the parent constraint but adds no format, syntax, or defaulting detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create an attachment record') and enumerates the four valid parent types, which meaningfully scopes the tool. It does not, however, differentiate itself from plausible siblings such as create_asset_document, create_project_document, or upload_file/create_upload_url, which an agent might reasonably consider for similar tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the structural constraint ('Exactly one parent ID must be provided') and the required scope, but there is no explicit when-to-use versus alternatives guidance. The agent gets no routing help for choosing between this tool and other document/attachment creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_budgetAInspect
Set an annual funding budget, as the dashboard Budget tab does. Requires budgets:write scope. The tab holds one figure per year, per funding source ('O&M' or 'Capital'), per workspace (module: facilities, infrastructure, or omitted for organization-wide). Send one row per year and funding source - do not split a year across sites or buildings; the tab does not read site_id or building_id and a second row for the same slot is refused with 409. Required: year, funding_source, budgeted_amount.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Budget year (required) | |
| module | No | Workspace the budget belongs to. Omit for an organization-wide budget; set it when the organization budgets facilities and infrastructure separately. | |
| site_id | No | Site ID. Not read by the Budget tab. | |
| building_id | No | Building ID. Not read by the Budget tab. | |
| funding_source | Yes | 'O&M' (operations and maintenance) or 'Capital' (required) | |
| budgeted_amount | No | Budgeted amount | |
| allocated_amount | No | Allocated amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it discloses the required budgets:write scope, the uniqueness constraint, the 409 refusal on duplicate slots, and that site_id/building_id are not read. These are exactly the behavioral traits an agent needs to avoid a failed call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, scope, and constraints in compact prose; every sentence adds a constraint or routing detail. The trailing 'Required:' line is slightly redundant with the schema but still informative given the discrepancy noted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param mutation tool with no annotations and no output schema, the description covers auth, uniqueness, conflict behavior, and workspace semantics. It is nearly complete; only the required-field discrepancy and lack of an explicit update alternative keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful semantics (module = workspace, O&M/Capital meaning, don't use site_id/building_id), but it also introduces an inconsistency by listing budgeted_amount as 'Required' while the schema's required array contains only year and funding_source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Set') + resource ('annual funding budget') with a concrete anchor to the dashboard Budget tab. It distinguishes itself from update_budget/list_budgets by framing this as the creating/setting action and naming the uniqueness slot it writes to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly tells the agent when this applies (one row per year and funding source, do not split a year across sites/buildings) and gives the failure condition (a second row for the same slot is refused with 409). It does not explicitly route to update_budget for existing records, 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.
create_buildingAInspect
Create a new building. Requires buildings:write scope. latitude and longitude place the building on the map and must be sent together - one without the other is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Building name (required) | |
| type | No | Building type label | |
| floors | No | Number of floors | |
| site_id | Yes | Site ID (required) | |
| latitude | No | WGS 84 latitude of the building, in decimal degrees. Must be sent together with longitude. | |
| area_sqft | No | Area in square feet | |
| longitude | No | WGS 84 longitude of the building, in decimal degrees. Must be sent together with latitude. | |
| year_built | No | Year the building was constructed | |
| building_type_id | No | Building type ID (from building_types) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the auth scope and the coordinate-pairing rejection rule, but that pairing rule is already documented in the schema, and it says nothing about idempotency, duplicate handling, what is returned, or whether site_id must reference an existing site.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and the auth requirement, then the coordinate constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no annotations and no output schema, the description covers purpose, permission, and one validation rule. It leaves gaps around the site_id relationship, response/return behavior, and side effects, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 9 parameters are already documented in the schema. The description only restates the lat/long pairing constraint already present in those field descriptions, adding no new syntax, format, or dependency detail beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new building'), so the agent immediately knows this is a building-creation operation. It does not differentiate from adjacent siblings such as create_project_building or create_site, which an agent must disambiguate on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite (buildings:write scope) but gives no explicit when-to-use guidance, no exclusions, and no pointer to alternatives like create_project_building or bulk_create. Usage is implied from the name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_building_typeBInspect
Create a new building type. Requires building_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Building type name (required) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add genuine value by stating the required write scope (building_types:write), which is not in the schema. However, it omits other behavioral traits such as idempotency, behavior on duplicate names, or any side effects of the creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the scope requirement second. No redundant or filler content; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create tool, the definition covers the action and the auth requirement, which is adequate. But with no annotations and no output schema, it leaves the return value and any uniqueness/validation behavior unexplained, so it is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (name, description) are already documented in the schema. The description adds no syntax, format, or constraint details beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ("Create a new building type"), clearly distinguishing it from the many sibling create_* tools and from delete_building_type/update_building_type/list_building_types. It does not explicitly name which sibling handles adjacent concerns, but the verb+resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites beyond the scope, and no reference to alternatives. An agent must already understand the domain to know when this tool applies versus create_asset_type or create_location_type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_change_orderCInspect
Create a new change order. Requires change_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Additional notes | |
| amount | Yes | Amount (required, negative for credits) | |
| reason | No | Reason for the change order | |
| status | No | Status | |
| co_number | Yes | Change order number (required) | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| category_id | No | Cost category ID | |
| description | Yes | Description (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does disclose the required auth scope ('change_orders:write'), which is genuine added context, but says nothing about defaults applied on creation, whether status defaults to draft, validation behavior, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and the permission requirement, with zero filler. Nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description is too thin. It omits creation defaults, the meaning of the draft/submitted status values at creation time, and any side effects, leaving the agent to rely solely on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters including the status enum and the negative-amount credit convention are already documented. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new change order'), which is unambiguous. However, it does nothing to distinguish this tool from adjacent siblings like create_work_order, create_purchase_order, or update_change_order beyond the resource name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites beyond the scope note, and no mention of alternatives or related tools. The agent has to infer context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_compliance_itemBInspect
Create a new compliance item (regulatory requirement). Requires compliance:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Compliance item name (required) | |
| status | No | Status | |
| system_id | No | Associated system ID | |
| description | No | Description | |
| regulation_reference | No | Regulation or code reference | |
| compliance_period_months | No | Compliance period in months |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It usefully discloses the required auth scope (compliance:write), but omits what happens on success/failure, whether names must be unique, or any side effects – significant gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, well front-loaded with the core action first and the permission requirement second. No wasted words; it is appropriately sized if a little sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create tool with no output schema and no annotations, the description covers purpose and auth but omits return behavior and failure/constraint semantics. Adequate but with clear gaps against the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters (including the enum for status and constraints). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new compliance item') and even disambiguates the domain concept with '(regulatory requirement)'. It does not differentiate from closely-named siblings like create_compliance_record or create_compliance_pm_schedule, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires compliance:write scope') but no guidance on when to use this versus create_compliance_record or create_compliance_pm_schedule, nor any exclusions. Usage is only implied by the name and scope note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_compliance_pm_scheduleAInspect
Link a PM schedule to a compliance item, so completing the schedule keeps the item compliant. Requires compliance:write scope. Required: compliance_item_id, pm_schedule_id, required_frequency_days. Resolve both ids first with list_compliance_items and list_pm_schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| weight | No | Relative weight of this schedule in the item score. Default 1. | |
| pm_schedule_id | Yes | PM schedule ID (required) | |
| compliance_item_id | Yes | Compliance item ID (required) | |
| required_frequency_days | Yes | How often, in days, the schedule must be completed for the item to stay compliant (required), e.g. 365 for annual |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the authorization scope, the required fields, and the semantic effect of the link on compliance status. It omits idempotency/duplicate-link behavior and whether the link is reversible, which are relevant for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: effect first, then permission requirement, then required fields, then prerequisite lookup steps. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone; it covers auth, required inputs, and the pre-call lookup workflow. It leaves out what the tool returns and any guidance on the optional weight parameter or on modifying an existing link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters including weight are already documented in the schema, and the description adds no parameter-level meaning beyond restating the three required fields. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (link) and both resources (PM schedule, compliance item), and explains the functional consequence: completing the schedule keeps the item compliant. This distinguishes it cleanly from siblings like create_compliance_item, create_pm_schedule, and update_compliance_pm_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions: requires compliance:write scope and instructs the agent to resolve both ids via list_compliance_items and list_pm_schedules first. It doesn't state when not to use it (e.g., use update_compliance_pm_schedule to change an existing link), so it falls 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.
create_compliance_recordAInspect
Create a new compliance record (audit trail entry). Requires compliance_records:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| completed_at | Yes | Completion date-time (ISO 8601, required) | |
| completed_by | No | User ID who completed | |
| work_order_id | Yes | Work order ID (required) | |
| pm_schedule_id | Yes | PM schedule ID (required) | |
| compliance_item_id | Yes | Compliance item ID (required) | |
| required_frequency_days | Yes | Required frequency in days (required) | |
| days_since_last_completion | No | Days since last completion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required auth scope, which goes beyond the schema, but says nothing about mutation behavior such as idempotency, duplicate handling, or what the created record affects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose followed by the auth prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 7 fully-documented params, no output schema, and no annotations, the definition is adequate but thin. It omits any guidance on the linked entities (compliance item, PM schedule, work order) that would help an agent invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (compliance record) and clarifies semantics by equating it with an 'audit trail entry.' However, it does not differentiate from close siblings like create_compliance_item, create_compliance_pm_schedule, or update_compliance_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete prerequisite ('Requires compliance_records:write scope'), which is useful context. But it offers no when-to-use vs when-not guidance and does not distinguish this from the sibling create/update compliance tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contractBInspect
Create a new contract. Requires contracts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Contract title (required) | |
| category | Yes | Contract category (required) | |
| end_date | Yes | End date (ISO 8601, required) | |
| company_id | No | Vendor ID | |
| extendable | No | Whether contract is extendable | |
| start_date | Yes | Start date (ISO 8601, required) | |
| annual_cost | No | Annual cost | |
| description | No | Description | |
| quality_score | No | Quality score (1-10) | |
| purchase_order | No | Purchase order reference |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses the required auth scope (contracts:write), but says nothing about idempotency, validation behavior, or what the call returns. "Create" implies mutation but no further behavioral traits are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the key constraint. No wasted words and nothing that could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no output schema and no annotations, the description is thin. The schema fully documents inputs and the scope requirement is noted, but the agent receives no information about the response shape or side effects, leaving gaps for a fairly complex create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented (title, category, dates, company_id as vendor, annual_cost, quality_score, etc.). The description adds no additional meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new contract"), which is clear and unambiguous. It does not distinguish itself from related sibling tools like create_contract_document or create_contract_site, but the core purpose is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites beyond the scope requirement, and no mention of alternatives such as bulk_create. An agent gets no routing help for choosing this over related creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contract_documentBInspect
Create a contract document record. Requires contract_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | File name (required) | |
| file_path | Yes | Storage path from upload URL response (required) | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| contract_id | Yes | Contract ID (required) | |
| uploaded_by | No | Uploader user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add the meaningful authorization requirement (contract_documents:write scope), which is genuine behavioral context a mutation tool should disclose. However, it omits whether duplicate records are rejected, what the response contains, or how the file_path prerequisite is satisfied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded before the scope requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with no annotations and no output schema, the description is minimal. It covers the action and auth scope, but the description is adequate at best given the surrounding tool family requires the agent to infer the upload-then-create workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (contract_id, file_name, file_path, file_size, file_type, uploaded_by) are already documented in the schema. The description adds no additional parameter meaning beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (contract document record), so an agent can tell it creates a contract document rather than a contract. It does not differentiate itself from near siblings like create_contract, create_attachment, or create_project_document, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states the required scope. It gives no guidance on when to use this versus upload_file, create_upload_url, or create_attachment, nor that a file must be uploaded first to obtain file_path. No when/when-not or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contract_siteAInspect
Assign a contract to a site. Requires contract_sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Site ID (required) | |
| contract_id | Yes | Contract ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it usefully discloses the required write scope, which most schemas do not express. However, it says nothing about idempotency, duplicate-assignment behavior, or what happens to an existing link, which matter for an association-creating mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the operation stated first and the authorization prerequisite second. Nothing is padded or restated from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter association tool with no output schema, the description covers the operation and the auth requirement, which is most of what an agent needs. It stops short of explaining failure modes (e.g., duplicate link, nonexistent contract/site), which no structured field covers either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are required with descriptions, so the schema already documents them fully. The description only adds the mapping semantics (contract_id → contract, site_id → site) already implied by the tool name, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Assign) and the two resources involved (contract, site), so the agent knows this creates a contract-to-site association rather than a new contract or site. It does not explicitly contrast with siblings like create_contract or list_contract_sites, but the implied operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when a contract needs to be tied to a site) and gives a prerequisite (contract_sites:write scope), but offers no when-not guidance and never mentions delete_contract_site or list_contract_sites as alternatives for managing the same association.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cost_categoryBInspect
Create a new cost category. Requires cost_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Cost category name (required) | |
| is_active | No | Whether the category is active | |
| parent_id | No | Parent cost category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a genuine behavioral fact: the required cost_categories:write scope, which is real auth context. Beyond that it says nothing about side effects, whether the category must be unique, or what is returned, so it only partially covers the behavioral gap left by missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the purpose is front-loaded and the scope constraint follows immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create tool with full schema coverage and no output schema, the description is minimally adequate. It omits any note about hierarchy semantics (parent_id nesting) or what a successful creation yields, which would have made it complete given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, is_active, and parent_id with meaningful descriptions. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new cost category'), so the agent knows exactly what it does. However, it offers no differentiation from similarly-shaped siblings such as create_work_category or create_part_category, leaving the agent to infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite context, and no mention of alternatives (e.g. update_cost_category or list_cost_categories). The only routing signal is the scope requirement, which is not the same as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_criticality_modifierAInspect
Override the criticality modifier for one tier. Rows are overrides only: a tier with no row uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4). A modifier below 1 tightens every target held by facilities in that tier and one above 1 relaxes them. One override per tier; a duplicate returns 409, so call list_criticality_modifiers and update the existing row instead. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| modifier | Yes | Multiplier from 0.1 to 1.9 (required); below 1 tightens, above 1 relaxes | |
| criticality | Yes | Criticality tier (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses that rows are overrides only, gives the built-in defaults for un-overridden tiers, states the duplicate-409 behavior, and names the required 'los_targets:write' scope. These are real behavioral traits beyond what the schema exposes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and each subsequent sentence contributes distinct information (defaults, modifier semantics, duplicate handling, scope) with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and no annotations, the description covers purpose, defaults, value semantics, collision handling, and auth scope. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the schema already documents that modifier <1 tightens and >1 relaxes. The description goes further by supplying the per-tier default values (critical 0.6, high 0.8, medium 1.0, low 1.4) and explaining the domain effect on targets held by facilities in that tier, adding meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Override the criticality modifier') scoped to 'one tier', which is precise enough to distinguish it from update_criticality_modifier and the other create_* siblings. An agent immediately knows this creates a per-tier override row rather than a general setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from this tool when an override already exists: 'a duplicate returns 409, so call list_criticality_modifiers and update the existing row instead.' That names both the alternative tool and the condition that selects it, which is exactly the when/when-not guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_field_definitionBInspect
Create a new custom field definition. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| field_name | Yes | Field name / key (required) | |
| field_type | Yes | Field data type (required) | |
| entity_type | Yes | Entity type this field applies to (required) | |
| field_label | No | Display label | |
| is_required | No | Whether the field is required | |
| display_order | No | Display order | |
| field_options | No | Options for select-type fields |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the required OAuth scope 'custom_fields:write,' which is a useful behavioral trait beyond the schema. However, for a mutation tool it omits other important traits: whether creation is idempotent, what happens if a definition with the same field_name already exists, and what side effects occur. The single auth disclosure earns a 3 but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero wasted words, and the core purpose is front-loaded. It is appropriately sized for what it attempts to say, though it is under-specified rather than maximally informative, so a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with seven parameters, no output schema, and no annotations, the description is too sparse. It does not explain valid values for entity_type (the schema provides only a plain string with maxLength, no enum), does not mention that field_options applies only to select-type fields, and does not describe post-creation behavior. Schema coverage helps, but the description fails to fill important contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema, including the enum for field_type. The description adds no additional parameter meaning. Per the rubric, when schema coverage is high the baseline is 3, and this description does not exceed that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new custom field definition.' This clearly conveys what the tool does, but it does not differentiate from its closest sibling create_custom_field_value (which creates values, not definitions), nor does it mention the related list/get/update/delete tools for the same resource. A 4 is appropriate: clear purpose, no sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Requires custom_fields:write scope,' which is a prerequisite but not when-to-use guidance. There is no mention of alternatives (e.g., create_custom_field_value for setting values on existing fields), no conditions for use, and no exclusions. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_field_valueAInspect
Create (upsert) a custom field value for an entity. The table stores values in typed columns - prefer setting the one that matches the field definition's field_type: value_text (text/select), value_number (number), value_date (date, ISO YYYY-MM-DD), value_boolean (boolean). Alternatively pass a single value string and the server will dispatch it to the right column based on field_type. Writes upsert on (entity_id, field_definition_id) so replaying a batch is idempotent. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Legacy single-value shim - server dispatches to the correct typed column based on the field definition's field_type. Ignored if any value_* typed column is set. | |
| entity_id | Yes | Entity ID - e.g. asset.id, work_order.id (required) | |
| value_date | No | Date value, ISO YYYY-MM-DD (use for field_type=date) | |
| value_text | No | Text value (use for field_type=text or select) | |
| value_number | No | Numeric value (use for field_type=number) | |
| value_boolean | No | Boolean value (use for field_type=boolean) | |
| field_definition_id | Yes | Custom field definition ID - resolve via list_custom_field_definitions (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that writes upsert on (entity_id, field_definition_id) making batch replay idempotent, and states the required custom_fields:write scope. It does not say whether unmentioned typed columns are cleared on an upsert, which is the main remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then typed-column guidance, then idempotency and auth requirements. Every sentence adds information and none is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a seven-parameter create/upsert tool with no output schema or annotations: params, idempotency, auth scope, and column-selection logic are all covered. Only the overwrite/clear behavior on upsert is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by mapping field_type values to the correct typed column (text/select, number, date ISO, boolean) and explaining the dispatch behavior of the legacy `value` shim. This goes beyond restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/upsert) and resource (custom field value for an entity), and the upsert framing immediately distinguishes it from siblings like create_custom_field_definition and update_custom_field_value. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to prefer the typed value_* column matching the field definition's field_type, and offers the `value` shim as an alternative with its dispatch rule. It stops short of stating when to use this tool versus update_custom_field_value, but the upsert semantics make that distinction largely internal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_expenseCInspect
Create a new expense. Requires expenses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes | |
| amount | Yes | Expense amount (required) | |
| project_id | Yes | Project ID (required) | |
| category_id | No | Cost category ID | |
| description | Yes | Expense description (required) | |
| receipt_url | No | Receipt URL | |
| expense_date | Yes | Expense date (ISO 8601, required) | |
| work_order_id | No | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the necessary scope (a behavioral trait), but omits critical details such as return behavior, side effects, validation rules, and whether the operation is idempotent. For a mutation tool, this is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The primary purpose is front-loaded, followed by the scope requirement. Every sentence earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, no annotations, and no output schema, the description is notably incomplete. It fails to describe return values (which are not covered by an output schema), error handling, or any behavioral nuances. An agent would need to infer much from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all 8 parameters (including required ones) are documented in the schema. The description adds no additional parameter semantics beyond what the schema provides. Baseline 3 is appropriate when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (expense), clearly conveying the tool's function. It does not explicitly differentiate from sibling creation tools, but the resource is unique enough for an agent to identify it. No misleading or vague language.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only provides a required scope (expenses:write) as a prerequisite. No guidance on when to use this tool versus alternatives like bulk_create or update_expense, nor any context about appropriate scenarios. The scope requirement is useful but insufficient for usage decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_floorplanAInspect
Create a floorplan row. Provide EXACTLY ONE of building_id (per-building floor) or site_id (site-level / campus plan). Typically the web app calls this per page of an uploaded PDF; MCP clients rarely need to call this directly since they do not upload the PDF itself. Requires floorplans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Detection status (default: pending) | |
| site_id | No | Site this plan belongs to (use for site-level / campus plans; omit if building-scoped) | |
| building_id | No | Building this floor belongs to (omit if site-scoped) | |
| floor_label | Yes | Human-readable label (e.g. "Ground Floor", "Mezzanine", "Site Plan") | |
| floor_order | No | Sort order within the scope (lowest first) | |
| page_number | No | 1-indexed page number within the PDF | |
| pdf_filename | Yes | Original filename for display | |
| page_width_pt | No | Page width in PDF points (discovered client-side) | |
| page_height_pt | No | Page height in PDF points | |
| pdf_storage_path | Yes | Supabase Storage path to the PDF file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the load; it discloses the required write scope ('floorplans:write') and the pipeline context (invoked per page of an uploaded PDF). It does not explain what happens after creation (the pending/detecting status lifecycle) or the failure mode when both or neither id is supplied, leaving some behavioral gaps for an unannotated mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action, then the key constraint, then the relevance caveat, then the auth requirement. Every sentence carries information an agent needs; nothing is restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, unannotated tool with no output schema, the description covers the highest-risk decisions: which id to pass, whether to call it at all, and what scope is needed. It leaves the detection-status lifecycle and post-create behavior unexplained, but the required fields are self-documenting in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. However, the description adds a rule the schema does not state anywhere: EXACTLY ONE of building_id or site_id, and it clarifies the semantic difference between them (per-building floor vs site-level/campus plan). That is genuine added meaning beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a floorplan row') and immediately narrows scope by explaining the two mutually exclusive ownership modes (per-building vs site-level/campus). It also flags the typical caller (the web app), which lets an agent judge relevance without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not guidance: 'MCP clients rarely need to call this directly since they do not upload the PDF itself.' Combined with the exactly-one-of constraint, an agent knows both whether to use it and how to shape the call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_floorplan_regionBInspect
Create a region (labeled room or zone) on a floorplan. Polygon coordinates are normalized 0-1 with origin top-left. Optionally link the region to an existing Location via location_id. Requires floorplan_regions:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Region label (e.g. "Boiler Room 2B") | |
| source | No | "manual" (default) or "ai" for AI-detected | |
| polygon | Yes | Polygon outline as an array of [x, y] points in normalized 0-1 coordinates (origin top-left). At least 3 points. | |
| reviewed | No | True if an admin has reviewed this region (default: true for manual, false for ai) | |
| confidence | No | AI confidence score (0-1), only set when source=ai | |
| location_id | No | Linked Location ID (resolved via list_locations) | |
| floorplan_id | Yes | Floorplan this region belongs to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It usefully discloses the coordinate convention (normalized 0-1, origin top-left) and the required write scope, but says nothing about idempotency, defaults for source/reviewed, or error behavior on an existing or invalid region.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose and with no filler. The coordinate sentence partly overlaps the schema's polygon description, which is the only minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers scope and coordinate conventions but omits what the call returns (e.g., the new region ID) and the behavior of schema defaults. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters are already documented, including polygon coordinates and the location_id resolution note. The description restates the coordinate system and the optional linkage rather than adding syntax or meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a region ... on a floorplan') and the parenthetical 'labeled room or zone' clarifies what a region is, distinguishing it from create_location and create_floorplan. It lacks an explicit sibling reference, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some context: the optional Location linkage via location_id and the required floorplan_regions:write scope. However, it offers no when-to-use vs when-not guidance relative to siblings like update_floorplan_region or create_location, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_responseAInspect
Attach a published form to one record so it can be filled in - the direct way to put an inspection or checklist on an existing work order. The form's questions are snapshotted at attach time, so later edits to the template never change a form already in progress. To put a form on every work order a PM schedule generates, set form_template_id on the schedule instead of calling this per work order. Answering and completing the form happen in the AssetLab app, not through this API. Requires form_responses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| subject_id | Yes | ID of the record - resolve via the matching list tool (list_work_orders, list_pm_schedules, list_infrastructure_assets, list_compliance_records, list_sites) | |
| template_id | Yes | Published form template ID - resolve via list_form_templates. A draft or archived template is rejected; publish it first with update_form_template status="published". | |
| subject_type | Yes | What kind of record the form is being attached to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the snapshot-at-attach behavior, that answering/completing happens in-app rather than via this API (a key expectation-setter for a create tool), and the required write scope. It does not cover idempotency or re-attach behavior, so it falls short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each doing distinct work: purpose, snapshot semantics, the alternative path, the in-app boundary, and the scope requirement. The core action is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param create tool with no output schema and no annotations, the description covers action, downstream lifecycle (answering outside the API), the sibling alternative, and auth scope. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents template_id (published-only, draft/archived rejected), subject_id resolution, and the subject_type enum. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (attach) and resource (a published form to one record) and immediately names the concrete use case (inspection/checklist on an existing work order). It distinguishes itself from the PM-schedule path rather than blurring into the sea of create_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to call this (per-record attach) versus when to use an alternative (set form_template_id on the schedule for every generated work order), and adds the form_responses:write scope prerequisite. Both 'when' and 'when-not' are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_templateAInspect
Create a form template - a reusable inspection, checklist, compliance, or survey definition. Step 1 of building a form: create it as a draft, then add questions with create_form_template_item (or bulk_create on form-template-items), then publish with update_form_template status=published (publishing is rejected if any question is malformed). Requires form_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Form template name (required) | |
| module | No | Workspace the form is offered in: facilities, infrastructure (inspections of features), or shared (both). Defaults to shared. | |
| status | No | Publication status - leave as draft (default) until all questions are added. | |
| description | No | Description | |
| work_category_id | No | Work category ID - the same tenant-configured categories used by work orders (e.g. Electrical, Plumbing, HVAC). Look them up with list_work_categories and pick the closest match; omit if none fits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the auth requirement (form_templates:write scope), the draft-by-default lifecycle state, and the validation behavior on publish ('rejected if any question is malformed'). It stops short of describing failure modes or the returned identity, but the behavioral coverage is strong for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph with the core definition front-loaded, followed by the workflow, alternatives, and auth scope. Every clause carries information, though the run-on structure with multiple parentheticals is slightly heavy for a description this size.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and no annotations, this covers the essential workflow, dependencies, validation constraint, and permission requirement an agent needs to call it correctly. The only gap is the absence of any statement about what the call returns (e.g., the created template ID) needed for the subsequent item-creation step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including the enum meanings for module and status. The description adds only a slight gloss on the status parameter via the publish step, without format or default detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a form template') and immediately clarifies what a form template is ('a reusable inspection, checklist, compliance, or survey definition'). It distinguishes itself from siblings by naming create_form_template_item, bulk_create, and update_form_template, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as 'Step 1 of building a form' and lays out the full workflow: create as draft, add questions via create_form_template_item or bulk_create, then publish via update_form_template status=published. It also names the exclusion condition (publishing is rejected if any question is malformed), giving genuine 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.
create_form_template_itemAInspect
Add one question (item) to a form template. Build a form by calling this once per question in order, or use bulk_create on form-template-items. Requires form_template_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Question text / prompt shown to the user | |
| config | No | Per-type settings. number: { min, max, unit, integer, decimals }. text: { multiline, maxLength, placeholder }. multi_select: { minSelections, maxSelections }. photo: { minPhotos, maxPhotos }. | |
| options | No | REQUIRED for single_select/multi_select: at least 2 choices as { value, label } with unique values. value is a machine slug (e.g. "fail"), label is shown to the user (e.g. "Fail"). Omit for other types. | |
| item_key | No | Optional stable key, unique within the template. OMIT IT and the server derives one from the label (recommended). Only set it when a later item’s visible_when must reference this one - then use a short slug like "compressor_status". | |
| required | No | Whether an answer is required to complete the form (default false) | |
| help_text | No | Optional hint shown under the label | |
| item_type | Yes | Pick by the answer you want: single_select = exactly one choice (Pass/Fail, Yes/No, Yes/No/N-A, or custom - supply options); multi_select = pick several (supply options); number = a numeric reading/count (use config.min/max/unit/integer); checkbox = a single done/not-done tick; text = free comment (config.multiline for long text); photo = photo evidence (config.maxPhotos); section = a non-answerable heading that groups the questions under it. | |
| sort_order | Yes | Display order within the template (0-based; questions render in this order) | |
| template_id | Yes | Form template ID - resolve via list_form_templates | |
| visible_when | No | Optional conditional visibility { itemKey, op, value }. itemKey must reference an EARLIER item’s key (set that item’s item_key explicitly). Operators by referenced type - single_select/checkbox: equals, not_equals, in, not_in, is_answered, is_blank; number: gt, lt, gte, lte, equals, not_equals, is_answered, is_blank; text: is_answered, is_blank, equals, not_equals; multi_select: in, not_in, is_answered, is_blank. e.g. show a "Details" text item only when item "compressor_status" equals "fail". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the behavioral burden. It does disclose two real traits beyond the schema: the required form_template_items:write scope and the ordering requirement ('in order'). It does not say what happens on validation failure, whether sort_order collisions are rejected, or whether the created item id is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and scoped by the required permission. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, nested-object create tool the description plus the very detailed schema cover the invocation well, including the bulk alternative and permission requirement. The only shortfall is that with no output schema and no annotations, the description never indicates what a successful call returns (e.g. the new item id) or how to sequence references to it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself is unusually rich (per-type config shapes, options rules, visible_when operator matrix, item_key guidance). The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource and clarifies the resource is 'one question (item)' added to a form template, which cleanly separates it from create_form_template (makes the template) and update_form_template_item (edits an existing item). It also names the bulk_create sibling it is an alternative to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states how to use it ('calling this once per question in order') and names the alternative path ('use bulk_create on form-template-items'), which is exactly the when/when-else routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_assetBInspect
Create an infrastructure asset (feature - segment or node). Geometry must be GeoJSON Point (for nodes) or LineString (for segments) in EPSG:4326; coordinates are [longitude, latitude]. length_m, slope_pct, and risk_score are computed server-side. Requires infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Feature name | |
| lanes | No | Lane count | |
| model | No | Model | |
| depth_m | No | Depth (m) | |
| qr_code | No | QR code | |
| site_id | No | Site ID | |
| width_m | No | Width (m) | |
| geometry | Yes | GeoJSON geometry - Point for nodes, LineString for segments | |
| material | No | Material | |
| quantity | No | Quantity | |
| image_url | No | Image URL | |
| status_id | No | Asset status ID | |
| system_id | No | System ID | |
| to_street | No | To street (segments) | |
| network_id | Yes | Infrastructure network ID (required) | |
| road_class | No | O. Reg. 239/02 road class 1-6 (1-2 arterial, 3-4 collector, 5-6 local) | |
| building_id | No | Building ID | |
| data_source | No | Data source | |
| description | No | Description | |
| diameter_mm | No | Diameter (mm) | |
| from_street | No | From street (segments) | |
| location_id | No | Location ID | |
| risk_factor | No | Risk factor: CRITICAL, HIGH, MEDIUM, LOW | |
| to_invert_m | No | To-invert elevation (m) | |
| external_ids | No | Free-form external ID map | |
| feature_code | No | Feature ID - human-readable asset identifier, unique per tenant (typically the source GIS asset id) | |
| feature_type | Yes | "segment" (LineString) or "node" (Point) | |
| install_date | No | Install date (YYYY-MM-DD) | |
| asset_type_id | No | Asset type ID | |
| from_invert_m | No | From-invert elevation (m) | |
| purchase_cost | No | Purchase cost | |
| purchase_date | No | Purchase date (YYYY-MM-DD) | |
| safety_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| salvage_value | No | Salvage value | |
| serial_number | No | Serial number | |
| to_feature_id | No | To-node feature ID (segments) | |
| flow_direction | No | Flow direction | |
| service_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| condition_score | No | Condition score (0-100) | |
| from_feature_id | No | From-node feature ID (segments) | |
| manufacturer_id | No | Manufacturer ID | |
| system_class_id | No | System class ID | |
| system_group_id | No | System group ID | |
| unit_of_measure | No | Unit of measure | |
| financial_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| regulatory_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| reputation_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| environmental_impact | No | LOW, MEDIUM, HIGH, CRITICAL | |
| last_maintenance_date | No | Last maintenance date (YYYY-MM-DD) | |
| unit_replacement_value | No | Unit replacement value | |
| expected_lifetime_years | No | Expected lifetime (years) | |
| salvage_value_percentage | No | ||
| positional_accuracy_class | No | Positional accuracy class | |
| likelihood_of_failure_score | No | ||
| consequence_of_failure_score | No | ||
| purchase_cost_calculation_method | No | Cost calc method |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add real value: it discloses server-side computed fields (length_m, slope_pct, risk_score) the caller must not supply, the required infrastructure_assets:write scope, and the CRS/axis order. It is silent on duplicate feature_code handling, idempotency, error behavior, and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight clauses, front-loaded with the action, then the geometry contract, then the computed-field caveat, then the auth prerequisite. No filler and no repetition of schema text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 56-parameter mutation with no annotations and no output schema, the description covers the highest-risk items (geometry format, computed fields, scope) but omits asset-type-specific applicability of fields (e.g. from_street/to_invert_m are segment-only) and any statement of what a successful call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 95%, so the baseline is 3; the description earns one more by adding CRS (EPSG:4326) and coordinate order ([longitude, latitude]) that the schema's geometry description omits, plus the segment/node-to-geometry-type mapping. The remaining 50+ attributes are covered by the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an infrastructure asset') and immediately disambiguates the two sub-types ('feature - segment or node'). It does not, however, contrast itself with the nearby create_asset sibling, so an agent must infer which entity family applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives format constraints but no when-to-use guidance: nothing says when to use this versus create_asset, bulk_create, or create_infrastructure_network. There are no exclusions or preconditions beyond the scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_asset_commentAInspect
Add a comment to an infrastructure feature. The author is attributed to the API key automatically; do not pass user_id. Requires infrastructure_asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Comment text (required) | |
| feature_id | Yes | Infrastructure feature ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to lean on, the description usefully discloses two behavioral facts: author is auto-attributed from the API key, and the call requires infrastructure_asset_comments:write scope. It stops short of describing the response, validation limits (10000-char cap is only in the schema), or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, followed by the author-attribution caveat and the scope requirement. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter creation tool with no output schema and no annotations, the description conveys the essential auth and attribution context an agent needs. It could be stronger by clarifying the return or how it relates to the other comment-creation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters (feature_id, comment) are already fully documented in the schema, giving a baseline of 3. The description adds only the negative guidance that user_id should not be supplied, which is marginal added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (add) and resource (comment on an infrastructure feature), which is unambiguous. However, it does not differentiate from the many sibling comment-creation tools (create_asset_comment, create_project_comment, create_work_order_comment), which an agent must disambiguate by name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose statement, and there is one concrete operational cue ('do not pass user_id'). But there is no explicit when-to-use/when-not guidance or reference to the corresponding list/get/update/delete comment siblings, so the agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_asset_costBInspect
Record a cost against an infrastructure feature. work_order_number is derived server-side from work_order_id; do not set it. Requires infrastructure_asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Cost amount (required) | |
| category | Yes | Cost category (required) | |
| cost_date | Yes | Cost date (YYYY-MM-DD, required) | |
| po_number | No | PO number | |
| feature_id | Yes | Infrastructure feature ID (required) | |
| work_order_id | No | Linked work order ID | |
| invoice_number | No | Invoice number | |
| purchase_order_id | No | Purchase order that paid this cost - resolve via list_purchase_orders. Counts against the order's remaining balance unless the cost belongs to a work order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does usefully disclose two traits: the write-scope requirement and the server-side derivation of work_order_number. It stops short of covering mutation semantics such as idempotency, permission prerequisites beyond scope, or side effects on purchase-order balances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each front-loaded and each earning its place: purpose, a field-level warning, and an auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation create tool with eight parameters and no annotations or output schema, the description covers scope and the derived field but omits routing guidance against sibling create_asset_cost and broader side-effect behavior. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description adds genuine value by warning that work_order_number is server-derived and must not be set – a caveat absent from the schema. It does not elaborate on the interplay between work_order_id and purchase_order_id, which the schema itself handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Record a cost against an infrastructure feature'), which is clear on its own. It does not, however, distinguish itself from the closely-named sibling create_asset_cost, leaving the agent to infer that this tool is the infrastructure-feature-specific variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use vs when-not guidance and no mention of the alternative create_asset_cost sibling, which is the most likely point of confusion given the near-identical naming. The only directive is about which field not to set, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_asset_documentAInspect
Attach document metadata to an infrastructure feature. Upload the file bytes first via create_upload_url, then pass the returned file_path here. Requires infrastructure_asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name (required) | |
| category | No | Document category | |
| file_path | Yes | Storage path from create_upload_url (required) | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| feature_id | Yes | Infrastructure feature ID (required) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required scope (infrastructure_asset_documents:write) and clarifies that only metadata is attached, not file bytes. It says nothing about idempotency, duplicate file_path handling, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero padding, and the core action is front-loaded before the workflow prerequisite and the permission note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the critical prerequisite chain and the auth scope. It would be stronger with a note on failure modes (e.g. invalid file_path) or confirmation of what is returned, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description only adds provenance for file_path (it comes from create_upload_url), which is marginal added value beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Attach document metadata to an infrastructure feature'), which cleanly separates it from create_asset_document and create_project_document by naming the parent entity type. It doesn't explicitly name those siblings, but the scoping word 'infrastructure' is enough for an agent to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete ordering rule: upload bytes first via create_upload_url, then pass the returned file_path here. That is real when-to-use guidance and names the prerequisite tool. It stops short of saying when NOT to use it (e.g. for asset or project documents).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_asset_inspectionAInspect
Record an inspection against an infrastructure feature. Requires infrastructure_asset_inspections:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-form notes | |
| method | No | Inspection method (e.g. CCTV, visual) | |
| defects | No | Defect observations (JSON) | |
| feature_id | Yes | Infrastructure asset (feature) ID (required) | |
| attachments | No | Attachment URLs/paths | |
| inspector_id | No | Inspector user ID | |
| condition_score | No | Condition score (0-100) | |
| inspection_date | Yes | Inspection date (YYYY-MM-DD, required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required authorization scope (infrastructure_asset_inspections:write), which is real behavioral context. But it says nothing about mutation semantics, uniqueness constraints, whether the feature must already exist, or what is returned on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the core purpose comes first and the scope requirement follows. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with a nested JSON object and no output schema, the description covers purpose and authorization but omits any note on required inputs or how the nested defects structure is used. It is minimally adequate but leaves meaningful gaps an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, establishing the baseline of 3. The description adds no additional meaning about required fields (feature_id, inspection_date) or the free-form defects JSON object, so it does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Record an inspection against an infrastructure feature'), which is clear and distinct from generic create_asset tools. However, it does not differentiate itself from close siblings like create_asset_condition_assessment or the inspection-related update/list tools, leaving the agent to infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'record' and the stated write scope, which is a genuine prerequisite. There is no explicit guidance on when to use this versus update_infrastructure_asset_inspection or create_asset_condition_assessment, nor any note about required prior state (e.g., an existing feature).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_asset_partAInspect
Associate a part with an infrastructure feature. The (feature_id, part_id) pair must be unique - a duplicate returns 409. Requires infrastructure_asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| part_id | Yes | Part ID (required; resolve via list_parts) | |
| quantity | No | Design/installed quantity (default 1) | |
| feature_id | Yes | Infrastructure feature ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the uniqueness constraint, the exact failure mode (duplicate returns 409), and the required scope (infrastructure_asset_parts:write). It does not describe whether the association can later be updated or what a successful response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the action stated first and the constraint and scope following. Front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small 3-param create tool with no annotations and no output schema, the description covers the action, the uniqueness constraint, the error code, and the required scope — enough for an agent to invoke it correctly. Only the return behavior and quantity semantics are unaddressed, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so feature_id and part_id are already fully documented in the schema; the description reinforces their pairing but adds no syntax. quantity (default 1) is not addressed in the description, though the schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Associate a part with an infrastructure feature'), which is clearly distinguishable from the sibling create_asset_part by the infrastructure-feature target. It stops short of naming the sibling it differs from, so an agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the constraint (unique feature_id/part_id pair) but gives no guidance on when to use this versus create_asset_part or create_infrastructure_asset, and no prerequisites beyond scope. No when/when-not framing is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_feature_classAInspect
Create a tenant-defined infrastructure feature class. Builtin classes are managed by AssetLab and cannot be created via API (is_builtin is always forced to false). Requires infrastructure_feature_classes:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Asset class code (lowercase snake_case, 1-50 chars) | |
| icon | No | Icon name | |
| label | Yes | Display name (required) | |
| category | Yes | Category - municipal service family (transportation, water, wastewater, stormwater, structures, electrical, telecom, gas, roadside, other) | |
| color_hex | No | Display colour as hex, e.g. #3B82F6 | |
| sort_order | No | Sort order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two non-obvious behaviors: is_builtin is always forced to false regardless of input, and a specific write scope is required. It still omits side effects like whether the code must be unique tenant-wide or what is returned, so it is good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler: what it creates, the prohibition, the auth requirement, in that order. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the key traps (builtin prohibition, forced flag, required scope). What is missing is any note on return payload or uniqueness constraints on code, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with per-field descriptions and a category enum, so the schema already documents all six parameters. The description adds no format, default, or inter-parameter semantics beyond what the schema states, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (create an infrastructure feature class) and qualifies it as tenant-defined, which implicitly contrasts with the builtin classes it cannot touch. It does not explicitly name a sibling tool, but the name-space is unambiguous enough that an agent won't confuse it with update_/delete_/list_ variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-not condition ('Builtin classes are managed by AssetLab and cannot be created via API') and a prerequisite (infrastructure_feature_classes:write scope). No explicit routing to alternative tools, but the exclusion plus scope requirement is more than most siblings offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_lifecycle_eventAInspect
Create a lifecycle strategy event. Events attach to a SCOPE (feature_class code, material, optional diameter band) - never to individual features; every feature resolves the most specific matching scope, like replacement rates. Replacement is NOT an event (it is priced by the rates and scheduled by the renewal forecast) - model the interventions BEFORE replacement: crack sealing, relining, resurfacing. List existing events first to reuse a scope. Requires infrastructure_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name (required, e.g. "Crack Sealing") | |
| material | No | Material the scope applies to, exactly as features carry it (e.g. "PVC") | |
| unit_cost | No | Cost per unit (current dollars, never indexed) | |
| fixed_cost | No | Fixed cost (current dollars) | |
| sort_order | No | Evaluation order within the strategy | |
| cost_method | No | Costing: per unit (uses the feature's measured quantity and unit) or a fixed amount (default per_unit) | |
| cost_source | No | Provenance of the cost ("Engineering 2026", a tender reference) | |
| event_class | Yes | Event type - preventative maintenance or rehabilitation | |
| feature_class | No | Feature class code the strategy scope applies to (omit for a material-wide scope; at least one of feature_class/material is required) | |
| impact_method | Yes | Effect: add years of life, or reset condition to a value | |
| diameter_min_mm | No | Lower bound of a diameter band (requires material); bands ladder like rates | |
| impact_reset_to | No | Condition after the event (required when impact_method is reset_condition) | |
| work_generation | No | What a due application of this event becomes when created from the interventions list: none (plan only, default), work_order, or project. Nothing is created on a schedule. | |
| impact_add_years | No | Years added (required when impact_method is add_years) | |
| max_applications | No | How many times the event may fire over a feature's life (default 1) | |
| min_years_between | No | Minimum years between firings of a recurring event (default 1) | |
| trigger_condition_max | Yes | Upper bound of the trigger window - the event fires when projected condition falls to this | |
| trigger_condition_min | No | Lower bound of the trigger window (default 0); a feature already below it has missed the event | |
| work_generation_priority | No | Priority for generated work orders. Ignored unless work_generation is work_order. | |
| work_generation_category_id | No | Work category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and still discloses meaningful traits: the write-scope auth requirement and the resolution behavior (each feature picks the most specific matching scope). It does not describe idempotency, error behavior, or side effects of creation, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the dense single block earns its length for a 20-parameter tool. A few clauses (e.g., the parenthetical on replacement pricing/scheduling) drift toward domain lore rather than call-time guidance, keeping it just under fully tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-param tool with no output schema, it supplies the essential conceptual frame (scope resolution), a key prerequisite (list first), auth requirement, and what not to model. It omits operational return/side-effect detail, but the rich schema covers per-field semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself already explains the scope composition ('omit for a material-wide scope; at least one of feature_class/material is required') and how bands ladder. The description's restatement of the scope model (feature_class, material, optional diameter band) largely mirrors the schema, so it stays at the documented baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ('Create a lifecycle strategy event') and immediately frames the domain model: events attach to a SCOPE, never to individual features. This implicitly distinguishes it from asset-level lifecycle-event siblings by contrasting scope-based vs feature-based attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real routing guidance: model pre-replacement interventions (crack sealing, relining, resurfacing) and, critically, states that replacement is NOT an event. It also advises listing existing events first to reuse a scope. No explicit sibling tool is named, so it stops short of a full when/when-not/alternative mapping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_los_targetAInspect
Set the technical Level of Service target for one infrastructure feature class and metric. One base target per feature class and metric, set once for the organization; a duplicate returns 409, so update the existing row instead. Each network of that class is held to a version adjusted by the network's criticality (unrated counts as medium): a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical network, 58 at a Low one). Derived targets never leave the metric's scale. All three metrics run 0-100: asset_condition_avg is higher-is-better and uses the fixed condition bands; fci and asset_past_useful_life_pct are percentages, lower-is-better. Average risk is not available for infrastructure. Not money. Requires los_targets:write scope, and the organization's plan must include both Level of Service and Infrastructure. Resolve feature_class first via list_infrastructure_feature_classes.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Whether the target is scored (default true) | |
| metric | Yes | Metric the target tracks (required) | |
| base_target | Yes | Base target, 0-100 (required) | |
| feature_class | Yes | Feature class code (required) - must exist; resolve first via list_infrastructure_feature_classes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly. It discloses duplicate behavior (409), permission and plan requirements, derivation math for criticality-adjusted targets, scale constraints ('Derived targets never leave the metric's scale'), metric semantics including what is unavailable ('Average risk is not available for infrastructure'), and unit clarification ('Not money').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and tightly organized around duplicate handling, derivation rules, metric semantics, and prerequisites. It is somewhat long and includes an illustrative computation example and minor redundancy ('All three metrics run 0-100' partly repeats schema bounds), but most content is useful for this complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a 4-parameter mutation tool whose behavior includes derived values and permissions, the description is complete. It covers error handling, prerequisites, metric semantics, derivation behavior, scale limits, and sibling routing, leaving no critical gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful semantics beyond the schema: metric direction (higher-is-better vs. lower-is-better), metric scale and types, and the need for feature_class to exist and be resolved first. It does not elaborate on the optional 'active' parameter, leaving that to the schema, so it falls short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource with clear scope: 'Set the technical Level of Service target for one infrastructure feature class and metric.' It distinguishes this creation tool from update by explaining the duplicate 409 case and directing the agent to update the existing row instead. An agent can identify the tool's purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use context: one base target per feature class and metric, set once for the organization. It names the alternative path for duplicates ('update the existing row instead') and lists prerequisites (los_targets:write scope, Level of Service and Infrastructure plan features) and ordering (resolve feature_class first via list_infrastructure_feature_classes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_networkBInspect
Create an infrastructure network - a named grouping of features bound to one feature class. Requires infrastructure_networks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Network name (required) | |
| metadata | No | Free-form JSON metadata | |
| criticality | No | How strictly the network is held to its feature class's Level of Service targets: critical, high, medium or low. Unset is treated as medium; send null on update to clear it | |
| description | No | Description | |
| color_scheme | No | Display color scheme | |
| feature_class | Yes | Asset class code (must exist; resolve via list_infrastructure_feature_classes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden. It usefully discloses the required auth scope ('infrastructure_networks:write scope'), which is genuine value beyond the schema. However, it omits failure/validation behavior (e.g., feature_class must pre-exist) and says nothing about what is returned upon creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the core action front-loaded and the permission requirement trailing. No filler or redundancy; nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and full schema coverage of params, the description gives purpose, conceptual definition, and auth requirement, which is largely sufficient. It could optionally mention the required pre-existing feature class or the created object's response, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail, including the criticality enum semantics and the feature_class pattern. The description adds only the general hint that a single feature class is bound, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create an infrastructure network') and adds a conceptual definition ('a named grouping of features bound to one feature class') that distinguishes it from create_infrastructure_feature_class and create_infrastructure_zone. It does not explicitly name or contrast with siblings, but the semantic scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no alternatives, and no exclusions. It only states a permission prerequisite (write scope), which is a precondition rather than usage direction. An agent must infer the use case from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infrastructure_zoneAInspect
Create an operational hydraulic boundary (pressure zone, DMA, sewershed, etc.). boundary is a GeoJSON Polygon, or a MultiPolygon when the area comes in separate pieces. (network_id, name) must be unique. Requires infrastructure_zones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Optional short code (e.g. "PZ-04") | |
| kind | Yes | Zone kind (required) | |
| name | Yes | Zone name (required) | |
| notes | No | Free-form notes | |
| boundary | Yes | GeoJSON Polygon or MultiPolygon (EPSG:4326). Each ring is closed; coordinates are [lon, lat]. Use MultiPolygon for a boundary in separate pieces - an area split by a rail corridor, or one containing an island. | |
| network_id | Yes | Infrastructure network ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does disclose two behaviors beyond the schema: the (network_id, name) uniqueness constraint and the required infrastructure_zones:write scope. It does not cover error behavior or idempotency, but the auth and uniqueness disclosures are meaningful context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by the boundary format and the two constraints. It is efficient, though it partially restates boundary detail that already lives in the schema, a minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-required-param mutation tool with no annotations and no output schema, the description covers scope, uniqueness, and the key input shape, which is most of what an agent needs. It stops short of describing failure modes or return payload, leaving a small gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 every parameter, making 3 the baseline. The description adds only the boundary-shape nuance (Polygon vs. MultiPolygon for separate pieces), which is also present in the boundary property's schema description, so it adds little beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create an operational hydraulic boundary') and immediately enumerates the concrete kinds (pressure zone, DMA, sewershed), which lets an agent distinguish it from nearby siblings like create_infrastructure_network and create_service_area. The resource is named precisely enough to route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the hydraulic-boundary framing and the (network_id, name) uniqueness rule, but never states when to choose this tool over a related one (e.g., create_infrastructure_network for the network itself, or create_service_area). There are no explicit exclusions or alternatives, so the agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoiceBInspect
Create a new invoice. Requires invoices:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes | |
| amount | Yes | Invoice amount (required) | |
| status | No | Invoice status | |
| due_date | No | Due date (ISO 8601) | |
| paid_date | No | Paid date (ISO 8601) | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| tax_amount | No | Tax amount | |
| category_id | No | Cost category ID | |
| description | No | Description | |
| invoice_date | Yes | Invoice date (ISO 8601, required) | |
| work_order_id | No | Work order ID | |
| invoice_number | Yes | Invoice number (required) | |
| purchase_order_id | No | Purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required auth scope (invoices:write), which is real behavioral context, but says nothing about side effects, duplicate invoice_number handling, validation of amount, or what a successful creation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the action front-loaded and the auth constraint appended. Appropriately sized for the content it contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter create tool with no annotations and no output schema, the description does the minimum. The rich schema covers inputs, but the absence of any statement about return value or post-creation behavior leaves a gap an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 14 well-described properties, so the schema already documents each field (amount, dates, IDs, status enum). The description adds no parameter meaning beyond that, which is the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Create a new invoice'), which is immediately parseable. It does not differentiate from the many sibling create tools (create_expense, create_purchase_order, create_contract), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as create_expense or bulk_create, and no prerequisites beyond the scope note. The agent gets no routing help in a very crowded create_* namespace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_locationAInspect
Create a new location within a building. Requires locations:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area (sq ft or sq m) | |
| name | Yes | Location name (required) | |
| type | No | Location type label | |
| floor | No | Floor identifier | |
| building_id | Yes | Building ID (required) | |
| location_type_id | No | Location type ID (from location_types) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required permission scope, which is real behavioral context, but says nothing about side effects, whether the location must be unique, what happens on duplicate names, or what the response returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, purpose front-loaded ahead of the permission requirement. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations and no output schema, the description covers purpose and auth but omits meaningful gaps: that building_id must reference an existing building, how location_type_id relates to location_types, and whether the call is idempotent. The rich schema fills much of the gap, keeping this at a minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with per-parameter descriptions (name, building_id, floor, area, type, location_type_id) and constraints, so the schema does the heavy lifting. The description adds no parameter-level meaning beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (location) with a scoping constraint ('within a building'), which distinguishes it from the broader create_building or create_site siblings. It does not explicitly differentiate from close neighbors like create_project_location or create_location_type, but the purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ('Requires locations:write scope') but no when-to-use or when-not-to-use guidance relative to siblings such as create_project_location, create_location_type, or update_location. Usage is only implied by the name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_location_typeBInspect
Create a new location type. Requires location_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Location type name (required) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely useful behavioral fact: the required 'location_types:write' scope. However, it omits name-uniqueness behavior, duplicate handling, validation failures, and what is returned on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the action front-loaded and the permission requirement second. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-field creation tool with a fully documented schema and no output schema, the description is minimally adequate. It covers the action and the auth scope, but an agent still lacks information about uniqueness constraints and failure modes of this mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (name required, description optional, with length bounds), so the schema already documents the inputs. The description adds nothing beyond this, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new location type'), which cleanly distinguishes it from create_location and the other create_* siblings. It is clear but adds no explicit differentiation or scoping detail beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, prerequisites, or alternatives. It does not mention, for example, that a location type must exist before assigning it via create_location, nor how it relates to update_location_type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_los_consequenceAInspect
Record what a missed technical Level of Service target means, in the organization's own words. Advisory only: the statement is shown on the Status screen when a matching target is breached, and no notification is sent to notify_roles or to anyone else. When several match a breach the most specific scope wins (a specific system or feature class over a criticality tier over global). severity is a floor; the severity shown scales with the size of the gap and the facility's criticality. Requires los_consequences:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Whether the consequence is shown (default true) | |
| metric | No | Limit to one metric; omit or null to match any metric | |
| severity | Yes | Minimum severity shown (required) | |
| scope_ref | No | What the scope points at: null for global; critical, high, medium or low for criticality_tier; a system ID (resolve first via list_systems) for system; a feature class code (resolve first via list_infrastructure_feature_classes) for feature_class. Required unless scope_type is global | |
| statement | Yes | The consequence, as a statement (required) | |
| scope_type | Yes | What the consequence applies to (required) | |
| notify_roles | No | Roles named as owning the consequence. Recorded only; nothing is sent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it declares the operation advisory-only, states that no notification is sent to notify_roles or anyone else, explains the scope-precedence resolution rule, explains that severity is a floor that scales with gap size and criticality, and names the required write scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences that are front-loaded with purpose and clarify behavior early. Every sentence contributes (advisory nature, scope precedence, severity semantics, auth requirement), though the density is close to the upper limit for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter create tool with no annotations and no output schema, the description covers behavior, scoping resolution, severity semantics, and the required auth scope. The only gap is it omits what the create call returns (e.g., a new consequence identifier), which would matter since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value beyond the schema: notify_roles are 'recorded only, nothing is sent', severity is a minimum that scales upward, and scope precedence determines which statement wins. These refinements go past the field descriptions themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Record') and resource (a Level of Service consequence statement, in the organization's own words), and clarifies its role via the Status-screen context. It is clearly distinct from the los_target and los_measure siblings by function, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when this fires ('when a matching target is breached' and defines scope precedence) but gives no explicit when-to-use or when-not guidance versus siblings like create_los_measure or update_los_consequence. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_los_measureAInspect
Create a new LoS measure within a service area. Requires los_measures:write scope. Resolve service_area_id first via list_service_areas.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Measure name (required, unique per service area) | |
| type | Yes | Measure type (required) | |
| unit | No | Unit of measurement (e.g., "%", "hours", "count") | |
| weight | No | Weight for composite score calculation (default: 1.0) | |
| category | Yes | Measure category (required) | |
| is_active | No | Whether the measure is active (default: true) | |
| sort_order | No | Sort order for display | |
| data_source | Yes | Data source type (required). Use "manual" if values will be entered by hand. | |
| description | No | Description | |
| stretch_goal | No | Stretch goal value | |
| target_value | No | Target value | |
| service_area_id | Yes | Service area ID (required) | |
| trend_direction | No | Which direction is better | |
| data_source_config | No | Data source configuration (JSONB). E.g., {"threshold": 3} for pct_above/below, {"days_back": 90} for WO metrics. | |
| minimum_acceptable | No | Minimum acceptable value | |
| community_statement | No | Community-facing statement (for community type measures) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required los_measures:write scope, which the schema does not. However it says nothing about reversibility, whether creation is idempotent, uniqueness enforcement, or side effects of the nested data_source_config.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by the authorization requirement and the prerequisite. No filler, everything earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter creation tool with no output schema and no annotations, the description covers purpose, auth, and the key prerequisite dependency. With full schema coverage, most remaining detail lives in the schema; only behavioral side effects are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well documented, and the baseline is 3. The description adds only a hint about service_area_id sourcing; it doesn't clarify the enums, the JSONB data_source_config, or the relationship between target_value, stretch_goal, and minimum_acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new LoS measure") and scopes it ("within a service area"). It implicitly separates this from siblings like create_los_measurement and create_infrastructure_los_target by naming the service-area container, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite workflow ("Resolve service_area_id first via list_service_areas") and states the required scope, which tells the agent how to prepare the call. It stops short of naming when-not-to-use or alternative creation endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_los_measurementAInspect
Record a new LoS measurement value. Requires los_measurements:write scope. Resolve los_measure_id first via list_los_measures.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes or context for this measurement | |
| is_auto | No | Whether this is an auto-calculated value (default: false) | |
| period_end | Yes | Period end date (ISO 8601, required, e.g., "2026-03-31") | |
| period_type | Yes | Period type (required) | |
| actual_value | Yes | Measured value (required) | |
| period_start | Yes | Period start date (ISO 8601, required, e.g., "2026-01-01") | |
| los_measure_id | Yes | LoS measure ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the write-scope authorization requirement and the dependency-ordering constraint, but says nothing about idempotency, duplicate handling, or failure behavior for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero waste; the core purpose is front-loaded and the prerequisite and auth requirement follow in priority order. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with a fully documented schema but no output schema and no annotations, the description covers the key gaps an agent needs before invoking: the write scope and the ID-resolution precondition. It could go slightly further by addressing return/error behavior, but is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, establishing the baseline of 3. The description adds only the note that los_measure_id must come from list_los_measures, which is marginally useful but adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Record a new LoS measurement value'), which clearly separates it from read/update siblings like get_los_measurement and update_los_measurement. However, it does not distinguish itself from create_los_measure, which is a plausible confusion point in this dense sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an actionable prerequisite ('Resolve los_measure_id first via list_los_measures') that names the alternative tool to call first, plus the required scope. It stops short of stating when-not to use it or what happens on invalid/failure cases, but the sequencing guidance is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_los_proposed_targetAInspect
Record the proposed level of service for a LoS measure in one future year (O. Reg. 588/17 s. 6(1)). One row per measure and year; a duplicate returns 409, so update the existing row instead. Use target_statement for a community measure and target_value for a technical one. Requires los_proposed_targets:write scope. Resolve los_measure_id first via list_los_measures.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Target year, 2000-2200 (required) | |
| target_value | No | Proposed value for a technical measure, in the measure's own unit | |
| los_measure_id | Yes | LoS measure ID (required) | |
| target_statement | No | Proposed level of service for a community measure, as a statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the one-row-per-measure-and-year uniqueness constraint, the 409 duplicate error, and the required los_proposed_targets:write scope. It stops short of describing the success response (no output schema exists to compensate), so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with zero waste; purpose and scope are front-loaded, followed by constraints, field selection, and prerequisites in order of need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no annotations and no output schema, the definition supplies everything needed to call it correctly: purpose, scope, prerequisite resolution, field-selection rule, uniqueness constraint, and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both target fields are already documented as community vs technical. The description's pairing rule largely restates the schema text, adding only modest framing, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Record) and resource (proposed level of service for a LoS measure) scoped to a single future year, with a citation (O. Reg. 588/17 s. 6(1)). It clearly distinguishes itself from siblings such as create_los_measure, create_los_measurement, and create_system_los_target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use target_statement for community measures vs target_value for technical ones, update the existing row on a 409 duplicate, and resolve los_measure_id via list_los_measures first. When-to-use, when-not-to-use, and prerequisites are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_manufacturerBInspect
Create a new manufacturer. Requires manufacturers:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Manufacturer name (required) | |
| notes | No | Notes | |
| website | No | Website URL | |
| contact_name | No | Primary contact name | |
| contact_email | No | Contact email address | |
| contact_phone | No | Contact phone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It usefully discloses the required auth scope ('manufacturers:write'), which is genuine behavioral context, but omits other mutation traits such as duplicate-name handling, side effects, and whether the created entity is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences: the operation first, then the prerequisite. Every clause earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the definition is minimally adequate: the operation and auth scope are covered and the schema fully documents inputs. It stops short of describing return behavior or failure modes an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters (name required, plus notes, website, contact fields) are documented in the schema, so the baseline is 3. The description adds no parameter-level meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new manufacturer'), so an agent immediately knows the operation. However, it offers no differentiation from the many sibling create_* tools (create_vendor, create_part), relying entirely on the resource noun in the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no reference to alternatives such as create_vendor or bulk_create. The only conditional content is the scope requirement, which is a prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_partCInspect
Create a new part/inventory item. Requires parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | Unit cost | |
| name | Yes | Part name (required) | |
| site_id | No | Site ID | |
| category | No | Category label | |
| quantity | No | Current stock quantity | |
| supplier | No | DEPRECATED - legacy free-text supplier name. Use supplier_id instead. | |
| building_id | No | Building ID | |
| location_id | No | Location ID | |
| part_number | No | Part number / SKU | |
| supplier_id | No | Vendor ID (resolve via list_vendors) | |
| desired_quantity | No | Target / reorder quantity | |
| specific_location | No | Storage location description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the required scope, which is genuinely useful, but says nothing about write side effects, duplicate part_number handling, the deprecated supplier field conflict with supplier_id, or whether the created entity's ID is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by the permission requirement. No waste, though it is terse to the point of leaving gaps rather than being trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter creation tool with no output schema and no annotations, the description is thin: it omits return-value expectations, duplicate handling, and any linkage guidance. The rich schema partially compensates, but the definition is only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 12 parameters is already documented in the schema (including the DEPRECATED flag on supplier and the hint to resolve supplier_id via list_vendors). 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.
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 part/inventory item"), which is enough for an agent to recognize the operation. However, it does nothing to distinguish itself from close siblings like create_asset_part, create_part_category, or bulk_create, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires parts:write scope" is an authorization prerequisite, not usage guidance. There is no when-to-use, when-not-to-use, or alternative routing (e.g., bulk_create for multiple parts, create_asset_part for linking).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_part_categoryBInspect
Create a new part category. Requires part_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Part category name (required) | |
| module | No | Workspace the category is offered in: facilities, infrastructure, or shared (both). Defaults to shared. | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully surfaces the required auth scope (part_categories:write), which is real behavioral context beyond the schema. However, it says nothing about duplicate-name handling, idempotency, side effects on existing parts, or what is returned, so the mutation's behavior is only partially characterized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the action is front-loaded ahead of the permission note. It is tight and well-ordered, though it leans minimal rather than rich.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-param create with full schema coverage and no output schema, the description covers the essentials plus the required scope. It is still missing the return value (presumably the created category and its ID) and duplicate-handling behavior, which an agent would need to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – the 'name', 'module' (with enum values and shared default), and 'description' params are fully documented in the schema, including the default. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new part category'), which is clearly distinguishable from siblings such as create_part, update_part_category, and delete_part_category. It does not explicitly contrast itself with those siblings, but the resource noun makes the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_part or update_part_category, nor any prerequisites such as whether the category must be unique or whether it must exist before creating parts. The only usage-adjacent statement is the scope requirement, which is a permission gate rather than situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pm_scheduleAInspect
Create a new preventive maintenance schedule. Requires pm_schedules:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Checklist of tasks for this PM schedule | |
| title | Yes | PM schedule title (required) | |
| status | No | Schedule status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset ID | |
| floating | No | Floating schedule (due date based on completion) | |
| next_due | No | Next due date (ISO 8601) | |
| asset_ids | No | Assets this schedule covers - use instead of asset_id when there is more than one. | |
| frequency | No | Frequency | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| start_date | No | Start date (ISO 8601) | |
| system_ids | No | Systems this schedule covers. Systems have no singular field; this array is the only way to associate them. | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| meter_based | No | Whether this PM triggers at meter intervals (e.g. every 5000 km) | |
| location_ids | No | Locations this schedule covers - use instead of location_id when there is more than one. Sending location_id alone replaces this with that single id. | |
| schedule_type | No | Schedule type | |
| work_category | No | Work category label | |
| estimated_cost | No | Estimated cost | |
| lead_time_days | No | Lead time in days | |
| meter_interval | No | Meter interval - trigger every N units | |
| estimated_hours | No | Estimated hours | |
| auto_generate_wo | No | Auto-generate work orders | |
| form_template_id | No | Form template ID to attach to every work order this generates - resolve via list_form_templates. Use a PUBLISHED template: generation resolves the current published version of the form, so a draft attaches nothing until it is published. | |
| grace_period_days | No | Grace period in days | |
| safety_requirements | No | Safety requirements | |
| custom_interval_weeks | No | Custom interval in weeks (when frequency is CUSTOM) | |
| infrastructure_asset_ids | No | Infrastructure features this schedule covers - resolve via list_infrastructure_assets. One schedule over several features generates one work order per cycle covering all of them. Mutually exclusive with asset/location/system targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the auth scope requirement, which is genuinely useful, but says nothing about side effects: that auto_generate_wo causes recurring work order generation, that the schedule can later be deleted via delete_pm_schedule, or any validation behavior. Adequate but incomplete for a mutation tool with heavy downstream effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the prerequisite, then the most error-prone workflow. No filler. Slightly terse given the tool's complexity, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 29-parameter create tool with no annotations and no output schema, the description covers purpose, auth, and the one genuinely tricky workflow (hierarchical location resolution). The remaining parameter semantics are fully carried by the schema, so nothing critical is missing, though the absence of any statement about created side effects (e.g., work order generation) leaves a small hole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all 29 parameters, including the top-down location resolution hint repeated on site_id/building_id/location_id. The description's 'Provide all three IDs explicitly' adds emphasis but little new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new preventive maintenance schedule.' That is unambiguous and can be told apart from create_asset or create_work_order. However, it never differentiates itself from the near-identical siblings create_pm_template and create_compliance_pm_schedule, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a required scope (pm_schedules:write) and a concrete resolution procedure: call list_sites, then list_buildings filtered by site_id, then list_locations filtered by building_id. That is clear when-and-how guidance. It stops short of naming when to prefer create_pm_template or create_compliance_pm_schedule instead, so no true alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pm_templateAInspect
Create a new PM template. Templates are reusable PM definitions (not linked to a site/asset) that can seed new PM schedules. Requires pm_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Checklist of tasks baked into this template | |
| title | Yes | PM template title (required, unique per tenant) | |
| asset_ids | No | Default asset IDs to seed on derived schedules | |
| documents | No | Document references | |
| frequency | No | Suggested maintenance frequency | |
| resources | No | Resource references (parts, tools, materials, equipment) | |
| description | No | Description | |
| location_ids | No | Default location IDs to seed on derived schedules | |
| work_category | No | Work category label (free text) | |
| estimated_cost | No | Estimated cost | |
| estimated_hours | No | Estimated hours | |
| form_template_id | No | Form template ID to attach to every work order this generates - resolve via list_form_templates. Use a PUBLISHED template: generation resolves the current published version of the form, so a draft attaches nothing until it is published. | |
| work_category_id | No | Work category ID - resolve via list_work_categories | |
| safety_requirements | No | Safety requirements | |
| custom_interval_weeks | No | Custom interval in weeks (when frequency is CUSTOM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose an auth requirement ('Requires pm_templates:write scope') plus the key structural trait that templates are not bound to a site/asset. It stops short of describing success behavior or side effects of seeding schedules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the concept, then the auth requirement. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter creation tool with a fully documented schema and no output schema, the description covers purpose, semantic scope, and auth. The only mild gap is the absence of any note about the creation result or uniqueness constraints already stated in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters (including frequency enums, nested tasks/resources, and the form_template_id guidance about PUBLISHED versions) are already documented in the schema. The description adds no parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new PM template') and then defines what a template is: a reusable PM definition not linked to a site/asset that seeds new PM schedules. This cleanly distinguishes it from create_pm_schedule and other create_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the semantic role ('can seed new PM schedules', 'not linked to a site/asset'), which implies when to reach for this over create_pm_schedule. However, it never explicitly states the when-to-use condition or names the alternative tool, so routing still requires some inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectBInspect
Create a new project. Requires projects:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name (required) | |
| budget | No | Total budget | |
| status | Yes | Project status (required) | |
| end_date | No | End date (ISO 8601) | |
| image_url | No | Image URL | |
| start_date | Yes | Start date (ISO 8601, required) | |
| description | No | Description | |
| project_code | No | Project code | |
| project_type | No | Project type | |
| budget_status | No | Budget status | |
| current_phase | No | Current phase | |
| health_status | No | Health status | |
| progress_status | No | Progress status | |
| project_manager | No | Project manager name | |
| progress_percentage | No | Progress percentage (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden, but it does add the required projects:write scope, which is genuine auth context the agent would not otherwise have. It says nothing about side effects, idempotency, whether optional fields can be set later, or response shape, leaving substantial gaps for a 15-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no wasted words. It is efficient, though the extreme brevity verges on under-specification rather than true concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter write tool with no annotations and no output schema, the description is far too thin: it omits required vs optional field behavior, enum meanings, and any indication of what the caller gets back. The scope note is helpful but not sufficient to make the definition self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters including the 4 enums are already documented in the schema. The description adds no additional meaning about field semantics, defaults, or formats, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ("Create a new project") that an agent can immediately act on. It does not, however, differentiate this tool from the many other create_* siblings, or explain how it relates to sub-resource creation tools like create_project_phase or create_project_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many project-related siblings (create_project_asset, create_project_milestone, bulk_create, etc.), and no exclusions or prerequisites beyond the scope mention. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_assetBInspect
Link an asset to a project. Requires project_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset ID (required) | |
| project_id | Yes | Project ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required 'project_assets:write' scope, which is real auth context beyond the schema. But it says nothing about duplicate-link behavior, idempotency, or reversibility for what is a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the purpose comes first and the scope requirement second. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter link tool with no output schema, purpose plus scope is a reasonable minimum. But with no annotations and no mention of duplicate/idempotency behavior, a mutation tool leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds no additional meaning about the two UUIDs, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Link an asset to a project'), which is clear enough to distinguish it from the get_/list_/delete_ variants. However, it doesn't differentiate from close siblings like create_asset_placement or create_project_infrastructure_asset, so it stays short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternatives. The agent gets a purpose but not the condition under which this tool is chosen over create_asset_placement or other junction-creating siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_budget_itemBInspect
Create a new project budget item. Requires project_budget_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Budget category (required) | |
| project_id | Yes | Project ID (required) | |
| description | No | Description | |
| actual_amount | No | Actual amount | |
| planned_amount | No | Planned amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does add one genuinely useful behavioral fact, the required write scope, but says nothing about duplicate handling, default values for planned_amount/actual_amount, or whether creation is idempotent — meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the action stated first and the authorization requirement second. Every clause earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation with no annotations and no output schema, the description covers purpose and scope but omits creation semantics (duplicates, defaults, response contents). Adequate but with clear gaps an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the five parameters and the category enum are already fully documented in the schema. The description adds no additional meaning about parameter format, interactions, or defaults, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ("Create a new project budget item") that clearly identifies the entity being created. It does not, however, differentiate from adjacent siblings like create_budget, create_project_cost_snapshot, or create_expense, so an agent must infer the boundary from the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a precondition (project_budget_items:write scope) but gives no when-to-use guidance, no exclusions, and no pointer to alternatives such as create_budget or update_project_budget_item. Selection between the many create_* siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_buildingBInspect
Link a building to a project. Requires project_buildings:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (required) | |
| building_id | Yes | Building ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does disclose the required write scope, which is real added value. However, it says nothing about idempotency (what happens if the link already exists), whether it re-links/overwrites, or what errors to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the action is front-loaded ahead of the scope requirement. Efficient, though it could carry a bit more guidance without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter association creator with no output schema, the description covers purpose and authorization. It omits duplicate-link behavior, which matters for a junction-record creation tool where re-insertion is a common failure mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both UUID parameters are already fully documented in the schema. The description adds no format, constraint, or edge-case detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Link') and both resources (building, project), which distinguishes it from sibling creators like create_building or create_project_site. It does not explicitly name alternatives, but the association semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite (project_buildings:write scope) but gives no when-to-use guidance, no when-not-to-use, and no distinction from related linkers such as create_project_site or create_project_location.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_commentBInspect
Create a new comment on a project. Requires project_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Comment content (required) | |
| parent_id | No | Parent comment ID (for threading) | |
| project_id | Yes | Project ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the required auth scope (project_comments:write), which is genuinely useful behavioral context, but says nothing about threading constraints via parent_id, validation of project_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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, and the purpose is front-loaded ahead of the scope requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create tool with full schema coverage, the definition covers purpose and auth scope adequately. The only minor gap is the absence of any note about the created comment's return shape, which is understandable given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents content, parent_id, and project_id. The description adds no parameter meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Create a new comment on a project"), which clearly separates it from sibling comment creators like create_asset_comment and create_work_order_comment. It is clear but does not explicitly contrast itself with those siblings or with update_project_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention the sibling comment creators, the parent_id threading option, or any preconditions beyond the scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_cost_snapshotBInspect
Record a cost snapshot for a project at a point in time. Requires project_cost_snapshots:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (required) | |
| actual_cost | Yes | Actual cost to date (required) | |
| total_budget | Yes | Total budget amount (required) | |
| snapshot_date | Yes | Snapshot date (ISO 8601, required) | |
| forecasted_cost | No | Forecasted total cost | |
| percent_complete | No | Completion percentage (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required OAuth scope (project_cost_snapshots:write), which is real behavioral context beyond the schema, but it says nothing about what happens if a snapshot already exists for that date (upsert vs. duplicate), reversibility, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first, prerequisite second. Nothing is repeated from the title or schema and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose and authorization but omits the behavior an agent most needs: whether repeated snapshots for the same project/date are allowed, and what the call returns. Adequate but with clear gaps against its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters are documented inline, so the schema already does the heavy lifting. The description adds no additional meaning about formats, ranges, or the relationship between budget, actual, and forecasted cost.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Record a cost snapshot for a project') plus the temporal qualifier ('at a point in time'), which cleanly separates it from sibling writers like create_project_budget_item, create_expense, or create_project_update. It does not explicitly name a sibling it is distinguished from, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the required scope, which is a precondition rather than usage direction. There is no statement of when to record a snapshot versus updating project budget items or expenses, and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_documentBInspect
Create a project document record. Requires project_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name (required) | |
| file_path | Yes | Storage path from upload URL response (required) | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| folder_id | No | Folder ID | |
| project_id | Yes | Project ID (required) | |
| description | No | Description | |
| uploaded_by | Yes | Uploader user ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing beyond the scope requirement. It does not say whether the call is idempotent, what happens on duplicate names, what the response contains, or that a file must already exist in storage before this record can be created.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the constraint. Every sentence earns its place and there is no padding or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no annotations and no output schema, the description is thin but not misleading — the rich schema compensates on parameter detail. Still, an agent gets no behavioral or post-condition context, and the upload-then-create workflow prerequisite is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters (including required project_id, name, file_path, uploaded_by) are already documented in the schema with formats, limits, and required flags. The description adds no parameter-level meaning, which is acceptable at baseline 3 but adds zero marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Create a project document record'), which tells an agent exactly what the tool produces. It does not, however, distinguish it from near-neighbors like create_asset_document, create_contract_document, or create_infrastructure_asset_document, which are only separable by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies one useful precondition ('Requires project_documents:write scope'), which is more than nothing. But it gives no when-to-use guidance, no routing to alternatives, and critically omits that file_path must come from a prior create_upload_url call even though that detail exists in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_document_folder_templateBInspect
Create a project document folder template. Requires project_document_folder_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name (required) | |
| structure | No | Folder hierarchy as JSON array | |
| is_default | No | Whether this is the default template | |
| description | No | Template description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses the required write scope (project_document_folder_templates:write), but says nothing about failure modes, duplicate-name behavior, what happens if is_default is set for a second template, or what the response contains — significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the purpose is front-loaded and the prerequisite follows immediately. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter create tool with no output schema and no annotations, the definition is minimally adequate: params are covered by the schema and auth scope is stated. It omits behavioral detail such as the meaning/format of the nested 'structure' array and the implications of is_default, leaving the agent to infer them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (name, structure, is_default, description) are already documented in the schema. The description adds no additional meaning about parameter semantics or constraints, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a project document folder template'), which maps cleanly onto the tool name. It does not differentiate itself from siblings beyond the name, but among the many create_* tools the resource noun is precise enough to identify the target entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_project_document_folder_templates or update_project_document_folder_template, and no note on prerequisites or ordering (e.g., whether a project must exist first). The only contextual cue is the required scope, which is an auth fact rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_infrastructure_assetAInspect
Link a project to an infrastructure feature. The (project_id, feature_id) pair must be unique - a duplicate returns 409. Requires project_infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-form notes | |
| feature_id | Yes | Infrastructure feature ID (required) | |
| project_id | Yes | Project ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses the uniqueness invariant on the (project_id, feature_id) pair, the resulting 409 on duplicates, and the required project_infrastructure_assets:write scope. It stops short of describing success behavior or reversibility, but error and auth behavior are covered well for a link-creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the key constraint, then the auth requirement. Every sentence carries distinct information and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation create tool this covers the essentials an agent needs to call it correctly: purpose, uniqueness precondition, error code, and required scope. The only gap is the absence of any return-value hint, which matters more here since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a cross-parameter constraint the schema cannot express: the (project_id, feature_id) pair must be unique. That is genuine semantic value beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Link a project to an infrastructure feature,' which is unambiguous and actionable. It does not, however, differentiate itself from structurally similar siblings like create_project_asset or create_infrastructure_asset, so an agent must rely on the name alone to pick the right link tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the purpose statement; there is no explicit when-to-use, when-not-to-use, or named alternative among the many create_* siblings. The uniqueness/409 note hints at a precondition, but no guidance routes the agent between this tool and its near-relatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_locationBInspect
Link a location to a project. Requires project_locations:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (required) | |
| location_id | Yes | Location ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required project_locations:write scope, which is real context beyond the schema. It does not, however, state whether the call is idempotent, what happens if the link already exists, or what errors occur on invalid IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the permission requirement immediately after. No filler and nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter join with no output schema and no annotations, the description covers the core action and the auth scope. It leaves gaps around duplicate-link behavior and error conditions, which matter for a write operation an agent might retry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both project_id and location_id are already documented in the schema. The description adds nothing about their format or constraints, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: links a location to a project. This is clearly distinguishable from create_location, create_project, and list_project_locations. However, it does not explicitly differentiate from related sibling tools like create_project_site or address why this join is a separate call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description implies the tool is used to associate an existing location with an existing project, but it never says so, nor does it name any alternative for achieving a similar link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_milestoneAInspect
Create a new project milestone. Requires project_milestones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Milestone name (required) | |
| status | No | Milestone status | |
| due_date | Yes | Due date (ISO 8601, required) | |
| project_id | Yes | Project ID (required) | |
| description | No | Description | |
| completed_date | No | Completed date (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the required write scope, a genuine behavioral trait, but says nothing about what is created on success, return behavior, or idempotency/duplication semantics for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two lean sentences with zero filler; the action is front-loaded and the scope requirement follows. Nothing wasteful or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create mutation with complete schema coverage but no output schema and no annotations, the description covers purpose and auth but omits any mutation behavior (return value, effect). It is minimally adequate but leaves behavioral gaps that nothing else fills.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, and the description adds no parameter-level meaning (no format notes, no enum guidance). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new project milestone'), which is unambiguous and easily distinguished from sibling create_* tools by resource name. However, it offers no explicit differentiation from close siblings like update_project_milestone or list_project_milestones, relying on the name alone to convey the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies one real precondition ('Requires project_milestones:write scope'), which is useful context. But it gives no when-to-use guidance, no exclusions, and no routing toward alternatives, so the agent must infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_phaseBInspect
Create a new project phase. Requires project_phases:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Phase name (required) | |
| status | No | Phase status | |
| end_date | No | End date (ISO 8601) | |
| project_id | Yes | Project ID (required) | |
| start_date | No | Start date (ISO 8601) | |
| description | No | Description | |
| sequence_order | No | Order within the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does earn credit for disclosing an auth prerequisite — the project_phases:write scope — which is exactly the kind of context that saves a failed call. Beyond that, nothing is said about defaults for omitted fields (status, sequence_order, dates) or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the action first and the prerequisite second. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description covers the essentials an agent needs: what is created and the scope required. It is slightly thin on how this resource relates to neighboring project entities, but it is not misleading or incomplete on the core operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters including the enum for status and ISO 8601 hints for the dates are already documented in the schema. The description adds nothing parameter-level, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new project phase.' An agent can immediately tell it apart from get_project_phase, update_project_phase, and delete_project_phase, though the description doesn't differentiate it from adjacent creators like create_project_milestone or create_project_phase_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. The only guidance is a permission prerequisite ('Requires project_phases:write scope'), which tells the agent whether it may call the tool but not when it should, nor how it relates to sibling creators such as create_project_task or create_project_milestone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_phase_categoryCInspect
Create a new project phase category. Requires project_phase_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Phase name (required), e.g. "Planning", "Design" | |
| sort_order | No | Display order (lower = first) | |
| description | No | Description of the phase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only discloses the required auth scope. It does not say whether the category is global or project-scoped, whether names must be unique, whether re-creating a duplicate errors, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the prerequisite, with no filler. Slightly terse given the ambiguity with sibling create tools, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter create call with full schema coverage and no output schema, the core is covered. Gaps remain around scope (global taxonomy vs project-bound), duplicate-name behavior, and sibling disambiguation, which matter in a family of hundreds of create_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the three parameters documented in the schema (including examples and ranges), so the description is not obligated to repeat them. It adds no meaning beyond the schema, which is the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new project phase category'), which is unambiguous at the resource level. It does not, however, distinguish itself from the very similar sibling create_project_phase, nor clarify that this creates a taxonomy entry rather than a phase instance, so it stays short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only a permission prerequisite ('Requires project_phase_categories:write scope') is given; there is no statement of when to use this tool versus create_project_phase or the update/list variants. An agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_riskBInspect
Create a new project risk. Requires project_risks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Risk title (required) | |
| impact | No | Impact level | |
| status | No | Risk status (default: identified) | |
| category | No | Risk category | |
| due_date | No | Due date (ISO 8601) | |
| owner_id | No | Risk owner (Clerk user ID) | |
| created_by | No | Creator (Clerk user ID) | |
| project_id | Yes | Project ID (required) | |
| description | No | Risk description | |
| probability | No | Probability level | |
| mitigation_plan | No | Mitigation plan | |
| contingency_plan | No | Contingency plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does disclose one genuinely useful piece of behavioral context: the required 'project_risks:write' scope. It says nothing about what happens to duplicate risks, whether the created record is returned, or any side effects, so it is partial at best for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with zero filler; the core action is front-loaded and the scope requirement follows immediately. Nothing in the text is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations and no output schema, the description is thin: it covers the action and the auth scope but says nothing about return value or error behavior. The 100% schema coverage compensates for the parameter gap, keeping this merely adequate rather than broken.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters (including enums for impact, status, category, probability and the required project_id/title) are already documented in the schema. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new project risk'), which clearly distinguishes it from the update/delete/get/list project-risk siblings by name. However, the description never names or routes among those siblings, so the differentiation is implicit in the naming convention rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites beyond the scope note, and no mention of the alternative tools (update_project_risk, bulk_create, list_project_risks). The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_siteBInspect
Link a site to a project. Requires project_sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Site ID (required) | |
| project_id | Yes | Project ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required write scope, which is real auth context beyond the schema, but it says nothing about idempotency (behavior when the link already exists), reversibility, or side effects of the association — meaningful gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the purpose front-loaded and the scope condition second; every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter association tool with 100% schema coverage and no output schema, the purpose and required scope make it callable. The only real omission is link semantics on duplicates/already-linked state, which is minor for this tool shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both required UUID parameters (project_id, site_id) are fully documented in the schema. The description adds no further parameter detail, so the schema does the heavy lifting and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Link a site to a project" gives a specific verb (link) and the two resources involved, so an agent understands this creates a project-site association. It doesn't explicitly name the inverse sibling (delete_project_site) or list_project_sites/get_project_site, but the verb is distinctive enough to separate it from reads and unlinks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states an eligibility prerequisite (project_sites:write scope) but gives no when-to-use guidance, no exclusions, and no pointer to alternatives such as delete_project_site. The agent must infer that this is the creation counterpart to the unlink tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_systemBInspect
Link a system to a project. Requires project_systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| system_id | Yes | System ID (required) | |
| project_id | Yes | Project ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one genuinely useful operational fact: the project_systems:write scope requirement. It stops short of covering duplicate-link/idempotency behavior, whether the link is reversible, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first and prerequisite second, with zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter link tool with complete schema descriptions, purpose plus auth scope is close to sufficient. The gaps are idempotency/duplicate handling and the absence of an output schema, leaving the agent unsure what a successful link returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both project_id and system_id are self-describing with format: uuid, so the description adds nothing beyond the schema. The baseline of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and both resources ('Link a system to a project'), so an agent knows this creates a project-to-system association rather than creating a new system. It does not, however, distinguish itself from near-neighbors such as create_project_system_class or create_project_system_group, which use the same verb+resource phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_system, create_project_system_class, or create_project_system_group, and no stated preconditions (e.g., both entities must already exist). The only constraint offered is the scope requirement, which is an auth fact rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_system_classCInspect
Link a system class to a project. Requires project_system_classes:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (required) | |
| system_class_id | Yes | System class ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses only the required auth scope (project_system_classes:write). For a mutation/link operation it says nothing about idempotency, duplicate handling, reversibility, or what removal looks like (delete_project_system_class), which are the traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the constraint second; no wasted words. Slightly terse for a mutation tool but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter link tool this covers the basic action and a permission note, but with no annotations and no output schema it omits mutation semantics a caller would want. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so project_id and system_class_id are already fully documented as UUIDs in the schema. The description adds no syntax or format meaning beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (link) and both resources (system class, project), so the operation is unambiguous. It does not explicitly differentiate from nearby siblings like create_project_system or create_service_area_system_class, but the resource pair makes intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope note, and no mention of alternatives such as create_system_class or create_project_system. An agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_system_groupBInspect
Link a system group to a project. Requires project_system_groups:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (required) | |
| system_group_id | Yes | System group ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required OAuth scope, which is real behavioral context for a mutation, but it says nothing about duplicate/re-link behavior, error conditions, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resources, with the constraint stated second. Nothing is redundant, though the content is sparse rather than deliberately minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no annotations and no output schema, the definition covers the action and the scope requirement but omits any statement about what the link creates, whether re-linking is idempotent, or what the response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented as required UUIDs in the schema itself. The description adds no syntax, format, or relationship detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Link') and both resources ('a system group to a project'), which distinguishes it from siblings like create_system_group (creates the entity) and create_project_system (links a system). It is clear but never explicitly contrasts itself with those neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The required project_system_groups:write scope implies a permission prerequisite, but the description gives no guidance on when to use this link tool versus creating the group or the project system first, and names no alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_taskBInspect
Create a new project task. Requires project_tasks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task title (required) | |
| status | No | Task status | |
| due_date | No | Due date (ISO 8601) | |
| phase_id | No | Phase ID | |
| priority | No | Priority | |
| project_id | Yes | Project ID (required) | |
| start_date | No | Start date (ISO 8601) | |
| assigned_to | No | Assigned user | |
| description | No | Description | |
| estimated_cost | No | Estimated cost | |
| estimated_hours | No | Estimated hours |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it discloses one genuinely useful trait, the required project_tasks:write scope, which is not present in the schema. It says nothing about side effects, idempotency, validation failures, or what happens to dependent records on a new task.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, permission requirement second. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An 11-parameter mutation tool with no annotations and no output schema needs more than two sentences: defaults for optional fields (status, priority), the relationship to project/phase IDs, and any returned identifier are all left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters and their enums, giving a baseline of 3. The description adds no parameter meaning beyond that, but nothing is missing either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new project task'), which is unambiguous on its own. However, it does no work to distinguish this tool from the many sibling creation tools (create_project_phase, create_project_milestone, create_project_task_dependency) beyond what the name already encodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives — no mention of prerequisites (does the project or phase need to exist first?), no note on bulk creation (bulk_create exists) or on update_project_task for modification. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_task_dependencyBInspect
Create a dependency between two project tasks. Requires project_task_dependencies:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (the dependent task, required) | |
| dependency_type | No | Dependency type (default: finish_to_start) | |
| depends_on_task_id | Yes | Task ID that must complete first (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required write scope, but says nothing about duplicate-dependency handling, whether self-dependencies or cycles are rejected, or whether the operation is idempotent — meaningful gaps for a create/mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core purpose is front-loaded before the scope constraint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter create tool with no annotations and no output schema, the description covers purpose and authorization but omits conflict/error behavior and what the call returns. Adequate but with visible gaps given the absence of structured behavioral data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented including the enum values and the default for dependency_type, so the schema already does the heavy lifting. The description adds no semantic detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: create a dependency between two project tasks. It is unambiguous and distinct from create_project_task, but it does not reference sibling tools such as delete_project_task_dependency or the list/get variants to sharpen its boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, or on preconditions like both tasks needing to already exist in the same project. The only usage-like statement is the scope requirement, which is an auth constraint rather than a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_team_memberBInspect
Add a team member to a project. Requires project_team_members:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role on the project (required) | |
| user_id | Yes | Clerk user ID (required) | |
| end_date | No | End date (ISO 8601) | |
| is_active | No | Whether member is currently active | |
| project_id | Yes | Project ID (required) | |
| start_date | No | Start date (ISO 8601) | |
| responsibilities | No | Description of responsibilities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the required write scope, which is genuine and useful context. However, it says nothing about duplicate-member handling, side effects, or what the operation returns, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded and the requirement second. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with a fully documented schema, the description covers purpose and authorization, which is adequate. It lacks any note on return value or conflict behavior, and with no annotations or output schema those gaps are not covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (including role, user_id, project_id, start/end dates, is_active, responsibilities) are already documented in the schema. The description adds no extra meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Add a team member to a project'), making the operation unambiguous. It does not distinguish itself from close siblings like update_project_team_member or bulk_create, so it lands just below 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite (project_team_members:write scope) but no guidance on when to use this versus update_project_team_member, bulk_create, or list/get_project_team_member. An agent must infer the create-vs-update boundary from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_time_entryBInspect
Create a new project time entry. Requires project_time_entries:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (required) | |
| user_id | Yes | User ID (required) | |
| end_time | No | End time (ISO 8601 datetime) | |
| user_name | No | Display name of the user | |
| project_id | Yes | Project ID (required) | |
| start_time | Yes | Start time (ISO 8601 datetime, required) | |
| description | No | Description | |
| is_billable | No | Whether the time is billable | |
| duration_minutes | No | Duration worked, in minutes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the required OAuth scope (project_time_entries:write), which is genuine behavioral information not present in the schema. It stops short of describing side effects, whether end_time/duration_minutes are auto-derived, or what is returned after creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core purpose is front-loaded ahead of the scope requirement. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema and no annotations, the description covers purpose and authorization but leaves behavioral gaps: it does not say whether the created entry is returned, how missing end_time/duration is handled, or any validation rules. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every one of the 9 parameters documented in the schema itself, so the baseline of 3 applies. The description adds no parameter-level meaning (e.g., how duration_minutes relates to start_time/end_time, or when user_name is needed versus user_id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('Create a new project time entry'), so an agent knows exactly what object is produced. However, it offers no differentiation from the many sibling creators (bulk_create, create_project_task, create_expense) or from update_project_time_entry, leaving the agent to infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites beyond the scope mention, and no reference to alternatives such as bulk_create for multiple entries or update_project_time_entry for modifying an existing one. The agent must infer usage context entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_updateBInspect
Create a periodic project status update. Requires project_updates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional custom title | |
| content | Yes | Update content (required) | |
| author_id | Yes | Author Clerk user ID (required) | |
| timeframe | Yes | Update timeframe (required) | |
| project_id | Yes | Project ID (required) | |
| period_year | Yes | Year for this update period (required) | |
| period_value | Yes | Period value - 1-12 for monthly, 1-4 for quarterly, etc. (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it only partially does so: it discloses the required write scope, which is genuine and useful context an agent needs to avoid an auth failure. It says nothing about side effects, what is created/returned, validation failures (e.g. required content, period bounds), or reversibility, leaving substantial behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and the prerequisite trailing. No filler, no redundancy with the schema, and nothing that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers only the purpose and an auth scope. An agent still has no information about the result of the call or runtime behavior; the richness of the input schema partially compensates for parameter documentation but not for behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (project_id, author_id, timeframe, period_year, period_value, content, title) is already documented in the schema, including the enum and period-value formatting. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource ("Create a periodic project status update"), which lets an agent distinguish it from create_project_comment, create_project_task, or the larger create_project_* family. It does not, however, explicitly distinguish itself from the sibling update_project_update, which operates on the same 'project update' concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance offered is an authorization prerequisite ("Requires project_updates:write scope"), not a when-to-use statement. There is no mention of when to choose this over update_project_update or create_project_comment, and no exclusions or preconditions beyond the scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_purchase_orderBInspect
Create a new purchase order. Requires purchase_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes | |
| amount | Yes | PO amount (required) | |
| status | No | PO status | |
| po_number | Yes | PO number (required) | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| category_id | No | Cost category ID | |
| description | No | Description | |
| issued_date | No | Issued date (ISO 8601) | |
| expected_date | No | Expected delivery date (ISO 8601) | |
| work_order_id | No | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add genuinely useful context by naming the required auth scope (purchase_orders:write), but it omits other traits an agent needs: whether po_number must be unique, whether creation is idempotent, and what happens on duplicate or invalid input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. The verb+resource leads and the requirement follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no annotations and no output schema, the description is thin. It covers the safety-relevant scope requirement but says nothing about the returned object, uniqueness constraints, or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 11 parameters already carry descriptions in the schema. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new purchase order'), so the operation is unambiguous. However, it does not distinguish itself from closely related siblings like create_purchase_order_line or create_purchase_order_link, which an agent could easily confuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus update_purchase_order, bulk_create, or the line/link create variants. The only constraint given is the scope requirement, which is a prerequisite rather than usage selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_purchase_order_lineAInspect
Add a line item to a purchase order. Requires purchase_orders:write scope. The PO's amount becomes the sum of its lines. A line naming a part_id is counted in whole units, and its quantity_received is added to that part's stock. Required: purchase_order_id, description, quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| part_id | No | Part from inventory - resolve via list_parts | |
| quantity | Yes | Quantity ordered (required) | |
| unit_cost | No | Price per unit, in the organization currency | |
| description | Yes | What is being ordered (required) | |
| line_number | No | Position on the order | |
| purchase_order_id | Yes | Purchase order ID (required) - resolve via list_purchase_orders | |
| quantity_received | No | Quantity received so far, 0 to quantity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses auth scope, the aggregate side effect on the parent PO amount ('becomes the sum of its lines'), and the stock side effect ('quantity_received is added to that part's stock'). It omits return/response behavior and validation failure modes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action, followed by prerequisites and side effects. Every sentence earns its place and nothing is repetitive filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose, auth, aggregate and inventory side effects, and key parameter semantics well. It stops short of describing the created line's return shape or line_number auto-assignment behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantic detail beyond the schema: that part_id lines are counted in whole units and that quantity_received propagates to inventory stock. The required fields are restated (also in schema), so the added value is real but partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a line item to a purchase order'), which is unambiguous and lets an agent distinguish this from create_purchase_order or update_purchase_order_line. It does not explicitly name or contrast the adjacent sibling line tools, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the create semantics, and the description adds the prerequisite 'Requires purchase_orders:write scope'. However it gives no when-to-use vs when-not guidance, no mention of alternatives like bulk_create or update_purchase_order_line, and no ordering conditions relative to creating the parent PO.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_purchase_order_linkAInspect
Link a purchase order to a work order, PM schedule or project for reference. Requires purchase_orders:write scope. Required: purchase_order_id and exactly one of work_order_id, pm_schedule_id, project_id. A link does not add to committed cost; to charge the cost, set project_id or work_order_id on the purchase order itself.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project to link - resolve via list_projects | |
| work_order_id | No | Work order to link - resolve via list_work_orders | |
| pm_schedule_id | No | PM schedule to link - resolve via list_pm_schedules | |
| purchase_order_id | Yes | Purchase order ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the required scope, the exactly-one-target constraint, and the crucial semantic that "a link does not add to committed cost." It omits behaviors such as duplicate-link handling and what the call returns, so it's solid but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose first, then scope/constraints, then the disambiguating cost semantic. No filler and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a link-creation tool with no output schema and no annotations, the description covers prerequisites, cardinality, and the key cost subtlety, which is enough to invoke correctly. It does not describe the created link's return shape, so it stops just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds genuine meaning beyond the schema by declaring the "exactly one of work_order_id, pm_schedule_id, project_id" XOR constraint, which the schema (required = purchase_order_id only) does not encode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Link") and resource (purchase order to work order/PM schedule/project) with a clear scope ("for reference"). It implicitly distinguishes linking from cost allocation via the final sentence. It does not name a sibling tool explicitly, so it lands at a clear-but-no-explicit-sibling-differentiation 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a scope prerequisite ("purchase_orders:write"), the exact cardinality rule ("exactly one of"), and routes the agent away from this tool when cost should be charged ("to charge the cost, set project_id or work_order_id on the purchase order itself"). The alternative is described as behavior rather than by tool name, so it's strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_areaAInspect
Create a new service area for Level of Service tracking. Requires service_areas:write scope. After creating, link system classes via create_service_area_system_class and sites via create_service_area_site.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Icon name (e.g., "droplets" for water) | |
| name | Yes | Service area name (required, unique per tenant) | |
| color | No | Hex color code (e.g., "#3B82F6") | |
| is_active | No | Whether the service area is active (default: true) | |
| sort_order | No | Sort order for display | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required service_areas:write scope, but says nothing about duplicate-name behavior despite the schema claiming name uniqueness per tenant, nor about what the call returns. Scope disclosure is real added value but leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero waste. The core action is front-loaded, followed by the auth requirement and the workflow chain in the order an agent needs them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with only one required parameter, fully documented schema, and no output schema to explain, the description covers purpose, permission, and the mandatory follow-up chain. The only notable omission is the uniqueness/duplicate handling hinted at by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds no parameter syntax, defaults, or constraints beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), a specific resource (service area), and a domain purpose (Level of Service tracking). Against a very large create_* sibling set, the resource is unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the follow-up tools and the conditions that select them (linking system classes and sites after creation), which routes the agent well within the service-area workflow. It never states when NOT to use this tool or which alternative exists for pre-linked creation, 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.
create_service_area_siteAInspect
Link a site to a service area (optional scoping). Requires service_areas:write scope. Resolve IDs first: list_service_areas → service_area_id, list_sites → site_id.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Site ID (required) | |
| service_area_id | Yes | Service area ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the write scope requirement, but says nothing about idempotency, behavior on duplicate links, whether linking can be undone, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the core action front-loaded and the scope/prerequisite details following. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create with no annotations or output schema, the description covers action, permissions, and ID sourcing. The main omission is any statement about return value or conflict behavior, which a fully complete definition would mention.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful value beyond the schema by naming the exact tools that produce each required UUID. It does not explain format or validation rules, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Link') and resource pair ('a site to a service area'), which is precise for a junction-creation tool. The parenthetical '(optional scoping)' is slightly vague, and no sibling (e.g. create_service_area, create_site, delete_service_area_site) is named to differentiate the operation, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete prerequisites: the required service_areas:write scope and an explicit two-step ID resolution workflow (list_service_areas → service_area_id, list_sites → site_id). It does not, however, state when to prefer this over alternatives or what happens if the link already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_service_area_system_classAInspect
Link a system class to a service area. Requires service_areas:write scope. Resolve IDs first: list_service_areas → service_area_id, list_system_classes → system_class_id.
| Name | Required | Description | Default |
|---|---|---|---|
| service_area_id | Yes | Service area ID (required) | |
| system_class_id | Yes | System class ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but the description discloses the required write scope and the ID resolution workflow. It doesn't state whether the link is idempotent, what happens if already linked, or the response shape—gaps for a mutation tool with zero annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then scope and ID resolution. Zero waste; every clause is actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers the core operation and ID workflow but omits behavioral details like idempotency, error cases, and whether the link is reversible. A mutation tool should say more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are fully described in the schema. The description adds the source of IDs (list tools) but no format or additional semantics beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Link) + resource (system class to service area), clearly distinguishes from siblings like create_system_class or create_service_area. The association nature is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisites: resolve IDs first using list_service_areas and list_system_classes. Names alternatives and the exact order of operations, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_siteBInspect
Create a new site. Requires sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| name | Yes | Site name (required) | |
| address | No | Street address | |
| country | No | Country | |
| province | No | Province/state | |
| year_built | No | Year built | |
| description | No | Description | |
| postal_code | No | Postal/zip code | |
| contact_name | No | Primary contact name | |
| contact_email | No | Contact email | |
| contact_phone | No | Contact phone | |
| cost_per_sqft | No | Base cost per square foot | |
| lease_details | No | Free-text lease details / notes | |
| lease_end_date | No | Lease end date (YYYY-MM-DD) | |
| owner_landlord | No | Property owner or landlord | |
| ownership_type | No | Ownership type | |
| renewal_option | No | Lease renewal option details | |
| square_footage | No | Square footage | |
| lease_start_date | No | Lease start date (YYYY-MM-DD) | |
| insurance_provider | No | Insurance provider name | |
| insurance_policy_number | No | Insurance policy number | |
| additional_cost_per_sqft | No | Additional cost per square foot | |
| property_manager_company | No | Property management company name | |
| operational_cost_per_sqft | No | Operational cost per square foot | |
| property_manager_contact_name | No | Property management contact name | |
| property_manager_contact_email | No | Property management contact email | |
| property_manager_contact_phone | No | Property management contact phone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it does disclose one real trait: the required 'sites:write' scope, which the schema does not convey. However, it says nothing about side effects, name uniqueness, what happens to the 26 optional fields, or whether the created site is returned — significant gaps for a 27-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the action front-loaded ahead of the permission requirement, and no filler. It is efficient, though the extreme brevity for a 27-parameter tool edges toward under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a wide, mostly-optional create schema with no annotations and no output schema, the description is not complete enough: it omits any notion of the site's relationship to buildings/locations, any mention of required vs optional handling, and any return information the agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every property is individually documented with type, length and constraints, so the schema does the heavy lifting. The description adds no parameter-level meaning (e.g., semantics of ownership_type or cost_per_sqft), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('Create a new site'), so an agent immediately knows what operation it performs. It does not, however, distinguish 'site' from near-siblings such as create_building, create_location, or create_project_site, which a large sibling set makes genuinely ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like create_building or create_location, nor on prerequisites beyond the scope string. The auth scope is the only usage-relevant statement, and no exclusions or contexts are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_systemBInspect
Create a new system. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | System name (required) | |
| description | No | Description | |
| crv_multiplier | No | CRV multiplier | |
| system_group_id | No | System group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required auth scope and 'Create' signals mutation, but omits side effects, uniqueness constraints, error behavior, and response shape. One concrete behavioral disclosure earns a 3 despite gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose and followed by the authorization prerequisite. There is no filler, and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool whose parameters are fully described in the schema, the description gives purpose and auth scope. With no annotations or output schema, it still leaves out behavioral details an agent might need, such as uniqueness, return behavior, and the effect of optional fields, making it adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all four parameters are documented in the schema, including which is required. The description adds no additional semantic meaning beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new system.' This is enough to identify the operation. However, it does not distinguish this system resource from similarly named siblings such as create_system_class, create_system_group, or create_project_system, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states a prerequisite ('Requires systems:write scope'). It gives no guidance on when to create a system versus a system class, system group, or project system, and no exclusions or preconditions beyond authorization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_system_classBInspect
Create a new system class (top-level classification, e.g., "HVAC & Mechanical", "Material Handling"). Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | System class name (required) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose a genuine behavioral trait — the required systems:write scope — but says nothing about name uniqueness, idempotency, whether the class is global vs. site/project-scoped, or what is returned on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core action first, followed by clarifying examples and the permission requirement. Nothing is redundant and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple two-parameter create with full schema coverage, but it omits the scope of the created entity (global vs. project/service-area scoped), which is exactly what distinguishes it from create_project_system_class and create_service_area_system_class in this sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (name, description) are already documented in the schema with constraints like maxLength. The examples of class names add mild illustrative value but no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (system class) and defines the concept concretely with examples ("HVAC & Mechanical", "Material Handling"). Calling it a "top-level classification" implicitly separates it from create_system and create_system_group, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative tools are referenced, despite siblings like create_system, create_system_group, create_project_system_class, and create_service_area_system_class that an agent must choose among. The scope requirement is a prerequisite, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_system_groupAInspect
Create a new system group (category under a system class, e.g., "Heating", "Cooling"). Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | System group name (required) | |
| description | No | Description | |
| system_class_id | No | Parent system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required "systems:write scope", which is real authorization context, but says nothing about return values, side effects, or the optional nature of the system_class_id relationship.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no waste. The parenthetical example is helpful and brief, though it does slightly interrupt the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is minimal. It covers the core action and scope requirement but omits behavior around the optional parent class and any post-creation expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, description, and system_class_id are all documented in the schema. The description adds conceptual framing but no syntax or constraints beyond what the schema already provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Create") and resource ("system group") and disambiguates the concept as "a category under a system class" with concrete examples. This clearly separates it from siblings like create_system_class and create_system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "category under a system class" implies the tool fits within a hierarchy, but no explicit when-to-use, when-not-to-use, or named alternative is given. 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.
create_system_los_targetAInspect
Set the technical Level of Service target for one system and metric. One base target per system and metric, set once for the organization; a duplicate returns 409, so update the existing row instead. Each building is held to a version adjusted by its criticality: a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical facility, 58 at a Low one). Derived targets never leave the metric's scale. Direction is fixed by the metric and cannot be sent: asset_condition_avg is higher-is-better and uses the fixed 0-100 condition bands; fci, asset_past_useful_life_pct (both 0-100 percent) and risk_score_avg (0-25) are lower-is-better. Not money. Requires los_targets:write scope. Resolve system_id first via list_systems.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Whether the target is scored (default true) | |
| metric | Yes | Metric the target tracks (required) | |
| system_id | Yes | System ID (required) - resolve first via list_systems | |
| base_target | Yes | Base target on the metric's scale (required): fci, asset_condition_avg and asset_past_useful_life_pct run 0-100; risk_score_avg runs 0-25 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the 409 duplicate behavior, the required 'los_targets:write' scope, the criticality-modifier derivation logic, and the fixed direction rules per metric. These are behavioral traits well beyond what any structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and every sentence carries information, but the derivation-math sentence ('condition 70 becomes 82 at a Critical facility, 58 at a Low one') is dense and arguably more illustrative than essential to invoking the tool. It is informative without being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and no annotations, the description covers prerequisites, scope, error behavior, parameter direction constraints, and derived-target mechanics, so an agent has everything needed to call it correctly. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters and the baseline is 3. The description adds genuine meaning beyond the schema by explaining that direction cannot be sent and by classifying which metrics are higher- vs lower-is-better with their scale ranges, plus the 'Not money' clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the technical Level of Service target for one system and metric') and scopes it to a single system/metric pair. It also implicitly separates itself from update_system_los_target by noting duplicates return 409 and must be updated instead, so an agent can pick the right call without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not guidance: 'set once for the organization; a duplicate returns 409, so update the existing row instead' routes the agent to the sibling update tool. It also states a prerequisite workflow ('Resolve system_id first via list_systems'). This is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_upload_urlAInspect
Generate a signed upload URL for uploading a file to AssetLab storage. Returns a signed_url to PUT the file to, and the storage path to store on the record. IMPORTANT - When a user wants to upload a file, always clarify the target. File upload paths: (1) Asset IMAGE: bucket "asset-images" → update_asset with image_url. (2) Asset DOCUMENT (O&M, warranty, spec): bucket "documents" → create_asset_document. (3) Work order IMAGE: bucket "attachments" → update_work_order with image_url. (4) Work order/request/PM ATTACHMENT: bucket "attachments" → create_attachment with the parent ID. (5) Project DOCUMENT: bucket "project-documents" → create_project_document. (6) Contract DOCUMENT: bucket "contract-documents" → create_contract_document. Always ask the user which type they mean if ambiguous. Requires upload_urls:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | Storage bucket (required). Use "asset-images" for asset photos. | |
| file_name | Yes | File name including extension (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It states the required scope ('Requires upload_urls:write scope') and describes the return payload ('signed_url to PUT the file to, and the storage path to store on the record'), which are essential behavioral traits. It does not mention signed URL expiration or timeout, leaving a minor gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well front-loaded with purpose and return values before the routing details. The six-item list is necessary for correct bucket selection, but there is slight redundancy between the initial 'always clarify the target' and the final 'Always ask the user which type they mean if ambiguous.' Overall it is appropriately sized for the routing complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the large sibling tool set, no output schema, and no annotations, the description is complete enough for correct invocation. It covers purpose, return values, required scope, target disambiguation, and follow-up tool mapping. Nothing critical for an agent to call the tool successfully is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds substantial meaning beyond the schema. It maps each bucket value to a concrete user scenario and follow-up tool (e.g., bucket 'asset-images' for asset images leading to update_asset with image_url). The schema only lists enum values with a brief hint, while the description provides a full decision tree for choosing the correct bucket.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generate a signed upload URL for uploading a file to AssetLab storage.' It goes further by naming the exact return values and listing six distinct upload targets, which clearly distinguishes it from sibling tools like upload_file, create_attachment, and update_asset. An agent can select this tool without needing to open another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'When a user wants to upload a file, always clarify the target.' It then provides a numbered routing map from user intent to bucket and follow-up tool, effectively naming alternatives and the conditions that select them. The instruction to ask the user when ambiguous is a clear usage boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vendorBInspect
Create a new vendor. Requires vendors:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| name | Yes | Vendor name (required) | |
| state | No | State/province | |
| status | No | Vendor status | |
| address | No | Street address | |
| country | No | Country | |
| website | No | Website URL (protocol and www prefix are stripped automatically) | |
| categories | No | Vendor categories (e.g. ["HVAC", "Plumbing"]) | |
| description | No | Description | |
| contact_name | No | Contact person name | |
| contact_email | No | Contact email | |
| contact_phone | No | Contact phone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one genuinely useful fact beyond the schema — the required vendors:write scope — which tells the agent about authorization. However, it omits duplicate-name handling, what the response contains, and reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. It is on the terse side for a 12-parameter mutation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is only minimally adequate. The schema covers inputs fully, but the agent gets no information about side effects, error conditions, or what the created record looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 12 parameters, so the schema already documents each field including the required name and the website normalization behavior. 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.
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 vendor'), which is unambiguous on its own. It does not differentiate from closely related siblings such as create_vendor_site_assignment or bulk_create, but the tool name and verb-resource pair are clear enough for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope requirement, and no pointer to alternatives like bulk_create or create_vendor_site_assignment. An agent must infer all routing decisions from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vendor_site_assignmentBInspect
Assign a vendor to a site. Requires vendor_site_assignments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Site ID (required) | |
| vendor_id | Yes | Vendor ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required write scope ('vendor_site_assignments:write'), which is real behavioral information an agent needs. However, it says nothing about whether this is a mutation, idempotency on repeated calls, duplicate-assignment behavior, or what a successful response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action stated first, authorization constraint second. Nothing is padded or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the action and the auth requirement but omits error/duplicate behavior. Adequate to invoke, thin on what the agent should expect afterward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully documented in the schema (100% coverage) with types, formats, and required markers. The description adds no syntax or format meaning beyond that, so it sits at the baseline for schema-complete tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Assign') and resource ('a vendor to a site'), which cleanly separates it from create_vendor and create_site in the sibling list. It doesn't explicitly name the join-table sibling (list_vendor_site_assignments / delete_vendor_site_assignment) as the alternative, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus alternatives, no prerequisites (do vendor_id and site_id need to pre-exist?), and no mention of duplicate-handling context. The only guidance is the required scope, which is an authorization fact rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_categoryBInspect
Create a new work category. Requires work_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Work category name (required) | |
| module | No | Workspace the category is offered in: facilities, infrastructure, or shared (both). Defaults to shared. | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add one piece of real behavioral context, the required work_categories:write scope, which is not in the schema. However, it omits any mutation semantics: uniqueness of names, what happens on duplicate, whether the created object is returned, and permission failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, requirement second. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation mutation tool without an output schema, the description is thin: it covers the auth requirement but not validation, duplicate handling, or return behavior. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema documents all three parameters (name required, module enum with default, description). The description adds no parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new work category'), so an agent knows exactly what the tool does. It does not, however, differentiate from the many other create_*_category siblings (cost_category, part_category) that appear in the tool list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope statement, and names no alternative tool. An agent must infer that this is the right tool purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_orderAInspect
Create a new work order. Requires work_orders:write scope. REQUIRED fields: title, site_id, building_id, AND at least one association (asset_id OR location_id). A work order with no asset/location association is not valid - ask the user which one applies before calling. RECOMMENDED: work_category_id (look up via list_work_categories; omit only if no reasonable match exists). Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Work order type | |
| title | Yes | Work order title (required) | |
| status | No | Status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset this work order is for - resolve via list_assets. The server mirrors it into asset_ids. | |
| due_date | No | Due date (ISO 8601) | |
| priority | No | Priority level | |
| asset_ids | No | Assets this work order covers - use instead of asset_id when there is more than one. | |
| assignees | No | Array of assigned user IDs (alternative to assigned_to for multiple assignees) | |
| image_url | No | Image storage path (upload via create_upload_url with bucket "attachments", then set this to the returned path) | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| start_date | No | Start date (ISO 8601) | |
| system_ids | No | Systems this work order covers - resolve via list_systems. Systems have no singular field; this array is the only way to associate them. | |
| assigned_to | No | Assigned user ID (mapped to assignees array) | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Detailed description | |
| location_id | No | Location this work order is for - resolve last via list_locations filtered by building_id. The server mirrors it into location_ids, so send this OR location_ids, not a conflicting pair. | |
| location_ids | No | Locations this work order covers - use instead of location_id when there is more than one. Sending location_id alone replaces this with that single id. | |
| meter_reading | No | Meter/odometer reading at time of service | |
| estimated_cost | No | Estimated cost | |
| estimated_time | No | Estimated time in hours | |
| work_category_id | No | Work category ID | |
| purchase_order_id | No | Purchase order that paid this work order's actual cost - resolve via list_purchase_orders. Counts against the order's remaining balance. | |
| infrastructure_asset_ids | No | Infrastructure features this work order covers - resolve via list_infrastructure_assets. Use this when one job covers several features (a round of hydrant flushing); the whole selection is one work order with one completion and one cost, split across the features. Mutually exclusive with asset/location/system targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the required scope ('work_orders:write'), required fields, invalid-state behavior, and recommended field handling. It does not describe return content, side effects, or idempotency, leaving some behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense paragraph, front-loaded with the core action, then requirements, then recommended and lookup guidance. Every sentence adds actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter create tool with no annotations and no output schema, this covers the most important invocation constraints: auth, required fields, cross-field association requirement, and resolution hierarchy. It omits return behavior and some optional-parameter interactions, though the schema documents those fields individually.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds critical cross-field semantics not in the schema: site_id and building_id are effectively required, and at least one of asset_id or location_id must be supplied even though the schema only marks title as required. It also gives the recommended work_category_id workflow and the top-down location resolution order.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new work order') with clear scope. It does not explicitly distinguish itself from nearby create siblings (e.g., create_work_request) or mention update_work_order, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('ask the user which one applies before calling') and an invalid-state exclusion ('A work order with no asset/location association is not valid'), along with lookup order. It does not name alternative tools such as create_work_request or bulk_create, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_order_commentBInspect
Create a new comment on a work order. Requires work_order_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Comment text (required) | |
| work_order_id | Yes | Work order ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses the required scope but omits critical details for a mutation tool: whether comments are immutable, if they trigger notifications, whether they can be edited later, or what the response includes. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The core action is front-loaded, and the scope requirement is stated briefly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too sparse. It should inform about side effects, permissions beyond scope, or what happens on success. The scope requirement is helpful but insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (work_order_id and comment). The description adds no additional parameter semantics beyond what the schema provides, which meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new comment on a work order.' It clearly distinguishes from siblings like create_work_order, create_project_comment, and create_asset_comment. An agent can instantly understand the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a required scope ('Requires work_order_comments:write scope'), which is necessary but not sufficient. It does not specify when to use this tool versus its update_work_order_comment sibling or when to use a different comment type. Implied usage is present but lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_order_scheduleAInspect
Schedule a work order for a technician on a date (one entry of a day plan). stop_order gives the position in the technician's day; leave it unset for an unordered calendar entry. Requires work_order_schedules:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| stop_order | No | 1-based stop position in the day plan | |
| technician_id | Yes | Technician Clerk user ID (required) | |
| work_order_id | Yes | Work order ID (required) | |
| scheduled_date | Yes | Date (YYYY-MM-DD, required) | |
| duration_minutes | No | Planned duration in minutes | |
| scheduling_notes | No | Scheduling notes | |
| scheduled_end_time | No | End time (HH:MM) | |
| travel_time_minutes | No | Travel time from previous stop | |
| scheduled_start_time | No | Start time (HH:MM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden. It usefully discloses the required auth scope (work_order_schedules:write) and the day-plan semantics of stop_order, but says nothing about conflict/overwrite behavior, duplicate scheduling, or what happens to an existing entry on the same date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all front-loaded: purpose first, then the key optional-parameter behavior, then the auth requirement. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter create tool with full schema coverage and no output schema, the description covers purpose, the trickiest optional parameter, and the required scope. It is nearly complete; only mutation edge cases (duplicate/conflict handling) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining what leaving stop_order unset produces ('an unordered calendar entry'), a behavior the schema's '1-based stop position in the day plan' does not convey. That extra semantic detail earns above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Schedule a work order for a technician on a date') and clarifies the artifact being created is 'one entry of a day plan', which distinguishes it from the sibling create_work_order that creates the work order itself. An agent can tell what it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives guidance on the optional stop_order parameter (set it for a positioned stop, leave unset for an unordered entry), which is usage-relevant, but it never says when this tool should be chosen over alternatives or what prerequisites exist beyond the write scope. Usage is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_requestAInspect
Create a new work request. Requires work_requests:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs (site_id, building_id, location_id) explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Work request title (required) | |
| status | No | Status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset ID | |
| priority | No | Priority level | |
| system_id | No | System ID | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| work_category_id | No | Work category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the auth scope and the top-down resolution prerequisite, but says nothing about what creation returns, whether the request is idempotent, or side effects such as notifications or status defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: purpose, auth requirement, and the location workflow. The hierarchy instruction is front-loaded with "IMPORTANT" so the critical constraint is not buried. Minor redundancy with the schema's per-field tips.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no output schema and no annotations, the definition covers the highest-risk aspects (scope, location hierarchy) well. It leaves the enum-bearing fields (status, priority) and other optional references to the schema, which documents them adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine value by naming the three location-hierarchy parameters together and insisting all three be supplied explicitly, reinforcing the resolution order the schema only states per-field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Create a new work request") that is unambiguous against siblings like create_work_order. It does not explicitly differentiate itself from create_work_order or bulk_create, but the name and phrasing are precise enough for an agent to select it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete required scope (work_requests:write) and an explicit prerequisite workflow for location resolution. It gives clear context for use but stops short of naming when to prefer create_work_order or create_work_request alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_assetBInspect
Delete an asset by ID. Requires assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses only the required scope (assets:write). It says nothing about reversibility, cascade/associated-record effects, or confirmation requirements for what is an inherently destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding, with the action front-loaded before the permission note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The scope requirement is a genuinely useful addition, but for a destructive delete with no annotations and no output schema, the absence of any statement about permanence or side effects leaves an agent under-informed about consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema (100% coverage: 'Asset ID', uuid format), so the schema does the heavy lifting. The description's 'by ID' adds no format or constraint detail beyond it, which is the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an asset') and the identifier used ('by ID'), which cleanly separates it from read/update siblings. It does not, however, distinguish itself from near-neighbors like delete_asset_betterment or delete_infrastructure_asset beyond the generic resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites beyond scope, and no reference to alternatives such as soft-delete paths or the related delete_* siblings. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_bettermentAInspect
Delete a betterment by ID. The asset's net book value and remaining life revert to what they were without it. Requires asset_betterments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Betterment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does deliver real behavioral value: it discloses the downstream consequence that the asset's net book value and remaining life revert, and states the required asset_betterments:write scope. It stops short of saying whether the deletion is reversible/soft-delete or whether anything else cascades, but the side-effect disclosure is well above the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: action, consequence, authorization. Every sentence earns its place and the critical effect is front-loaded right after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no annotations and no output schema, the description supplies purpose, side effect, and auth scope, which is enough to call it correctly. It only lacks reversibility/error behavior to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as a UUID betterment ID, so the schema does the work. The description only restates 'by ID' without adding format, sourcing, or validation guidance, which is the expected baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Delete a betterment') and adds the identifier basis ('by ID'), which maps directly to the single required parameter. Together with the uniquely named resource, an agent can distinguish this from delete_asset, delete_asset_cost, and the other delete_* siblings without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive verb and the resource, but the description offers no explicit when-to-use or when-not-to-use guidance, no mention of update_asset_betterment as the alternative for correcting rather than removing a betterment, and no prerequisite context beyond the scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_commentBInspect
Delete an asset comment by ID. Requires asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does surface one genuinely useful behavioral fact the schema cannot express: the asset_comments:write scope requirement. However, for a destructive operation it says nothing about whether the delete is permanent or reversible, whether anything cascades, or whether a response is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action and identifier come first, followed by the scope requirement. Nothing is repeated from the schema, and nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool this is nearly sufficient: an agent knows exactly what it does, what identifier to supply, and what permission it needs. The remaining gap is the absence of any statement about irreversibility or failure behavior for a destructive call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single id parameter is documented as 'Asset comment ID'), so the schema already carries the semantics. 'By ID' adds nothing beyond what the schema states, which is the expected baseline of 3 for a fully documented single-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete an asset comment') and the lookup key ('by ID'), which is enough to distinguish it from the many sibling delete tools aimed at other comment types (delete_work_order_comment, delete_project_comment, delete_infrastructure_asset_comment). It stops short of explicitly naming those alternatives, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_asset_comment (edit) or list_asset_comments/get_asset_comment (inspect), and no preconditions or side-effect warnings. The only contextual statement is the required scope, which is a permission prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_condition_assessmentBInspect
Soft-delete an asset condition assessment by ID. Requires asset_condition_assessments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Assessment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two meaningful traits: the deletion is 'soft' (implying recoverability rather than permanent loss) and it requires the asset_condition_assessments:write scope. It stops short of stating whether the record can be restored, what happens to dependent data, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded: the action first, then the permission requirement. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-argument delete tool with no output schema and no annotations, the description covers the essential facts (soft semantics, write scope). It is nearly complete, missing only reversibility/restore details and any error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema already documents it at 100% coverage ('Assessment ID', uuid format). The description adds nothing beyond restating 'by ID', so the baseline 3 for schema-documented params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (soft-delete), a precise resource (asset condition assessment) and the keying argument (by ID). It distinguishes itself cleanly from the get_/list_/update_ siblings, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives no when-to-use context, no prerequisites beyond the scope note, and no mention of alternatives such as whether to update or retrieve first. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_costBInspect
Delete an asset cost entry by ID. Requires asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset cost ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required permission ("asset_costs:write scope"), which is genuine context, but says nothing about whether the delete is permanent, what happens to dependent records, or error behavior on an unknown ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and its key constraint front-loaded. Nothing in it could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema, purpose, key, and required scope are all covered. The remaining gap is that a destructive operation with no annotations never states irreversibility or cascade/side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter at 100% schema coverage; the schema already documents 'id' as a UUID "Asset cost ID", and the description adds nothing beyond "by ID". Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete an asset cost entry") plus the lookup key ("by ID"), which is enough to separate it from the many siblings in the fleet, including the near-neighbor delete_infrastructure_asset_cost. It stops short of naming any sibling or scope boundary explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given; the description never routes the agent toward update_asset_cost vs delete_asset_cost, or toward the infrastructure-asset variant. The scope requirement is a prerequisite, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_documentBInspect
Delete an asset document by ID. Requires asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It usefully discloses the required scope (asset_documents:write), but does not state whether deletion is permanent, whether it cascades to related records, or what success looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the purpose front-loaded before the scope requirement. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no output schema, purpose and required scope are given. However, critical deletion semantics such as irreversibility and side effects are missing, which matters for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'id' parameter fully documented as a UUID. The description's 'by ID' confirms the parameter but adds no format or usage detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Delete' and resource 'asset document' by ID, so the core action is clear. It does not distinguish itself from similar siblings like delete_infrastructure_asset_document or delete_project_document, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, prerequisites, or alternatives. The agent gets no help routing among the many delete_* tools or knowing under what conditions this deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_lifecycle_eventAInspect
Delete a facility lifecycle strategy event by ID. Projections recompute immediately; consider update with is_active=false to disable instead. Requires asset_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does useful work: it discloses the side effect that "projections recompute immediately" (state beyond the deleted row) and the required authorization (asset_lifecycle_events:write scope). It still does not state whether the delete is hard or soft, or what happens if the ID is already gone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The core operation is front-loaded, followed immediately by the side effect, the alternative and the auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema and no annotations, the description supplies everything an agent needs to act: what it removes, the immediate side effect on projections, the safer alternative, and the scope required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ("id") exists and schema coverage is 100%, with the schema describing it as "Lifecycle event ID" and typing it as a UUID. The description's "by ID" adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Delete a facility lifecycle strategy event") and identifies the operation as keyed by ID, so the agent can distinguish it from the create/get/list/update siblings on the same resource. It never names the closest near-sibling (delete_infrastructure_lifecycle_event), so the asset-vs-infrastructure boundary is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit alternative and the condition that should drive its use: "consider update with is_active=false to disable instead." That routes the agent away from deletion when the intent is merely to disable. It stops short of stating when deletion is the correct choice versus a deprecation/soft-delete path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_partAInspect
Remove a part from an asset by association ID. Requires asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset-part association ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the required auth scope (asset_parts:write), which is genuinely useful. It does not state whether the removal is permanent/irreversible or whether the underlying part record is deleted versus just the asset association being severed — a meaningful ambiguity for a delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the action is front-loaded and the scope requirement follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with no annotations and no output schema, the definition covers the action, the identifier type, and the permission requirement. It stops short of stating irreversibility or what the operation returns, leaving the mutation semantics thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented as the 'Asset-part association ID.' The phrase 'by association ID' in the description reinforces that the UUID identifies an association, not the part, but adds little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove a part from an asset by association ID.' This is clear and distinguishes it from delete_part (delete the part itself) and update_asset_part. It doesn't explicitly name the near-neighbor delete_infrastructure_asset_part, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'by association ID' implies this operates on an association record rather than the part itself, which is useful routing context. However, there is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling delete/get/update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_placementAInspect
Remove an asset placement. The asset itself is not affected - only the pin on the floorplan is removed. Requires asset_placements:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset placement ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does a good job: it discloses the destructive scope (only the placement pin, not the asset), and states the required authorization scope (asset_placements:write). It does not say whether the deletion is reversible, whether it cascades to related records, or what happens if the placement is referenced elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler: the action, the scope-limited side effect, and the auth requirement are each front-loaded and earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers the action, the non-obvious side-effect boundary (asset preserved), and the required scope. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter ('id', format uuid, 'Asset placement ID') is fully documented in the schema. The description adds no syntax, format, or identification guidance beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (asset placement), and immediately disambiguates from the sibling delete_asset by clarifying 'The asset itself is not affected - only the pin on the floorplan is removed.' An agent can distinguish this from the ~80 other delete_* siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the clarification that only the placement is removed, which implicitly routes an agent away from delete_asset when it wants to remove an asset. However, there is no explicit when-to-use statement, no mention of alternatives, and no note on prerequisites beyond the scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_replacement_planBInspect
Delete an asset replacement plan by ID. Requires asset_replacement_plans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset replacement plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required auth scope ('asset_replacement_plans:write'), which is real value, but it says nothing about permanence, reversibility, or whether deleting a plan cascades to related records. For a destructive operation this leaves important risk context unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and key, followed by the scope requirement. Nothing is wasted, though it is arguably under-specified rather than maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with a complete schema and no output schema, the core need is covered, but the destructive semantics (permanence, side effects) and any when-not-to-use condition are absent. Adequate for the mechanical call, incomplete for safe operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the 'id' parameter is fully documented in the schema (string uuid). The description's 'by ID' merely confirms the lookup key and adds no format or constraint detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('delete') and resource ('asset replacement plan') with the lookup key ('by ID'). It clearly names the entity, distinguishing it from sibling deletes of other resources. It does not, however, differentiate itself explicitly from the get/update/list siblings on the same resource, leaving that to inference from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond a scope, and does not mention alternatives like update_asset_replacement_plan or list_asset_replacement_plans. An agent learns only that it deletes by ID, with no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_statusBInspect
Delete an asset status by ID. Requires asset_statuses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset status ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required auth scope (asset_statuses:write), which is real context beyond structured fields, but omits that deletion is irreversible and what happens to assets referencing the status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, with zero wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers the core action and permission requirement but leaves irreversibility and side effects unstated. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully typed as a UUID in the schema. The description only says 'by ID', adding no syntax or semantic detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (asset status) scoped by ID, so an agent can distinguish it from get_asset_status, update_asset_status, and list_asset_statuses. It stops short of explicitly naming a sibling or the boundary case, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to delete versus update or list, no prerequisites beyond scope, and no conditions/exclusions. Usage is only implied by the verb; nothing tells the agent when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_typeBInspect
Delete an asset type by ID. Requires asset_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required 'asset_types:write' scope, which is beyond the schema, but says nothing about irreversibility, side effects, or what happens if the asset type is still referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, and the action is front-loaded. The scope requirement is placed immediately after the core action, making the definition easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool, the description covers the core action and auth scope. However, with no annotations and no output schema, it omits safety-relevant context such as irreversibility or error behavior when the ID is invalid or in use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, and schema description coverage is 100%, so the schema already documents the ID. The description says 'by ID' but adds no format, constraint, or lookup detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an asset type by ID'), so the agent knows exactly what the tool does. It does not explicitly distinguish itself from nearby siblings like delete_asset_type_group, but the named resource is narrow enough to avoid most confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and names no alternatives such as update_asset_type or delete_asset_type_group. It states a required scope, which is useful, but that is a prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_asset_type_groupAInspect
Delete an asset type group by ID. Requires asset_type_groups:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset type group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required scope (asset_type_groups:write), which is real auth context beyond the schema, but it omits the key destructive-delete traits an agent needs: whether deletion is permanent, whether it cascades to related records, and what happens on failure if the group is referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the scope requirement. Nothing is wasted and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter delete with full schema coverage and no output schema, the description is nearly sufficient and correctly flags the write scope. The only meaningful gap is delete-specific consequence information, which the absence of annotations makes more important than usual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage, the schema already documents the id as 'Asset type group ID'. The description's 'by ID' adds nothing the schema does not, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (asset type group), plus the lookup key (by ID). It is unambiguous what the tool does, but it contains no differentiation from the many sibling delete_* tools beyond the resource name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb: 'Delete an asset type group by ID.' There is no guidance on when to delete versus update/deactivate, no prerequisites, and no mention of related tools such as update_asset_type_group or list_asset_type_groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_attachmentBInspect
Delete an attachment by ID. Requires attachments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the operation is destructive ("Delete") and that attachments:write scope is required, an auth need, but it omits whether deletion is permanent, whether it cascades, and what response the caller receives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the auth requirement. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool, the description conveys purpose and auth scope, and the schema fully documents the parameter. However, with no annotations and no output schema, it still lacks when-to-call guidance and confirmation of destructive side effects, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the single parameter 'id' is documented as 'Attachment ID' in the schema. The description's 'by ID' adds no syntax, format, or constraint information beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (delete) and resource (attachment) and specifies the identifier is an ID. This clearly distinguishes it from create_attachment, update_attachment, get_attachment, and list_attachments, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not-to-use, and no mention of alternative tools. The only usage-related information is the prerequisite scope, which is necessary but not sufficient for deciding when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_budgetBInspect
Delete a budget by ID. Requires budgets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Budget ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does usefully disclose the required 'budgets:write' scope, which an agent needs for auth planning. However, it omits whether deletion is irreversible, whether related records cascade, and error behavior on a missing ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core action front-loaded and the auth requirement appended.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with a fully documented schema and no output schema, purpose and scope are covered. The remaining gap is the lack of any note on irreversibility or cascade effects for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter (uuid format documented). The description adds only 'by ID', restating what the schema already conveys, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Delete a budget by ID'. An agent can distinguish this from update_budget/list_budgets/get_budget by the 'Delete' verb, though the description never explicitly names those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites beyond scope, and no mention of alternatives such as update_budget or get_budget. The agent is left to infer that this is the terminal removal action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_buildingBInspect
Delete a building by ID. Requires buildings:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Building ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required scope (buildings:write), but says nothing about whether the delete cascades to child records (assets, floorplans, work orders), whether it is soft or hard, or whether it is recoverable — critical for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, requirement second. No wasted words and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers what and the auth scope but omits the consequences of deletion. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, already documented as a UUID 'Building ID'. The description's 'by ID' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (building) plus the identifier used, which cleanly separates it from siblings like delete_building_type and delete_project_building. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_building or delete_project_building, and no prerequisites or warnings about the operation being irreversible. The description assumes the agent already knows the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_building_typeBInspect
Delete a building type by ID. Requires building_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Building type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required building_types:write scope, but says nothing about irreversibility, whether deletion fails when the type is referenced by existing buildings, or whether the operation is soft vs hard delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action and scope front-loaded, zero filler. Nothing here could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, the definition covers purpose and authorization but omits the consequences of deletion and any referential-integrity behavior. Adequate minimum, but an agent deleting an in-use type would benefit from more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single id parameter ("Building type ID", uuid format), so the schema already carries the parameter semantics. The description's "by ID" adds nothing beyond that; baseline 3 is appropriate for a fully documented single param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Delete a building type") plus the lookup key ("by ID"), which cleanly separates it from delete_building and update_building_type in a very large sibling set. It stops short of any explicit sibling cross-reference or scope caveat, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives (e.g., delete_building, update_building_type, or list_building_types to find the ID). The only guidance is the implied 'by ID' input requirement and the permission scope, which is prerequisite information rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_change_orderAInspect
Delete a change order by ID. Requires change_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Change order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the auth scope requirement, which is valuable, but the word 'Delete' only implies destruction and it does not state whether the deletion is permanent, reversible, or cascading to dependent records (e.g., change order lines).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste, with the action and key front-loaded before the scope prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with full schema coverage and no output schema, the definition is nearly sufficient. The one gap is the absence of any note on irreversibility or side effects, which matters for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is fully documented there, including its uuid format. The description only restates 'by ID' without adding format or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (change order) with the lookup key (by ID). It is unambiguous, though it offers no differentiation from the many other delete_* siblings beyond the resource named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a precondition (requires change_orders:write scope), which is useful context, but gives no when-to-use vs when-not guidance and does not point to alternatives such as update_change_order or delete of related entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_compliance_itemBInspect
Delete a compliance item by ID. Requires compliance:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the required compliance:write scope, which is genuinely useful auth context, but says nothing about irreversibility, whether the deletion cascades to related records, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the operation is front-loaded before the permission note. Nothing could be trimmed without losing the scope hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with full schema coverage, the essentials are covered and the scope note is a bonus, but the absence of any statement about irreversibility or side effects leaves a meaningful gap for a destructive operation with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already fully documents 'id' as a UUID compliance item ID. The description's 'by ID' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (compliance item) plus the identifier used to target it. It is clear what the tool does, though it does not distinguish itself from the closely related delete_compliance_record / delete_compliance_pm_schedule siblings beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no pointer to alternatives alongside the many sibling delete tools. The only usage-shaped information is the scope requirement, which is closer to an auth constraint than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_compliance_pm_scheduleAInspect
Unlink a PM schedule from a compliance item. The schedule and the item both stay. Requires compliance:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Link ID - resolve via list_compliance_pm_schedules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations the description carries the full burden, and it does well: it discloses the non-destructive semantics ('both stay') and the required authorization scope (compliance:write). It does not cover idempotency, error behavior if the link does not exist, or how to re-link, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by the most decision-relevant fact (no data is destroyed) and the prerequisite scope. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter unlink tool with no output schema and no annotations, the description covers action, data impact, and authorization. Missing only secondary details such as failure modes or the inverse operation, which keeps it just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% – the schema already explains that 'id' is a Link ID resolved via list_compliance_pm_schedules. The description adds no parameter-level detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Unlink') and its two resources (PM schedule, compliance item), and immediately resolves the ambiguity that the tool name 'delete_' creates by clarifying that neither object is destroyed. An agent can distinguish this from delete_pm_schedule and delete_compliance_item without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'The schedule and the item both stay' implicitly tells the agent this is the right tool when it wants to sever an association rather than remove data, which is useful routing context against sibling delete_* tools. However, there is no explicit when-to-use/when-not-to-use guidance and no named alternative (e.g., delete_pm_schedule) for the case where the user actually wants to delete the schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_compliance_recordBInspect
Delete a compliance record by ID. Requires compliance_records:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance record ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it discloses only the required scope. For a destructive operation it omits whether deletion is permanent or reversible, whether dependent records are cascaded or orphaned, and what happens if the ID does not exist. The scope hint is useful but far short of what an unannotated delete tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, front-loading the action and resource before the permission requirement. Nothing redundant and nothing padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, no output schema, no nested data), so the description need not explain return values. However, the absence of annotations means the destructive and irreversibility semantics are never stated anywhere, which is a meaningful gap for a delete endpoint even in a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single id parameter (uuid, "Compliance record ID"), so the schema already documents it fully. The description's phrase "by ID" adds no format, constraint, or source detail beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (delete) and resource (compliance record) plus the lookup key (by ID), which is enough to distinguish it from get_compliance_record, update_compliance_record, and list_compliance_records. It does not explicitly reference any sibling, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of prerequisites such as required record state, dependencies, or the availability of a bulk alternative. The only conditioning information is the scope requirement, which is about permissions rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contractCInspect
Delete a contract by ID. Requires contracts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contract ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It usefully discloses the required contracts:write scope, but says nothing about whether the delete is hard or soft, whether it cascades to related records (documents, sites), or whether it is recoverable — critical context for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the action and the auth requirement are both immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is too thin: it omits cascade behavior, reversibility, and failure modes, leaving the agent unable to reason about the consequences of calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage ('Contract ID', uuid format), so the schema already carries the semantics. The description restates 'by ID' but adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a contract by ID'), and the singular 'contract' distinguishes it from the many sibling deletes like delete_contract_document and delete_contract_site. It doesn't explicitly name an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no mention of alternatives (e.g., deactivating vs deleting). The scope requirement hints at a prerequisite but is not framed as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contract_documentAInspect
Delete a contract document by ID. Requires contract_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contract document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the required scope ('contract_documents:write'), which is critical auth context beyond the schema. However, lacks details about permanence, cascade effects, or failure modes. With no annotations, it carries the full burden but only partially.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states action, second states prerequisite. No waste, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool with no annotations, the description should mention irreversibility or side effects. It covers scope but omits critical deletion behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is fully documented in the schema. The description adds 'by ID' confirming the identifier usage, but no additional semantics. Baseline 4 for zero params; here the description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('contract document') with the identifier scope ('by ID'). Distinguishes from siblings like delete_contract and get_contract_document by naming the exact resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool, prerequisites, or alternatives. The scope requirement hints at permissions but doesn't explain when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contract_siteAInspect
Remove a contract from a site. Requires contract_sites:write scope. An assignment is identified by its contract and site; it has no id of its own.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Site ID (required) | |
| contract_id | Yes | Contract ID (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required 'contract_sites:write' scope and explains that the assignment has no independent ID, but it does not state whether the removal is permanent, whether it cascades, or what response to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three compact sentences, front-loaded with the action and followed by the permission requirement and identity semantics. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter delete operation with no annotations or output schema, the description covers purpose, authorization, and parameter identity well. It still leaves some behavioral details implicit, such as return behavior and side effects, but no critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds meaning beyond that by explaining why the assignment is identified only by contract and site, and why neither parameter is an assignment ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Remove a contract from a site.' It also clarifies that this deletes an association, not the contract itself, which distinguishes it from delete_contract and create_contract_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is clear: remove a contract-site assignment. It also names the required scope as a prerequisite, but it does not explicitly compare the tool with alternatives such as delete_contract or update_contract_site.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cost_categoryBInspect
Delete a cost category by ID. Requires cost_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cost category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuine behavioral trait: the required cost_categories:write scope. However, it omits key delete semantics — permanence, whether the category must be unreferenced, and whether related records are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action and the required permission are both front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter delete with a fully documented schema and no output schema, the description covers the essentials (action, target, auth requirement). It is adequate but leaves destructive consequences and failure conditions unstated, which matters more for a delete than for a read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema as 'Cost category ID'. The description's 'by ID' adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Delete a cost category') plus a targeting key ('by ID'), which is unambiguous and clearly distinct from update_cost_category and list_cost_categories. It does not, however, explicitly name a sibling to differentiate itself, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition (write scope) but gives no when-to-use/when-not guidance, no mention of related alternatives such as update_cost_category, and no warning about when deletion is inappropriate. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_criticality_modifierAInspect
Delete a criticality modifier override by ID, which restores the built-in default for that tier (critical 0.6, high 0.8, medium 1.0, low 1.4). Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Criticality modifier ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two meaningful traits: the auth requirement (los_targets:write scope) and the post-delete effect (built-in defaults restored for each tier). It stops short of stating irreversibility or what happens to dependent data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verb+resource, followed by consequence and required scope. Every clause earns its place with no padding or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity single-param delete with full schema coverage and no output schema, the description supplies the two things the structured fields don't: the auth scope and the restore-default behavior. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id param is documented as a UUID in the schema. The description only restates 'by ID' and adds no format, lookup, or edge-case meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (criticality modifier override) and even describes the resulting effect of deletion. It is clearly distinguishable from get_/update_criticality_modifier by resource semantics, though it never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Delete a criticality modifier override by ID,' and the restore-default outcome hints at intent, but there is no explicit when-to-use guidance, no mention of alternatives (e.g. update_criticality_modifier to change rather than remove), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_custom_field_definitionAInspect
Delete a custom field definition by ID. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field definition ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required auth scope, but says nothing about irreversibility, whether existing custom field values are cascade-deleted, or what the response looks like — significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope constraint, with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description should mention irreversibility and any cascade effect on dependent custom field values. It covers the permission requirement but leaves the risk profile incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter already fully documented in the schema (100% coverage, UUID format, 'Custom field definition ID'). The phrase 'by ID' merely echoes what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a custom field definition') plus the keying parameter ('by ID'), which is more than a restatement of the name. It does not explicitly distinguish itself from the very similar delete_custom_field_value sibling, so differentiation relies on the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite (custom_fields:write scope) but gives no when-to-use guidance, no when-not-to-use, and does not mention the sibling update_custom_field_definition or delete_custom_field_value as alternatives. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_custom_field_valueBInspect
Delete a custom field value by ID. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field value ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the required scope (custom_fields:write), which is useful, but for a delete operation it does not state whether deletion is permanent, what happens to dependent records, or whether the value can be recovered. That is a significant gap for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the requirement. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema, the description covers purpose, identifier, and auth scope. However, without annotations it omits the destructive consequences that an agent should know before calling. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single id parameter fully described. The description's 'by ID' adds no format or syntax beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (custom field value) with an identifier (by ID). This clearly distinguishes it from the sibling delete_custom_field_definition, which targets definitions rather than values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided, and no alternatives (e.g., update_custom_field_value or list_custom_field_values) are mentioned. The scope note is a prerequisite, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_expenseBInspect
Delete an expense by ID. Requires expenses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Expense ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does supply one genuinely useful piece of context: the required expenses:write scope, which tells the agent an auth prerequisite exists. It stops short of disclosing destructiveness, irreversibility, or whether this is a soft or hard delete for a high-risk mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action front-loaded, zero filler. Nothing could be removed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one documented parameter, no output schema), and the scope requirement is a helpful addition. But for a destructive operation with no annotations, the definition should at minimum indicate whether deletion is permanent or reversible and what happens on an unknown ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented as a UUID "Expense ID" in the schema. The description only repeats that it is an ID with no additional format or constraint detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete an expense") plus the lookup key ("by ID"), which is unambiguous against the many delete_* siblings. However, it largely mirrors the tool name and does not explicitly contrast itself with related operations like update_expense or bulk_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites beyond scope, and no mention of alternatives when a delete is inappropriate (e.g. should an agent soft-delete, or update status instead?). The only usage signal is "by ID".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_floorplanAInspect
Delete a floorplan. WARNING: cascades to all regions and asset placements on this floor. Does NOT delete the underlying PDF file from storage (do that separately if no other floors reference it). Requires floorplans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden: it discloses the cascade to all regions and asset placements, explicitly states the underlying PDF is NOT removed, and states the required write scope. These are non-obvious destructive side effects an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action before the warnings. Every sentence earns its place: action, cascade scope, non-cascade of PDF, and scope requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, it covers cascade, side effects, and auth. The only minor gap is it does not state what (if anything) is returned, but that is a small omission for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single required 'id' parameter with schema description coverage of 100%, so the schema already documents the parameter. The description adds nothing about the identifier beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Delete a floorplan') that cleanly distinguishes it from the sibling create/get/update/list_floorplan tools. The cascade warning and PDF-storage caveat sharpen the scope of the operation beyond the bare name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States prerequisite scope ('floorplans:write') and clarifies that PDF deletion is a separate operation to be done only if no other floors reference it, which implies the alternative action. It does not name an explicit sibling to prefer, so a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_floorplan_regionAInspect
Delete a region. Asset placements that referenced this region will have region_id set to null but remain on the floorplan. Requires floorplan_regions:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan region ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a non-obvious side effect (referencing asset placements get region_id set to null but stay on the floorplan) and the required write scope. It stops short of stating irreversibility or what the response contains, but the key downstream consequence is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, followed by the side effect and the auth requirement. Every sentence adds information; nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, the description supplies the essential behavioral context (referential side effect, required scope). Only irreversibility/confirmation semantics are left unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single 'id' parameter documented as the floorplan region ID, so the schema already carries the semantics. The description adds no format or constraint detail beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a region'), and the name disambiguates it from delete_floorplan and the other delete_* siblings. It doesn't explicitly contrast against sibling tools like update_floorplan_region or delete_asset_placement, but the intended action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The deletion intent is clear and the required scope ('floorplan_regions:write') is stated, which is a useful prerequisite. However, there is no guidance on when to use this versus alternatives (e.g. update_floorplan_region, delete_floorplan) or any warning about when deletion should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_form_responseAInspect
Remove a form from the record it is attached to, along with any answers already given. Use this before attaching a different form, since a record holds at most one form. Requires form_responses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form response ID - resolve via list_form_responses filtered by subject_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does disclose two key behaviors beyond the schema: the cascade effect ('along with any answers already given') and the required permission ('Requires form_responses:write scope'). It does not state irreversibility, undo behavior, or what happens if no form is attached, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the destructive scope stated first and the prerequisite/usage condition immediately after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema and no annotations, the description covers the destructive scope, the cardinality constraint, and the auth requirement. It is close to complete, with only recovery/error behavior left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'id' parameter is fully documented in the schema (100% coverage, including how to resolve it via list_form_responses filtered by subject_id). The description adds nothing about the parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (a form / form response) plus the scope of the operation: the form attached to a record and the answers given. This clearly distinguishes it from siblings like delete_form_template (templates) and delete_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: 'Use this before attaching a different form, since a record holds at most one form.' That tells the agent when this call is required, though it does not explicitly name the alternative tool 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.
delete_form_templateAInspect
Delete a form template by ID. Requires form_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required scope, and 'Delete' conveys destructiveness. However, it does not say whether deletion is permanent or reversible, whether deleting a template cascades to its items/responses, or what happens if the template is in use — significant gaps for an irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action front-loaded and the precondition trailing. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param destructive tool with no annotations and no output schema, the description is minimally adequate: action, key, and scope requirement are covered. It stops short of the cascade/irreversibility/error-condition context an agent would want before invoking an irreversible delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter ('id') with 100% schema description coverage, so the schema already defines it as a UUID 'Form template ID'. The description's 'by ID' only restates that, adding no format, sourcing, or constraint detail beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a form template') plus the lookup key ('by ID'), which cleanly separates it from delete_form_template_item and delete_form_response. It does not explicitly name those siblings, but the resource naming makes the distinction obvious from the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a real precondition ('Requires form_templates:write scope') but no when-to-use guidance, no mention of alternatives (e.g. update_form_template to disable rather than remove), and no warning about when deletion is inappropriate. Usage is implied by the destructive verb rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_form_template_itemBInspect
Delete a form template item by ID. Requires form_template_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses the required scope (form_template_items:write), which the agent cannot infer from the schema. However, it does not say whether deletion is reversible, whether it cascades to existing form responses that captured this item, or what a failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action and target are front-loaded and the scope requirement follows immediately. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param delete with no output schema, the definition covers the essentials (target, key, required scope). Missing pieces that matter for a destructive operation are reversibility and cascade impact on dependent form responses, which no structured field supplies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'id' parameter (typed as a UUID with a description), so the schema already documents it fully. The description's 'by ID' adds no format or constraint detail beyond that, which matches the baseline 3 for schema-heavy definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (form template item) plus the lookup key (by ID), so an agent can tell it apart from delete_form_template and update_form_template_item by name alone. It stops short of explicitly naming those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus the sibling update_form_template_item (edit an item) or delete_form_template (remove the whole template). The only guidance offered is the required scope, which is an authorization prerequisite rather than a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_assetAInspect
Soft-delete an infrastructure asset (feature) by ID (sets deleted_at). Requires infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that this is a soft-delete (sets deleted_at, so data is not physically removed) and names the required scope (infrastructure_assets:write). It stops short of stating whether a restore path exists or how related records are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the destructive semantics front-loaded and the auth requirement trailing. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no annotations and no output schema, the description covers the essentials an agent needs: soft-delete semantics and the required write scope. It could be more complete by noting reversibility or side effects on dependent records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and only one parameter exists, so the schema already documents the id fully. The description's 'by ID' adds nothing beyond the schema, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (soft-delete), resource (infrastructure asset/feature), and identifier mechanism (by ID). It is clearly distinguishable from the many sibling delete_* and delete_infrastructure_*_comment/cost/document tools that target child resources rather than the asset itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the delete verb and the write-scope requirement, but there is no explicit when-to-use vs alternative routing (e.g., when to soft-delete versus archive or update). Given the large sibling surface, more routing guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_asset_commentAInspect
Delete an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses the required write scope, but for a destructive operation it says nothing about irreversibility, cascade behavior (replies/attachments on the comment), or what happens on a missing ID. It adds real value over the schema but leaves the destructive-behavior profile largely unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, followed by the permission prerequisite. No filler, nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with full schema coverage and no output schema, the definition covers the essentials: what is deleted, its identifier, and the auth requirement. The remaining gap is destructive-side effects and error behavior, which is minor for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% (the schema documents id as 'Comment ID' with uuid format). The description's 'by ID' adds no syntax or format information beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete), a precisely named resource (infrastructure asset comment), and the keying mechanism (by ID). Against a large sibling set containing delete_infrastructure_asset, update_infrastructure_asset_comment, and delete_asset_comment, the resource name and verb combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a precondition (requires infrastructure_asset_comments:write scope), which tells the agent when the call will succeed, but it names no alternatives or when-not-to-use conditions (e.g., already-deleted comments, comments with replies). Usage is implied by the name rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_asset_costAInspect
Delete an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cost ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that the operation is a deletion and requires a specific write scope, which is useful auth context, but it does not say whether the deletion is permanent or reversible, what happens if the ID is invalid, or whether related records are affected. It adds some value but remains incomplete for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The core action is front-loaded, and the scope requirement is appended without elaboration. Every sentence earns its place given the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with no output schema, the description covers the basic action, parameter, and permission requirement. However, because there are no annotations, it should ideally state that the operation is destructive and irreversible, which it does not. It is adequate but leaves a meaningful gap for an agent assessing risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter's meaning ('Cost ID') is fully defined by the schema. The description's 'by ID' adds no syntax or format details beyond what the schema already provides, matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('infrastructure asset cost') and scopes it by ID. This distinguishes it from siblings like delete_asset_cost (non-infrastructure) and delete_infrastructure_asset (different resource). An agent can identify the exact operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (delete a cost by its ID) and states a prerequisite ('Requires infrastructure_asset_costs:write scope'), but it never explains when to choose this tool over alternatives such as update_infrastructure_asset_cost or delete_asset_cost, nor does it list exclusions. This is minimum viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_asset_documentBInspect
Delete an infrastructure asset document by ID. Requires infrastructure_asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required write scope (infrastructure_asset_documents:write), which is real auth context, but says nothing about whether the delete is permanent/irreversible or whether it cascades to related records — a gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded before the prerequisite. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no annotations and no output schema, purpose and auth scope are covered adequately, but irreversibility/cascade behavior is absent, which an agent weighing a destructive call would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is fully documented as a UUID in the schema. The description's 'by ID' adds nothing beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (infrastructure asset document) with scope limited to a single item by ID. It is distinguishable from delete_infrastructure_asset and delete_asset_document by naming the exact resource, though it never explicitly contrasts itself with those near-neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the sibling delete_asset_document or the update/inspection variants, and no conditions or exclusions. 'By ID' implies the input shape but gives no situational routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_asset_inspectionBInspect
Soft-delete an infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Inspection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does add two useful facts: that deletion is soft (recoverable rather than permanent) and that it requires the infrastructure_asset_inspections:write scope. It does not disclose reversibility mechanics, effects on related records, or whether the inspection can be restored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the operation and its mutating nature front-loaded ahead of the permission requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the description covers the two things an agent most needs: the mutation is a soft delete and it needs write scope. Minor gaps remain around recoverability and cascading effects on dependent records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single documented 'id' parameter, so the schema already carries the parameter semantics. The description's phrase 'by ID' is consistent but adds no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('soft-delete') and resource ('an infrastructure asset inspection') scoped 'by ID', which is more precise than a generic delete. However, it does not explicitly differentiate itself from the many sibling delete_* tools beyond naming the resource, so the agent must still infer which delete to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as update_infrastructure_asset_inspection or delete_infrastructure_asset, nor any when-not-to-use condition. The only directional statement is an authorization scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_asset_partAInspect
Delete an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Association ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It helpfully states the required write scope, but for a destructive delete operation it does not disclose whether deletion is permanent, cascading, idempotent, or what happens if the association ID doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, with the action and ID scoping front-loaded. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and no output schema, the description provides enough to invoke correctly (ID plus required scope). It stops short of full behavioral coverage for a mutation, but the surface area is small.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the schema (uuid, 'Association ID'), so the description's 'by ID' adds no new syntax or meaning. Baseline 3 applies when schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Delete) and resource (infrastructure asset part association) and scopes it by ID, which distinguishes it from sibling delete_infrastructure_asset (deletes an asset) and create/update_infrastructure_asset_part. An agent can identify exactly what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as update_infrastructure_asset_part or delete_infrastructure_asset; only the required permission scope is given. Usage is left to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_feature_classAInspect
Delete a tenant-defined infrastructure feature class by code. Builtin classes cannot be deleted. Classes referenced by any infrastructure network are protected by FK and cannot be deleted until those networks are reassigned. Requires infrastructure_feature_classes:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Asset class code (lowercase snake_case, 1-50 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does well: it discloses two hard failure conditions (builtin protection, FK protection from referencing networks) and the required write scope. It omits what a successful delete returns and whether the operation is recoverable, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each front-loaded with a distinct concern (what it does, builtin limitation, FK limitation plus scope). No filler and no repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must stand alone; it covers the safety-critical blockers and auth requirement well. It lacks any statement of the success response or side effects, a minor gap for a destructive single-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, so the schema already documents the code format and pattern. The description adds the notion that the code identifies a tenant-defined class 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete), resource (infrastructure feature class), and scope (tenant-defined, by code). The 'tenant-defined' qualifier immediately distinguishes it from operations on builtin classes, so an agent knows exactly what object this acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real when-not guidance: builtin classes cannot be deleted, and classes referenced by infrastructure networks are blocked by FK until reassigned. It does not point to an alternative tool (e.g. update_infrastructure_feature_class or reassigning networks), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_lifecycle_eventAInspect
Delete a lifecycle strategy event by ID. Projections recompute immediately; consider update with is_active=false to disable instead. Requires infrastructure_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does disclose two non-obvious traits: recomputed projections are an immediate side effect of deletion, and the call requires the infrastructure_lifecycle_events:write scope. It stops short of stating irreversibility or not-found behavior, which are the remaining gaps for a destructive, no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action front-loaded and the cautionary alternative placed before the permission requirement. Every sentence contributes distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no output schema and no annotations, the description covers action, scope requirement, side effect, and the safer alternative. It omits whether the delete is soft or irreversible and what happens when the ID does not exist, which are the only meaningful remaining details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Lifecycle event ID', uuid format), so the schema already documents it fully. The description adds only the words 'by ID' and no format or constraint detail, which matches 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a lifecycle strategy event') plus the lookup key ('by ID'), and it implicitly distinguishes itself from the sibling update_infrastructure_lifecycle_event by naming it as the softer alternative. An agent can tell this apart from the 200+ other delete_* siblings immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not guidance and names the alternative: 'consider update with is_active=false to disable instead.' That is a concrete condition that routes the agent to update_infrastructure_lifecycle_event when it only wants to deactivate, rather than leaving that inference to the model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_los_targetAInspect
Delete an infrastructure LoS target by ID. Networks of that class stop being scored on the metric; past status snapshots are kept. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure LoS target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does useful work: it discloses that networks of that class stop being scored on the metric, past status snapshots are kept, and the operation requires los_targets:write scope. It does not mention irreversibility of the target record itself or error behavior, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, followed by impact and permission requirements. Every sentence carries distinct information, with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity single-ID delete with no output schema, the description covers the essential action, score impact, history retention, and authorization scope. It could be slightly more complete by stating whether the deletion is reversible or what happens on a missing ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in the input schema as the infrastructure LoS target ID. The description only restates 'by ID' without adding format, lookup, or validation meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete an infrastructure LosS target by ID.' An agent can identify the operation clearly, but the description does not explicitly distinguish this tool from similarly named siblings such as delete_system_los_target or delete_los_proposed_target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the consequence of deletion and the required scope, but it does not say when to choose this tool over alternatives or when deletion is inappropriate. No sibling tool is named as an alternative, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_networkAInspect
Delete an infrastructure network by ID. Cascades to all features in the network - confirm with the user before deleting. Requires infrastructure_networks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure network ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses the destructive cascade ('Cascades to all features in the network'), mandates user confirmation, and names the required authorization scope (infrastructure_networks:write). It stops short of stating irreversibility or error behavior when dependent features exist, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses with the action first, then the risk, then the precondition — zero filler and the most consequential information (cascade destruction) is not buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema and no annotations, the definition covers what an agent most needs: scope of destruction, the confirmation requirement, and the auth scope. Remaining gaps (reversibility, failure modes with dependent features) are minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as a UUID-format 'Infrastructure network ID'. The description's 'by ID' adds no syntax, format, or sourcing detail beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an infrastructure network') plus the identifying key ('by ID'). The resource name is precise enough to separate it from the many adjacent delete tools such as delete_infrastructure_zone, delete_infrastructure_feature_class, and delete_infrastructure_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a workflow constraint ('confirm with the user before deleting'), which is genuine guidance, but says nothing about when to prefer this over alternatives (e.g., updating/deactivating a network, or verifying contents with get_infrastructure_network/list_infrastructure_zones first) and offers no when-not conditions. Usage is implied by the verb rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infrastructure_zoneAInspect
Delete an infrastructure zone by ID. Requires infrastructure_zones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required write scope (auth need), but is silent on what deletion destroys, whether related infrastructure assets/network memberships are cascaded or orphaned, and whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, then the scope requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive operation with no annotations or output schema, the definition covers the essential action and authorization requirement. The main remaining gap is the destructive side effects / cascade behavior that no structured field supplies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single required 'id' parameter with 100% schema description coverage, so the schema already documents the UUID format and meaning. 'By ID' in the description adds nothing beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an infrastructure zone') plus the identifier used ('by ID'). The resource name distinguishes it from the many sibling delete_* tools, though it offers no active differentiation or cross-references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the prerequisite scope (infrastructure_zones:write), which is genuine usage context, but says nothing about when to prefer this over update_infrastructure_zone or get_infrastructure_zone, nor any exclusions or preconditions such as dependent assets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_invoiceAInspect
Delete an invoice by ID. Requires invoices:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Invoice ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses the required auth scope (invoices:write), which is beyond the schema. But for a destructive operation it omits whether the delete is permanent or soft, whether it cascades to related records, and what happens if the invoice does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, front-loading the action and resource before the prerequisite. Every part of the text carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity one-parameter tool with full schema coverage and no output schema, the description plus schema cover the mechanical invocation. However, with no annotations, it remains thin on the destructive/permanence characteristics an agent would want before calling a delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (id) with 100% schema description coverage, so the schema fully documents it. The description's "by ID" adds no format or constraint detail beyond the schema's uuid specification, matching the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Delete an invoice") plus the lookup key ("by ID"). This distinguishes it from the many sibling operations on invoices (get_invoice, update_invoice, list_invoices) and from other delete_* tools by resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "Delete an invoice by ID," and a prerequisite is given ("Requires invoices:write scope"). However, there is no explicit guidance on when to delete versus update/void, no when-not conditions, and no named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_locationBInspect
Delete a location by ID. Requires locations:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Location ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a destructive operation. It does disclose the auth requirement (locations:write scope), which is genuinely useful, but says nothing about whether deletion is soft or hard, irreversible, or cascading to dependent records. That is a significant gap for a delete tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the core action front-loaded and the scope requirement following immediately. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with full schema coverage and no output schema, the definition covers the essentials an agent needs to invoke it. But with zero annotations, the destructive nature and irreversibility, which materially affect whether an agent should call it, are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (id) with 100% schema description coverage; the schema already documents it as 'Location ID'. The phrase 'by ID' merely restates the schema, so the baseline of 3 applies per the coverage rule.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (delete) and resource (location) and notes the ID is the target, so the operation is unambiguous. However, it does nothing to differentiate itself from near-identical siblings like delete_location_type or delete_project_location, which is what separates a 4 from a 5 in this crowded family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as update_location or delete_location_type. The only conditional context is the required scope, which is more of a prerequisite than a when-to-use rule. An agent is left to infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_location_typeAInspect
Delete a location type by ID. Requires location_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Location type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the write-scope auth requirement, but omits the traits that matter most for a destructive call: irreversibility, whether the delete fails when location types are still referenced, and whether it is a soft or hard delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the operation stated first and the scope constraint second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, the description is minimally adequate: the agent knows what it does, what it needs, and what to pass. It is missing the failure/dependency behavior an agent would want before issuing a destructive call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented with format uuid and a description, so the schema does the heavy lifting. The description's 'by ID' confirms the identifier but adds no format or constraint detail beyond the schema. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a location type') plus the lookup key ('by ID'), which cleanly separates it from create_location_type, update_location_type, and list_location_types. It stops short of naming siblings explicitly, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a real prerequisite ('Requires location_types:write scope'), which tells the agent when the call will succeed. It gives no guidance on when deletion is appropriate versus updating, nor any warning about dependence on existing locations, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_los_consequenceBInspect
Delete a LoS consequence by ID. Requires los_consequences:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS consequence ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does disclose the required los_consequences:write scope, which is genuinely useful auth context. However, for a destructive operation it omits whether the delete is permanent vs. soft, whether it cascades to related records, and whether it is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, the action and its identifier are front-loaded, and the scope requirement follows immediately. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with a complete schema and no output schema, the essential lookup info plus scope is present, but the absence of any note on deletion permanence/cascading is a real gap for a destructive tool with no annotations to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented as a UUID in the schema. The description only restates that the consequence is identified by ID, adding no format or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (delete a LoS consequence) and the identifier used to select it. It is instantly distinguishable from the create_/update_/get_/list_los_consequence siblings, though it offers no explicit cross-referencing of those relatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g., prefer a soft-delete or update if data must be retained), and no prerequisites beyond the scope line. The agent must infer that this is the tool for removing an existing LoS consequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_los_measureAInspect
Delete a LoS measure by ID. WARNING: This also deletes all associated measurements and targets history. Requires los_measures:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measure ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses the destructive cascade ('also deletes all associated measurements and targets history') and the required authorization scope (los_measures:write). It stops short of stating irreversibility or whether the cascade can be avoided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the action first, then the destructive-side-effect warning and the scope requirement. Nothing is padded and the highest-risk information is not buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema and no annotations, the description supplies the two things that matter most: cascade behavior and required scope. Adding a note that deletion is permanent (and how to obtain the ID, e.g. via list_los_measures) would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 100% schema description coverage ('LoS measure ID', uuid format), so the schema already documents it fully. The description's 'by ID' adds no format, sourcing, or lookup guidance beyond that, making this a baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a LoS measure') plus the identifier mechanism ('by ID'), so the action is unambiguous. It does not differentiate itself from nearby siblings such as delete_los_measurement, delete_los_consequence, or delete_infrastructure_los_target, which an agent working in the LoS domain must distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no prerequisites beyond the scope note, and no exclusions (e.g., what to do about child measurements that should be preserved). The only implied guidance is that a single entity is targeted via its ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_los_measurementBInspect
Delete a LoS measurement by ID. Requires los_measurements:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measurement ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it does disclose one genuinely useful trait: the los_measurements:write scope requirement. It omits the traits that matter most for a delete tool, though — whether deletion is permanent/irreversible, what happens to references, and what errors to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the operation stated first and the scope requirement second. Nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the description covers the essentials (operation, identifier, write scope). It stops short of the extra context a destructive operation benefits from: irreversibility, referential-integrity behavior, and success/failure semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, whose schema entry already documents it as a UUID 'LoS measurement ID'. The description's 'by ID' phrasing restates this rather than adding format, lookup, or validation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (delete a LoS measurement) plus the identifier it operates on, which is unambiguous on its own. However, it does not distinguish itself from siblings such as update_los_measurement, get_los_measurement, or delete_los_measure/delete_infrastructure_los_target, so the agent must rely on the tool name for disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description does not explain, for example, when to delete a measurement versus updating it, or whether dependent records (e.g. LoS targets) block deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_los_proposed_targetCInspect
Delete a LoS proposed target by ID. Requires los_proposed_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS proposed target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. Deleting is destructive and irreversible, but the description says nothing about whether the deletion is permanent, whether it cascades to related records, or whether it can be undone. The only behavioral detail is the required scope, which is useful but far from complete for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource. No wasted words, though the brevity comes at the cost of missing behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, annotation-less tool with no output schema, the description is far too thin. An agent needs to know about irreversibility, permission requirements beyond the scope, and any side effects, none of which are covered. The description meets the bare minimum of identifying the action but leaves critical behavioral information absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented in the schema, so the description adds nothing beyond what is in the structured data. Baseline 3 is appropriate when the schema fully covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (LoS proposed target) with the qualifier 'by ID'. It is distinguishable from the many sibling delete_* tools because the resource name is explicit. It does not, however, differentiate from update_los_proposed_target or get_los_proposed_target beyond the verb, which is sufficient here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites, and no alternatives. It does not say whether the target must be in a certain state, whether related entities are affected, or how this differs from delete_infrastructure_los_target or delete_infrastructure_los_target. An agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_manufacturerBInspect
Delete a manufacturer by ID. Requires manufacturers:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Manufacturer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses the required auth scope (manufacturers:write), which an agent needs to know before calling. However, it says nothing about irreversibility, soft vs hard delete, or effects on parts/assets that reference the manufacturer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the permission requirement. Zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no annotations and no output schema, the description is thin: it omits irreversibility, failure modes (e.g., resource-in-use errors), and what a successful delete returns. The scope note is the only operational detail present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is documented as a UUID in the schema itself. The description's 'by ID' adds no syntax or format meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (manufacturer) with the identifying key (by ID). It does not need to distinguish itself from other delete_* siblings since each names a distinct resource, so 4 is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as update_manufacturer (to modify instead of remove) or list_manufacturers (to resolve an ID). No prerequisites or confirmation flow mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_partAInspect
Delete a part/inventory item by ID. Requires parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required authorization scope ('parts:write'), which is real behavioral context, but says nothing about whether the delete is permanent or reversible, whether associated records (e.g., asset-part links) are cascaded or blocked, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the destructive action is front-loaded ahead of the scope requirement. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required param, no output schema), and the scope note covers the main prerequisite. However, for a destructive operation with no annotations and no output schema, the absence of any permanence/reversibility or cascade-impact statement leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage (the schema already documents 'Part ID' as a uuid), the baseline is 3. The description's 'by ID' merely restates the schema and adds no format, lookup, or constraint detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') plus resource ('a part/inventory item') and the identifier used ('by ID'), so an agent knows exactly what operation it performs. It does not differentiate itself from the other delete_* siblings, though the noun 'part' makes it reasonably self-identifying against delete_part_category and delete_asset_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Delete a part ... by ID. Requires parts:write scope.' establishes the prerequisite but gives no when-to-use guidance, no mention of alternatives such as update_part, and no warning about when deletion is inappropriate. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_part_categoryBInspect
Delete a part category by ID. Requires part_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required part_categories:write scope, but says nothing about irreversibility, whether deletion cascades to parts in the category, or behavior when the ID is referenced elsewhere — critical gaps for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the action is front-loaded before the scope requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete with no output schema, the description covers purpose, identifier, and auth scope. It is minimally adequate but omits destructive-operation context (irreversibility, referential constraints) that a tool without annotations should supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is documented as a UUID 'Part category ID'. The description adds only 'by ID', which mirrors the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete a part category') with the identifier qualifier 'by ID', so the agent knows exactly what it does. It does not explicitly distinguish itself from the many sibling delete_* tools, but the resource name makes it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the clear 'delete' verb and the 'Requires part_categories:write scope' prerequisite, which tells the caller when the call will succeed. However, it gives no when-to-use vs alternatives guidance or exclusions relative to update_part_category or delete_part.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pm_scheduleBInspect
Delete a PM schedule by ID. Requires pm_schedules:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | PM schedule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It goes beyond the schema by disclosing the required pm_schedules:write scope, which is genuinely useful auth context. However, for a destructive mutation it says nothing about irreversibility, cascading effects on related work orders, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the auth constraint. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the definition covers the essentials plus the scope. But a destructive, annotation-free tool would ideally state that the deletion is permanent and what happens to dependent records; that context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one required parameter (id, a UUID). The description's 'by ID' adds nothing the schema doesn't already convey, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (PM schedule) plus the identifier mechanism ('by ID'), so the agent can immediately tell it apart from get_pm_schedule/list_pm_schedules. It does not explicitly differentiate from near siblings like delete_pm_template or delete_compliance_pm_schedule, but the resource name is unambiguous enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use or when-not-to-use guidance, no prerequisites, and no reference to alternatives. It simply states the operation. The only usage-shaped information is the scope requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pm_templateBInspect
Delete a PM template by ID. Requires pm_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | PM template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose an important operational constraint — the required pm_templates:write scope — which is genuine value beyond the schema. However, it says nothing about irreversibility, whether deletion cascades to associated schedules, or failure behavior when the ID is in use, which for a destructive operation is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action and target front-loaded before the permission note. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers the essentials (action, target, required scope) but leaves behavioral risk unaddressed. Adequate as a minimum, but a deletion tool benefits from stating irreversibility or dependency constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the single id parameter is documented as a UUID "PM template ID" in the schema itself. The description only echoes "by ID" and adds no format, source, or lookup guidance, so the baseline of 3 for schema-covered parameters applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Delete a PM template") plus the identifier used ("by ID"), which is unambiguous and clearly distinct from siblings like delete_pm_schedule or update_pm_template. It stops short of explicitly naming a sibling to disambiguate against, but the resource is precise enough that an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., delete_pm_schedule, or whether templates with active schedules can be deleted). The scope requirement is a permission prerequisite, not a usage condition, so it does not compensate for the missing when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectCInspect
Delete a project by ID. Requires projects:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required projects:write scope, but says nothing about whether deletion is permanent, whether it cascades to child resources (tasks, documents, budgets), or whether it can be undone — all critical for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and zero filler. Efficient, though the terse style leaves room for the missing behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, no output schema, and many sub-resource delete siblings, the description should at minimum address permanence and cascade behavior. The permission note is helpful but the definition is not complete enough for an agent to predict consequences of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented as the Project ID. The description's 'by ID' phrase merely restates the schema, adding no format, validation, or lookup guidance beyond structured data, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project) with an identifier qualifier ('by ID'), so the operation is unambiguous. It does not distinguish itself from the many sibling delete_* tools (e.g., delete_project_task, delete_project_document), which the agent must infer from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives such as archiving or deactivating. The only contextual signal is the permission requirement, which is a precondition rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_assetBInspect
Remove an asset from a project by ID. Requires project_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required project_assets:write scope, but says nothing about whether the removal is permanent, whether it cascades to the underlying asset, or what happens if the asset is not attached to the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action stated first and the authorization requirement second, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output-less response, the description covers the essentials of action and permission. However, as a destructive operation with no annotations, it should state irreversibility or side effects to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already describing it as 'Project asset ID'. The description's 'by ID' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove) and resource (an asset from a project), scoped by ID. It is distinguishable from the mass of other delete_* siblings, though it does not explicitly contrast itself with delete_project or delete_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this versus alternatives (e.g. removing the asset entirely via delete_asset, or just unlinking it from the project). The only guidance is the prerequisite scope, which is a precondition rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_budget_itemAInspect
Delete a project budget item by ID. Requires project_budget_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project budget item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the required write scope, which is useful auth context, but it does not describe irreversibility, side effects, or what happens to related data when the item is deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the scope requirement. There is no wasted text and the key information is immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete operation, the description covers the action, identifier, and required scope. However, with no annotations and no output schema, it leaves out destructive-behavior details such as whether the delete is permanent or reversible, which would help an agent act safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter 'id' is already documented as a UUID project budget item ID. The description adds no syntax or format details beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Delete' and a specific resource 'project budget item', plus the lookup key 'by ID'. It clearly distinguishes from siblings like update_project_budget_item, get_project_budget_item, and list_project_budget_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the verb and resource, but it does not explicitly state when to use this tool versus alternatives or when not to use it. The required scope is mentioned, which gives some usage context, but 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.
delete_project_buildingBInspect
Remove a building from a project by ID. Requires project_buildings:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project building ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required project_buildings:write scope, which is beyond the schema. However it does not state irreversibility, cascade behavior on dependent records, or whether removal is soft vs hard — meaningful gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and its identifier, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple single-param delete, but with no annotations and no output schema, the description leaves gaps on destructive semantics (cascades, reversibility) that an agent calling a delete tool would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented uuid parameter, so the schema already covers it. The description's 'by ID' adds no syntax or format detail beyond what the schema provides, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (a building from a project) tied to an ID lookup. It is fairly distinct from siblings like delete_building or delete_project, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as delete_building (deleting the building entity itself) or delete_project_site. The only context offered is the mechanical operation, leaving the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_commentBInspect
Delete a project comment by ID. Requires project_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required scope (project_comments:write), but for a destructive operation it never states whether deletion is permanent or soft, whether existing replies/references are affected, or what happens if the ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste; the core action is front-loaded before the scope requirement. Every sentence earns its place, and the scope constraint is a genuinely useful second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description covers the action and the auth scope. However, it omits the destructive semantics (reversibility, effect on related data) that a delete tool with zero annotation coverage should ideally convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented as a UUID in the schema. The description's 'by ID' merely echoes the schema, so the baseline 3 applies with no added semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (delete a project comment) with the identifier qualifier, which cleanly distinguishes it from update_project_comment, get_project_comment, and list_project_comments. It doesn't explicitly name an alternative, but the resource name does the differentiation work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not-to-use, or alternative routing is provided; the usage is only inferable from the verb. The scope requirement hints at a prerequisite but does not tell the agent when this deletion should be chosen over updating or leaving the comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_cost_snapshotAInspect
Delete a project cost snapshot by ID. Requires project_cost_snapshots:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project cost snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses the required write scope, which the schema does not. However, it says nothing about irreversibility, soft vs. hard deletion, or cascading effects on related project cost records — the most important traits for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and identifier front-loaded and the permission requirement second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with a fully covered schema and no output schema, the description supplies the resource, the identifier, and the auth scope — enough to invoke it correctly. The remaining gap is the consequence of deletion, which is a behavioral rather than structural omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is fully documented in the schema. The description only restates 'by ID' without adding format, sourcing, or lookup guidance (e.g., obtain the ID from list_project_cost_snapshots). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project cost snapshot) plus the identifying mechanism (by ID). An agent can immediately separate it from get_project_cost_snapshot or list_project_cost_snapshots. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite (project_cost_snapshots:write scope), which is genuine usage context, but it never states when to delete versus when to use an alternative (e.g., update_project_cost_snapshot is absent; no mention of list/get to verify the target first). Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_documentBInspect
Delete a project document by ID. Requires project_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required authorization scope ('project_documents:write'), which is valuable context. However, it omits destructive semantics an agent needs — whether the delete is permanent, reversible, or cascades to folders/attachments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action and its precondition are both front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete this covers the essentials (action, key, auth scope), and no output schema means return values need not be described. It still leaves destructive/permanence behavior and failure cases unspecified, which matters for a delete operation with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Project document ID', UUID format), so the schema already documents the input. The description's 'by ID' adds no format, constraint, or example detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('project document') plus the lookup key ('by ID'), so it is distinguishable from create/update/get/list siblings. It does not explicitly name which sibling to prefer, but the name-plus-verb combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance is given. Nothing tells the agent when deletion is appropriate versus updating or archiving a document, beyond the implicit meaning of the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_document_folder_templateBInspect
Delete a project document folder template by ID. Requires project_document_folder_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the required 'project_document_folder_templates:write' scope, which is genuine auth context, but says nothing about irreversibility, whether deletion cascades to existing folders, or what happens on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description covers the auth requirement but omits the destructive/irreversible implications a caller should know before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' param is fully documented in the schema. The description's 'by ID' adds nothing beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project document folder template) plus the identifier used to locate it. The resource name is specific enough to distinguish it from the many other delete_* siblings, though it does not name an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or sibling alternatives are given. The only prerequisite-like information is the required write scope, which is useful but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_infrastructure_assetBInspect
Delete a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required write scope (project_infrastructure_assets:write), which is real added context. However, it does not state whether the delete is irreversible, whether the link is soft- or hard-deleted, or what happens to the associated project/asset records, leaving significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, front-loaded with the operation and followed immediately by the authorization requirement. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the description covers purpose, the identifier, and the auth scope. What it omits are the behavioral facts an agent most needs before a destructive call: irreversibility and side effects on related records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter (Link ID, uuid format). The description's phrasing 'by ID' confirms the identifier semantics but adds no syntax or format detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project ↔ infrastructure feature link), and importantly clarifies it deletes the LINK by ID rather than the underlying project or asset. This distinction is not obvious from the name alone. It stops short of differentiating from similar siblings like delete_project_asset, but the wording is precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternatives (e.g., update_project_infrastructure_asset if only unlinking a specific relationship is intended). Usage must be inferred from the delete verb and the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_locationAInspect
Remove a location from a project by ID. Requires project_locations:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project location ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the required scope ('project_locations:write') and implies a destructive action, but does not explain irreversibility, side effects, or error behavior for a missing ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste, front-loading the core action. Every sentence earns its place by stating the operation and the authorization requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and no output schema, the description is minimally adequate. However, for a destructive operation with no annotations, it omits useful context such as confirmation of deletion, error handling, or idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents its meaning fully. The description adds no parameter-level details beyond restating 'by ID', matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('a location from a project'), clearly distinguishing it from siblings like delete_location or delete_project. An agent can identify the exact operation without examining the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention conditions or exclusions. It only states a prerequisite (required scope), which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_milestoneAInspect
Delete a project milestone by ID. Requires project_milestones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project milestone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It adds useful auth context (requires project_milestones:write scope), but does not state whether the deletion is permanent, cascading, or reversible, nor what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero wasted words. The action and scope requirement are front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-ID delete with no output schema, the description covers the action and required scope. It omits meaningful delete semantics (permanence, cascade behavior) that an agent might need, which is a notable gap given there are no annotations to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single id parameter, so the schema already documents the input. The description's 'by ID' adds no syntax or format detail beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project milestone) plus the lookup key (by ID). It is unambiguous among the many delete_* siblings, though it does not explicitly differentiate itself from them beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies when to use it, and the required scope is stated as a prerequisite. However, there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as update_project_milestone or list_project_milestones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_phaseAInspect
Delete a project phase by ID. Requires project_phases:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project phase ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a required auth scope (project_phases:write), which is genuinely useful. However, it doesn't state whether the deletion is hard/soft, irreversible, cascades to dependent tasks/records, or what happens on failure—all important for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the scope requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, annotation-less mutation with no output schema, the description should disclose more about consequences (irreversibility, side effects, dependent records). The scope note helps but the definition is minimal for the operation's risk profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is one parameter (id, UUID). The description adds no parameter detail beyond 'by ID', which is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (a project phase) and identifies the identifier used (by ID). Among hundreds of siblings, 'delete_project_phase' is unambiguous about the resource it targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (delete the phase whose UUID you have) but provides no explicit when-to-use vs alternatives, nor exclusions or prerequisites beyond the scope requirement. For a destructive sibling set, more routing guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_phase_categoryBInspect
Delete a project phase category by ID. Requires project_phase_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project phase category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the required write scope, which is useful, but omits critical delete semantics such as irreversibility, cascading effects, or whether associated records are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste, front-loading the operation and then the authorization requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with no output schema, the description covers what it does and the required scope. However, it lacks delete-specific risk disclosure such as permanence or dependent-data effects, which is a meaningful gap given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'id' parameter, including its format and meaning. The description only restates 'by ID' without adding any syntax, format, or edge-case semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (delete a project phase category) and identifies the lookup key (by ID). This clearly distinguishes it from sibling tools like list_project_phase_categories, create_project_phase_category, and update_project_phase_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool versus alternatives such as delete_project_phase or update_project_phase_category. The only usage condition given is an authorization scope requirement, which is a prerequisite rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_riskAInspect
Delete a project risk by ID. Requires project_risks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project risk ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does add one genuinely useful behavioral fact: the required project_risks:write scope. However, for a destructive operation it never states that the deletion is permanent/irreversible, whether dependent records cascade or block, or what the tool returns on success versus a missing ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the constraint; every clause earns its place with no padding or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, 100%-documented delete of one record, the essentials are present: what it does, what it needs, and the auth scope. The missing irreversibility note is the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented as a UUID in the schema, so the description's 'by ID' phrasing adds nothing beyond it. Baseline 3 is appropriate when the schema already carries parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete a project risk') and the lookup key ('by ID'), so the operation is unambiguous. It does not, however, distinguish this from the many other delete_project_* siblings, relying on the name alone to do that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_project_risk, list_project_risks, or a bulk deletion path, and no stated prerequisites or warnings about irreversibility. The only contextual cue is the scope requirement, which is an authorization constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_siteBInspect
Remove a site from a project by ID. Requires project_sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add real behavioral context by naming the required permission scope ('project_sites:write'), which the schema cannot express. It nevertheless omits whether removal is reversible, whether related records (assets, work orders) are affected, and what happens if the site is still referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and its target front-loaded before the permission requirement. Nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the description covers what is deleted and the auth scope needed. The remaining gap is the destructive semantics (irreversibility, cascade effects), but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single fully documented 'id' parameter (UUID, 'Project site ID'). The description only echoes this with 'by ID' and adds no format, name-resolution, or lookup guidance beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) plus resource and relationship ('a site from a project'), which is more precise than the bare name. However, it does not distinguish itself from nearby siblings such as delete_site, delete_project, or delete_service_area_site beyond the wording of the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond scope, and never points at an alternative for detaching a site by other means (e.g., update_project_site or delete_project). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_systemBInspect
Remove a system from a project by ID. Requires project_systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does add one meaningful fact: the required project_systems:write scope. However, it says nothing about reversibility, whether dependent records (tasks, cost snapshots, team assignments) are cascaded or orphaned, or whether the operation is idempotent — significant gaps for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the destructive action and its target are front-loaded ahead of the permission requirement. Nothing repeats the schema or pads the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with full schema coverage, the description supplies purpose, target, and the auth scope, which is nearly sufficient. The remaining gap is destructive-operation context — permanence and cascade behavior — which an agent would want before invoking a delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `id` parameter is fully documented as 'Project system ID' with a uuid format, so the schema does the heavy lifting. The description's 'by ID' phrasing adds essentially nothing beyond that, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+identifier: 'Remove a system from a project by ID.' An agent can distinguish it from delete_system (removes a system entity) and delete_project_system_class/group (different resource types) by the 'from a project' qualifier. It does not explicitly name those near-miss siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope, and no mention of alternatives such as using delete_project_system_class or update_project_system for related operations. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_system_classAInspect
Remove a system class from a project by ID. Requires project_system_classes:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It adds the required write scope, which is valuable, but says nothing about whether the deletion is permanent, whether it cascades, or what happens if the ID does not exist or is referenced elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scoped by the auth requirement. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete tool with no annotations and no output schema, the auth scope is a good addition, but irreversibility and failure behavior remain undocumented. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage ('Project system class ID', uuid format). The description adds only 'by ID', so the schema already carries the semantics; baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (a system class from a project) with the identifier ('by ID'), which distinguishes it from delete_system_class (global) and delete_service_area_system_class. However, it doesn't explicitly name those siblings for direct comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Requires project_system_classes:write scope' gives useful auth context, but there is no explicit when-to-use/when-not guidance or routing to a sibling alternative (e.g., delete_system_class for the non-project-scoped variant).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_system_groupBInspect
Remove a system group from a project by ID. Requires project_system_groups:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required auth scope (project_system_groups:write), which is real behavioral value, but omits whether the removal is permanent, whether the group is deleted or merely unlinked from the project, and whether repeated calls are idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first then the auth constraint, with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers purpose and permission scope but leaves the key behavioral question unanswered: does this delete the group or just detach it from the project, and is it reversible? Adequate but with a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already carries the semantics. The description's 'by ID' adds nothing beyond it; baseline 3 applies for a fully documented single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a system group from a project by ID'), and the 'from a project' qualifier implicitly distinguishes it from delete_system_group, which is presumably the org-level counterpart. It doesn't explicitly name that sibling or contrast the two, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus delete_system_group or delete_project_system, and no prerequisites or preconditions beyond the scope requirement. The agent must infer the scoping distinction from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_taskBInspect
Delete a project task by ID. Requires project_tasks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully discloses the required authorization scope ('project_tasks:write'), which is genuinely beyond schema data, but a destructive delete tool should also state irreversibility, cascading effects (e.g., task dependencies), or confirmation expectations – none of which appear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the primary action leads and the scope requirement follows. Efficient, though the scope note could be its own clearly separated clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete-by-id tool with full schema coverage and no output schema, the description covers the essentials. However, with no annotations it leaves the destructive-operation semantics (irreversibility, dependents) unstated, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter at 100% schema description coverage, so the schema already documents 'id' as the project task UUID. The phrase 'by ID' is consistent but adds no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a project task') and how it's targeted ('by ID'), which clearly distinguishes it from the create/update/get/list_project_task siblings. It doesn't explicitly name an alternative, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to use this tool versus alternatives, nor any preconditions beyond a scope note. There is no guidance on confirmation, dependencies, or when a task should not be deleted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_task_dependencyBInspect
Delete a task dependency by ID. Requires project_task_dependencies:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project task dependency ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses the required write scope, but omits whether the delete is permanent/irreversible, whether dependencies cascade, or what happens on a missing ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the core action comes first and the scope requirement second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param mutation with no annotations and no output schema, the description covers the action and auth scope but leaves the destructive semantics and failure behavior unstated, which an agent would want for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% (UUID format documented). The description's 'by ID' framing aligns with the schema and adds no contradiction or confusion, so it is at the expected baseline for a fully documented single param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (task dependency) plus the lookup mechanism (by ID). It is clearly distinguishable from siblings like delete_project_task, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternative tools are named. The intent is inferable from the name, but the description itself offers no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_team_memberAInspect
Remove a team member from a project by ID. Requires project_team_members:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project team member ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a removal operation and that a write scope is required, which is meaningful context, but it omits irreversibility, idempotency, side effects on related records, and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the prerequisite. No filler or redundancy; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-parameter delete tool with no annotations and no output schema, the description covers the action and the required scope but leaves important gaps about permanence, effects, and return behavior. It is minimally sufficient but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter is already documented as 'Project team member ID'. The description's 'by ID' adds no format or usage detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('team member from a project') plus the identifier, which clearly separates it from update/get/list siblings. It does not explicitly name or contrast with those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'Remove' and the description adds a required scope ('project_team_members:write'), which is a useful prerequisite. However, it gives no guidance on when to prefer this over update_project_team_member or how to handle alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_time_entryAInspect
Delete a project time entry by ID. Requires project_time_entries:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project time entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required auth scope (project_time_entries:write), which is real value beyond the schema, but it does not say whether the deletion is permanent or soft, whether it cascades, or what a failed delete returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the action and identifier front-loaded and the auth prerequisite following. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers purpose and permissions, but for a destructive operation with no annotations it omits the durability/reversibility of the delete and any error behavior an agent would want before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema already defines the UUID 'id'. The description's 'by ID' matches the schema without adding format or constraint detail, which is the expected baseline for a fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (project time entry) plus the lookup key (by ID), so an agent can distinguish it from create/update/get/list siblings by name alone. It does not explicitly name the sibling it complements, but the delete semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb: call it when you want to remove a single time entry identified by UUID. There is no explicit when/when-not guidance and no mention of alternatives such as update_project_time_entry for correcting rather than removing an entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_updateBInspect
Delete a project update by ID. Requires project_updates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project update ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add one valuable behavioral fact: the required 'project_updates:write' scope. However, for a destructive operation it omits the most important trait — whether the deletion is permanent/irreversible or whether it cascades — leaving the agent without safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operation is front-loaded and the scope constraint follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with full schema coverage and no output schema, the description covers purpose and auth scope adequately. It falls short on the destructive semantics (permanence, reversibility) that an agent needs when no annotations are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented in the schema as 'Project update ID'. The description's 'by ID' phrasing adds no meaning beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a project update') plus the lookup key ('by ID'), which lets an agent identify the operation unambiguously. It does not, however, differentiate itself from the many other delete_* siblings or explain how it relates to update_project_update/get_project_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of alternative tools. The only contextual hint is the scope requirement, which is a prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_purchase_orderBInspect
Delete a purchase order by ID. Requires purchase_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a real behavioral fact beyond the schema — the required purchase_orders:write scope — but omits irreversibility and whether deleting a PO cascades to its lines and links, which matters for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the scope requirement trailing. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema, the description covers the action, the identifier, and the auth scope. It falls short on the destructive-operation nuances (reversibility, cascade to lines/links) that an agent should know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100%, so the schema already documents 'id' as the purchase order UUID. The description's 'by ID' adds nothing beyond that; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a purchase order') plus the identifier ('by ID'), which distinguishes it from delete_purchase_order_line and delete_purchase_order_link that operate on sub-resources. It does not explicitly name those siblings, but the resource-level 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites, and no pointer to alternatives such as delete_purchase_order_line/link or whether a PO must first be emptied. An agent gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_purchase_order_lineAInspect
Delete a purchase order line item. Requires purchase_orders:write scope. A line with stock received is refused until its quantity_received is set back to 0.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order line ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers two concrete behavioral facts: it requires purchase_orders:write scope and it will refuse deletion when stock has been received. It omits reversibility and cascading effects, but the auth and refusal disclosure is solid value a caller would not otherwise know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: purpose first, then scope requirement, then the operational caveat. Every sentence earns its place and the critical purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with no annotations and no output schema, the description covers purpose, authorization, and the key blocking rule. It is nearly complete, missing only notes on side effects of the deletion itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required id parameter already documented as the purchase order line ID. The description adds no extra meaning to the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a purchase order line item"), which is distinct from its nearest siblings delete_purchase_order and delete_purchase_order_link. It does not, however, explicitly contrast itself with those siblings, so it falls short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an implicit usage constraint via the refusal rule (a line with stock received cannot be deleted until quantity_received is 0), but it never states when to choose this tool over alternatives or any prerequisites for setup. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_purchase_order_linkBInspect
Remove a purchase order link. Requires purchase_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It usefully discloses the required scope ('purchase_orders:write'), which is genuine auth context. But it omits destruction semantics: whether the removal is permanent, reversible, or cascades to related records — significant gaps for a delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first, requirement second, with zero filler. Nothing could be trimmed without losing signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with full schema coverage and no output schema, the description is minimally adequate: it names the action and the scope requirement. It does not address permanence or side effects, which matter for a destructive tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter (Purchase order link ID) is already fully documented. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Remove a purchase order link.' An agent can distinguish it from delete_purchase_order and delete_purchase_order_line by the resource name. However, it does not explicitly contrast with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance is given. Nothing tells the agent whether to unlink versus delete the whole purchase order or line, or under what circumstances a link removal is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_areaAInspect
Delete a service area by ID. WARNING: This also deletes all linked measures, measurements, and junction records. Requires service_areas:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service area ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that linked measures, measurements, and junction records are also destroyed, and that service_areas:write scope is required. It stops short of stating irreversibility or what happens when dependent records are shared with other areas, which keeps it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with zero filler: purpose first, destructive warning second, permission requirement last. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema, the description covers the essentials an agent needs: identity, cascade effects, and authorization scope. It could be marginally better by noting irreversibility or post-delete response behavior, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single 'id' parameter is already documented as a UUID-formatted service area ID. The description only echoes 'by ID' and adds no format, sourcing, or lookup guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a service area by ID'), which is unambiguous and readily separable from siblings like delete_service_area_site and delete_service_area_system_class. The cascade scope is named up front, so an agent knows exactly what it is operating on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive verb and the required service_areas:write scope, but there is no explicit guidance on when to use this versus update_service_area or the more granular delete_service_area_site / delete_service_area_system_class siblings. No exclusions or prerequisites beyond the scope note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_area_siteAInspect
Remove a site link from a service area. Requires service_areas:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service area site link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the mutation nature ('Remove') and the required OAuth scope (service_areas:write), which is useful behavioral context. However, it omits whether the deletion is permanent, what happens to associated records, or any error conditions — gaps that matter for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste, front-loading the core action before the scope requirement. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with no output schema, the description covers the essential action and auth requirement. However, given the absence of annotations and the destructive nature, it should ideally mention irreversibility or side effects; the missing usage guidance also leaves an agent without a clear routing signal among many sibling delete tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is fully documented in the schema as 'Service area site link ID'. The description adds no parameter information beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') and resource ('site link from a service area'), clearly distinguishing it from sibling tools that delete entire service areas or sites. An agent can tell exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives like delete_service_area or delete_site, nor any prerequisites or exclusions. The only contextual note is the required scope, which is a permission requirement rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_service_area_system_classBInspect
Remove a system class link from a service area. Requires service_areas:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service area system class link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required authorization scope (service_areas:write), which is genuine behavioral context for a mutation, but it omits whether the deletion is permanent/irreversible, whether it is idempotent, and what happens on missing IDs. Partial disclosure for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, then the scope requirement. No filler, redundancy, or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete of a join record, the description covers purpose and the key authorization prerequisite, which is sufficient to call it correctly. The only meaningful omission is confirming that the deletion is permanent, which for a destructive tool with no annotations would have been worth a clause.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter and schema description coverage is 100% ('Service area system class link ID'), so the schema already fully documents it. The description adds no extra meaning about the ID format or source, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove a system class link from a service area.' The word 'link' correctly signals this deletes the join/association rather than the underlying system class (delete_system_class) or the service area itself (delete_service_area), which helps disambiguate among the many delete_* siblings. It stops short of naming an alternative tool, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use or when-not-to-use guidance and no comparison to sibling operations. The scope line ('Requires service_areas:write scope') is an authorization note rather than usage context, so an agent gets no help deciding when this tool is the right choice over list_service_area_system_classes or update_*.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_siteBInspect
Delete a site by ID. Requires sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required writable scope, but for a destructive operation it omits critical traits such as irreversibility, cascade effects on related records, and whether a missing ID produces an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and followed by the required scope. There is no filler, and both sentences contribute information useful for invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, one fully documented parameter, and no output schema, the description covers the core action and auth requirement. However, with no annotations and no return schema, it remains incomplete regarding destructive behavior and error semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'id' is documented in the schema as a UUID. The description's 'by ID' adds no meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Delete a site by ID.' It clearly identifies the operation and the key input, though it does not explicitly differentiate the top-level site entity from related delete siblings such as delete_project_site or delete_service_area_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite — 'Requires sites:write scope' — but gives no when-to-use guidance, no when-not-to-use conditions, and no comparison to alternative delete tools. The agent must infer that this tool is for deleting sites and must decide on its own when that is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_systemBInspect
Delete a system by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one trait, the required systems:write scope, but for a destructive operation it says nothing about permanence, reversibility, cascade behavior on related records, or conflict/error conditions on IDs that do not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and target, with the scope requirement stated immediately after. No filler or redundancy, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with full schema coverage and no output schema, the essential calling information is present. However, the absence of annotations means the destructive semantics (permanence, side effects on dependent records) are left entirely unstated, which is a meaningful gap for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the id parameter is documented as a UUID "System ID" in the schema, so the schema already does the work. The description's "by ID" adds nothing beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a system by ID"), so an agent knows exactly what it does. It does not differentiate itself from adjacent siblings such as delete_system_class, delete_system_group, or delete_project_system, leaving the target entity ambiguous to a reader unfamiliar with the hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions or alternatives (e.g., when to prefer update_system or a soft-delete path), and no exclusions. "Requires systems:write scope" is an authorization prerequisite rather than usage guidance, so the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_system_classAInspect
Delete a system class by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add real context by disclosing the required scope ('systems:write'), which goes beyond the schema. But for a destructive tool it omits critical traits: whether deletion is permanent, whether it cascades to dependent systems/LOS targets, and how failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, prerequisite second. Zero filler and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete with no output schema, the description covers the essentials of what and the auth requirement. It is not complete for a destructive operation, though: cascade behavior, referential-integrity constraints, and irreversibility are unaddressed and not covered by any annotation or schema field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (id) with 100% schema description coverage, so the schema already defines it as a UUID system class ID. The description's 'by ID' adds no meaning beyond that; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a system class') plus the identifier used ('by ID'), which lets an agent separate it from delete_system and delete_system_group. It stops short of explicitly naming those siblings, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires systems:write scope' line gives a prerequisite, which is useful selection context. However, there is no guidance on when to delete vs. archive/update, nor any warning about when not to use it (e.g., classes still referenced by systems).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_system_groupBInspect
Delete a system group by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required systems:write scope, but says nothing about whether deletion is permanent, what happens to systems assigned to the group, or failure modes for a bad/nonexistent ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with the action and the prerequisite front-loaded. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the auth-scope disclosure is valuable, but the destructive semantics (permanence, cascade behavior on member systems) are left unstated, which is the key gap an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema already documents the UUID id fully. The description's 'by ID' adds nothing beyond what the schema states; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (system group) plus the identifier used to target it. It does not differentiate itself from the large family of sibling delete_* tools beyond the resource name, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g. update_system_group to modify rather than remove), and no preconditions beyond the scope line. The agent must infer everything about context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_system_los_targetAInspect
Delete a system LoS target by ID. Buildings stop being scored on that system and metric; past status snapshots are kept. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System LoS target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the downstream effect (buildings stop being scored on that system and metric), what survives (past status snapshots are kept), and the required authorization scope (los_targets:write). It stops short of stating whether the deletion is reversible or the exact return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and immediately followed by consequences and permission needs. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the key concerns an agent needs: side effects, data retention, and required scope. Only the reversibility/permanence question is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single documented id parameter, so the schema already explains the input. The description's "by ID" adds nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Delete") and resource ("a system LoS target") with the identifier method ("by ID"). It is distinguishable from adjacent siblings like delete_infrastructure_los_target and delete_los_proposed_target by the resource name, though it does not explicitly call out those distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive verb and the stated consequence, but there is no explicit when-to-use guidance, no when-not-to-use, and no reference to alternatives such as updating the target instead. Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vendorCInspect
Delete a vendor by ID. Requires vendors:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vendor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It adds one useful authorization detail: the vendors:write scope requirement. However, it does not describe the destructive impact, whether deletion is permanent, how dependent records are handled, or what happens if the vendor is in use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The core action is front-loaded, followed immediately by the required scope. This is appropriately sized for a simple destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete operation with no annotations and no output schema, the description should disclose more about consequences, reversibility, and dependency handling. It states the scope requirement but omits the behavioral context an agent needs to avoid destructive mistakes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the id parameter is already fully documented in the schema. The description's phrase 'by ID' adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a vendor by ID.' This clearly distinguishes it from read, create, and update siblings. It does not explicitly differentiate from the one similarly named sibling, delete_vendor_site_assignment, which is a different resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as update_vendor or delete_vendor_site_assignment. The required scope is a prerequisite, not a usage condition. The agent must infer usage from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vendor_site_assignmentAInspect
Remove a vendor-site assignment by ID. Requires vendor_site_assignments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vendor-site assignment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It usefully discloses the required write scope, but for a destructive operation it omits whether the removal is permanent, cascading, or idempotent, leaving key behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the action and include the permission requirement with zero wasted words. The structure is ideal for a simple delete tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-parameter delete tool with full schema coverage and no output schema, the description covers the essential action and authorization requirement. It could be slightly more complete by noting irreversibility or the lack of a meaningful return value, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter is documented as 'Vendor-site assignment ID'. The description merely restates 'by ID', adding no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('vendor-site assignment by ID'), clearly distinguishing it from sibling delete tools for other resources. An agent can identify the operation without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool over alternatives such as delete_vendor, delete_site, or update_vendor_site_assignment. It states a required scope, which is a prerequisite rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_categoryAInspect
Delete a work category by ID. Requires work_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it does disclose one important non-obvious trait: the required work_categories:write scope. However, it omits the traits that matter most for a destructive operation, such as irreversibility, whether related records are affected, and what happens if the ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, followed by the one extra fact an agent needs. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema and no annotations, the description is minimally adequate: it identifies the operation and the auth requirement. It leaves out deletion semantics (irreversibility, cascade/side effects, error behavior) that an agent would need before invoking a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented as a UUID-format work category ID, so the schema already does the work. The description's 'by ID' adds no format, constraint, or sourcing detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and a specific resource (work category), plus the lookup key (by ID). That is enough for an agent to distinguish it from delete_cost_category, delete_part_category, and other delete siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope token, and never mentions the natural alternatives (update_work_category, list_work_categories) or when deletion is inappropriate. The only implied usage is that an ID is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_orderBInspect
Delete a work order by ID. Requires work_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the required work_orders:write scope, which the agent could not otherwise know, but it omits whether deletion is irreversible, whether dependent records (comments, schedules) cascade, and what errors occur for missing or linked records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, and the scope requirement is stated tersely. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema or annotations, the description covers the operation, its identifier, and the auth scope, which is a reasonable minimum. It still leaves out destructive-side effects and failure modes that matter for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents 'id' as a UUID work order ID. The phrase 'by ID' adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Delete) and resource (work order) plus the identifying key (ID), so an agent knows exactly what is removed. It does not explicitly differentiate itself from near siblings like delete_work_order_comment or delete_work_order_schedule, though the resource noun implies the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of alternatives (e.g., archiving vs deleting, or cleaning up dependent comments/schedules first), and no preconditions beyond the scope note. The agent must infer all of this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_order_commentAInspect
Delete a work order comment by ID. Requires work_order_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required permission ('work_order_comments:write scope'), but says nothing about reversibility, whether deletion is permanent or soft, or what happens on a missing/invalid ID. The scope note is a genuine value-add, but key mutation traits are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core action is front-loaded ahead of the permission note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete with no output schema and full schema coverage, the description covers the action and the auth requirement adequately. It could add reversibility/effect detail, but nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter is already documented as 'Work order comment ID' with uuid format. The description's 'by ID' adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a work order comment') plus the identifying key ('by ID'). It is trivially distinguishable from sibling operations like get_work_order_comment, update_work_order_comment, and list_work_order_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The destructive intent is implied by 'Delete' and the required ID parameter, but the description offers no explicit when-to-use framing, no mention of alternatives, and no prerequisites such as confirming the comment exists. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_order_scheduleAInspect
Delete a work order schedule entry by ID (removes the stop from the technician's day). Requires work_order_schedules:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order schedule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the required work_order_schedules:write scope and the operational consequence ('removes the stop from the technician's day'). It stops short of stating irreversibility or whether the removal can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses with zero filler; the core action is front-loaded and the consequence and auth requirement follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no annotations and no output schema, the description covers purpose, user-visible effect, and required scope. The main omission is whether the deletion is permanent/reversible, which matters for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'id' parameter, so the schema already documents it fully. The description only restates that the ID identifies the entry, adding no format or lookup detail beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (work order schedule entry) and clarifies the scope with 'by ID', making it clearly distinct from siblings like delete_work_order, delete_work_order_comment, and delete_work_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name, but there is no explicit guidance on when to delete vs. update/reschedule (e.g., use update_work_order_schedule to move a stop rather than delete it). The parenthetical describes the effect, not when to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_requestAInspect
Delete a work request by ID. Requires work_requests:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work request ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required work_requests:write scope, but omits whether deletion is permanent/irreversible, whether it cascades to related records, or what happens on failure — key traits for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. The destructive action and the auth requirement are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter delete with no output schema, the description covers the action, identifier, and required scope. It is nearly complete, falling short only on irreversibility/cascade behavior that an agent invoking a destructive tool would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as a UUID work request ID. The phrase 'by ID' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (delete a work request) plus the identifying key (by ID). An agent can distinguish it from delete_work_order, get_work_request, update_work_request, and list_work_requests without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The delete verb implies usage, but there is no explicit guidance on when to use this versus update_work_request or list_work_requests, nor any prerequisites beyond the scope note. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetBInspect
Get detailed information about a specific asset by its ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose one genuinely useful behavioral fact: amounts come back as bare numbers without currency. Beyond that it says nothing about failure modes, required permissions, or any other operational trait, so it is only partially transparent for a no-annotation read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and followed by a caveat that earns its place by preventing the agent from misreporting currency. There is no redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter getter with no output schema and no annotations, the description is serviceable but thin: it flags the currency pitfall yet does not characterize the returned payload (fields, nesting) that an agent would otherwise rely on the description to summarize. Adequate, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single 'id' parameter is fully documented as an asset UUID), so the schema does the heavy lifting. The description adds nothing beyond 'by its ID', which is the baseline case for a well-covered single-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get detailed information about a specific asset by its ID'), which is immediately distinguishable from list_assets and from the create/update/delete_asset siblings. It does not, however, differentiate itself from the many get_*_asset-style siblings (e.g. get_infrastructure_asset, get_asset_cost), so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a conditional pointer to another tool ('call get_organization_settings for currency_code before stating one'), but that governs post-retrieval interpretation, not when to choose this tool over alternatives. No guidance on when to prefer list_assets or the more specific get_asset_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_bettermentAInspect
Get a single betterment by ID - one capital improvement on one asset, with its cost, the service life it bought, and its in-service date. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Betterment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and usefully discloses the returned fields and that amounts are bare numbers requiring a separate currency lookup. It does not cover failure behavior, permissions, or rate limits, but it adds meaningful context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first establishes the lookup and returned data, the second delivers the important currency caveat. Nothing is wasted and the key behavioral note is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema, the description is nearly complete by naming the returned fields and the currency dependency. It stops short of explaining missing-ID behavior, but that is a minor omission for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented as a UUID in the schema. The description adds the concept of a single betterment by ID but no additional syntax or format detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieve a single betterment by ID. It also defines what a betterment is and lists the core returned fields, distinguishing it from list_asset_betterments and mutation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies use for fetching one betterment rather than a list, and it gives an explicit cross-tool instruction to call get_organization_settings for currency before presenting amounts. It does not explicitly name when not to use it or point to a list alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_commentBInspect
Get a single asset comment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only restates the operation. It says nothing about error behavior when the ID is absent, permission requirements, or what fields the returned comment contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Every word earns its place, and the operation and key are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record read with full schema coverage the description is minimally adequate, but with no output schema it should say more about what is returned (or note a not-found error path). The gap is modest given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema, so the baseline of 3 applies. The description adds no syntax, format, or constraint detail beyond the schema's 'Asset comment ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and resource ('asset comment') and specifies singular scope ('a single ... by ID'), which implicitly distinguishes it from the sibling list_asset_comments. However, it does not explicitly name the list or mutation siblings, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given, and no alternatives are named. The 'by ID' phrasing implies a direct-lookup use case, but the agent must infer that list_asset_comments is the alternative when the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_condition_assessmentAInspect
Get a single asset condition assessment by ID. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset condition assessment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that condition scores map to named bands and that amounts are unitless currency-less numbers, but says nothing about permissions, error behavior for missing IDs, or response shape beyond the score semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the retrieval action, followed by two interpretation aids. Nothing is padding, though the score-band enumeration is somewhat dense for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the job of explaining return semantics, and it does so for the two most likely-to-be-misread fields (score bands and bare amounts). It is close to complete for a simple single-record getter, though omit permissions and error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema as a UUID. The description adds no syntactic or constraint detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single asset condition assessment by ID') with the retrieval key called out. It distinguishes itself implicitly from list_asset_condition_assessments via 'single ... by ID', but does not name the sibling explicitly, so it falls short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one actionable directive — fetch currency from get_organization_settings before quoting an amount — which is a genuine usage rule. However, there is no guidance on when to use this versus list_asset_condition_assessments or list_assets, so selection context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_costAInspect
Get a single asset cost record by ID - the record type shown on the main AssetLab "Expenses" page. Returns amount, cost_date, category, description, invoice_number, po_number, and related asset, site, building, and work_order. Distinct from get_expense (project-scoped expenses without invoice/PO). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset cost ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so reasonably: it enumerates the returned fields and discloses the important gotcha that amounts are bare numbers requiring a separate settings call for currency. It omits error behavior (e.g., not-found) and any permission notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then return fields, then disambiguation, then the currency caveat. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly compensates by listing returned fields and flagging the currency ambiguity. For a simple single-record read this is nearly complete, only missing error/not-found handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented as a UUID in the schema. The description adds only 'by ID', which is redundant; baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (single asset cost record by ID), and anchors the concept to the 'main AssetLab Expenses page'. It explicitly distinguishes itself from the sibling get_expense, so an agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context via the get_expense contrast (project-scoped, no invoice/PO) and gives an actionable prerequisite (call get_organization_settings for currency_code). It does not, however, address when to use this vs. list_asset_costs or what to do when the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_documentCInspect
Get a single asset document by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the basic operation. It does not state what happens on a missing ID, whether related data is expanded, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriate for a one-parameter lookup tool. It is efficient, though the extreme brevity leaves useful context unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool this is roughly the minimum viable amount of description. With no annotations and no output schema, it would benefit from saying what the document response contains, but the schema alone is enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as an asset document UUID in the schema. The description's 'by ID' phrase simply restates that, adding no new meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a single asset document') and scopes it to ID-based lookup. It does not distinguish itself from nearest siblings like get_infrastructure_asset_document or get_project_document, so an agent must infer which document type applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_asset_documents or the infrastructure/project document variants, and no prerequisites stated. The agent is left to infer that this is the point-lookup counterpart to the listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_lifecycle_eventAInspect
Get a single facility lifecycle strategy event by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one genuinely valuable behavioral trait – amounts are returned as bare numbers with no currency – but says nothing about permissions, error behavior, or the overall shape of the returned event, leaving significant gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the core purpose is front-loaded and the currency caveat follows immediately. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should help convey what comes back. It covers the important currency gotcha but does not describe the returned event's fields or structure, leaving the agent to infer the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already documents it as a UUID-formatted 'Lifecycle event ID'. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (facility lifecycle strategy event) scoped to a single item by ID, which cleanly separates it from the plural list_asset_lifecycle_events. It does not, however, distinguish itself from the near-identical get_infrastructure_lifecycle_event sibling, so the differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by ID' phrasing implies single-record retrieval, and it usefully points to get_organization_settings for currency_code when reporting an amount. That is guidance on interpreting results rather than explicit when-to-use/when-not-to-use or alternative-selection criteria, so it stays at an implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_partBInspect
Get a single asset-part association by ID, including asset and part details.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset-part association ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral burden. It adds useful return-content context ('including asset and part details'), which tells the agent this returns an association plus its related entities, but it discloses nothing about not-found/error behavior or permission requirements for the lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence with the operation and resource front-loaded and zero filler. Nothing can be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter get-by-ID tool with 100% schema coverage and no output schema, the description gives enough to call it correctly and even hints at the return contents. The main omission is any note on failure/empty-result behavior, but overall it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single 'id' parameter already documented as a UUID 'Asset-part association ID', so the schema fully handles parameter meaning. The description's 'by ID' restates rather than extends this, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (asset-part association), and scope (a single one by ID), plus what the response contains (asset and part details). It is clearly distinguishable from list_asset_parts, but it does not explicitly mention the near-identical sibling get_infrastructure_asset_part, which could cause selection ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_asset_parts for bulk retrieval or get_infrastructure_asset_part for the infrastructure variant. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_placementCInspect
Get a single asset placement by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset placement ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, yet it discloses nothing beyond the read verb. It does not state what happens if the ID is not found, whether the read requires specific permissions, or anything about the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. Appropriate length for a trivial lookup, though it is under-specified rather than genuinely concise-by-design.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with a fully-described schema and no output schema, the description is minimally sufficient. The main gap is the absence of any not-found or error behavior, which matters when retrieving by a specific ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the id parameter is fully documented as a UUID asset placement ID — so the schema does the work. The description's 'by ID' adds nothing beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('asset placement') with the lookup key ('by ID'). It does not differentiate from siblings like list_asset_placements or the other ~200 get_* tools, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance. The agent must infer that this is the single-fetch counterpart to list_asset_placements and that ID is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_replacement_planAInspect
Get a single asset replacement plan by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Replacement plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose a genuinely useful trait beyond the schema — amounts are bare numbers with no currency attached — but says nothing about auth requirements, not-found behavior, or response shape for a retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the identity statement front-loaded and the currency caveat immediately after. No filler, no restating of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-record getter with no output schema and no annotations, the currency warning covers the most likely interpretation error. However, nothing is said about the returned plan's structure or what an invalid/unknown ID yields, leaving modest gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single 'id' parameter with 100% schema description coverage and a uuid format, so the schema already fully documents it. The description adds no format or meaning beyond what the schema states; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single asset replacement plan') and pins the retrieval key ('by ID'), which distinguishes it from list_asset_replacement_plans without naming it. Clear but not explicitly differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the when-to-use case (fetching one record by its ID) and adds a concrete prerequisite for any consumer stating a figure: call get_organization_settings for currency_code first. No when-not guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_risk_history_entryBInspect
Get a single asset risk history entry by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Risk history entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description does not mention permissions, not-found behavior, side effects, or any other operational trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It communicates the core operation immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool, the description is minimally adequate. However, with no output schema and no annotations, it omits return shape and error behavior, leaving minor gaps an agent might need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single 'id' parameter is fully documented by the schema as a UUID risk history entry ID. The description's 'by ID' adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('asset risk history entry'), and retrieval scope ('single ... by ID'). An agent can distinguish it from list_asset_risk_history, but the description does not explicitly contrast with the sibling get_infrastructure_asset_risk_history_entry or other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does. It provides no when-to-use guidance, no exclusions, and no alternatives such as list_asset_risk_history when the caller does not already have an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_statusCInspect
Get a single asset status by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset status ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but there is no statement about whether the call can fail (e.g. not-found behavior), what permissions are required, or caching/consistency characteristics. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler, and the resource is front-loaded. It is efficiently structured, though the extreme brevity borders on under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-ID lookup with a fully described one-parameter schema and no output schema, the description is minimally sufficient. It is missing not-found/error behavior and any hint about the shape or fields of an asset status, which an agent would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'id' parameter documented as a UUID-format asset status ID. The description adds only the redundant phrase 'by ID', so the schema does the heavy lifting and score 3 is the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), resource ('asset status'), and scope ('a single ... by ID'), which is unambiguous. However, it does not differentiate itself from the adjacent list_asset_statuses or note that it returns one record versus the collection, beyond the word 'single'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus list_asset_statuses or any other retrieval sibling. The presence of an 'id' parameter implies the caller already has a known ID, but the description never states this condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentCInspect
Get a single attachment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but there is no disclosure of error behavior for unknown IDs, permission requirements, or whether nested content (URLs, metadata) is included. For a no-annotation tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and resource front-loaded and zero filler. It is appropriately sized for a one-parameter lookup, though it is arguably too terse to earn full marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is structurally simple (one required param, no nesting, no output schema), so the thin description is not catastrophic. Still, with no annotations and no output schema, it gives no indication of what an attachment object contains or how failures surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole 'id' parameter (type string, format uuid, documented as 'Attachment ID'), so the schema already carries the semantics. The description adds no format or constraint detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (attachment) scoped to a single record by ID, which distinguishes it from the list_attachments sibling by implication. It does not name any sibling explicitly, but the singular/ID framing makes the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no named alternative (e.g., list_attachments for browsing, get_asset_document for related lookups), and no prerequisites. The 'by ID' phrase implies retrieval by known identifier but nothing is stated about when this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budgetAInspect
Get a single annual funding budget by ID. Use list_sites/list_buildings to resolve site_id/building_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Budget ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses one genuinely useful behavioral trait — amounts are bare numbers with no currency, requiring a separate settings call — but says nothing about permissions, error behavior, or the read-only nature beyond what the 'get' verb implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the purpose front-loaded and no filler. The follow-on sentences each carry distinct value (workflow resolution and the currency quirk). Slightly dense but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully compensates by flagging that amounts lack currency and that the record carries site_id/building_id fields needing resolution. For a single-param read tool this covers the main pitfalls, though return shape and error cases remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter id is fully described in the schema ('Budget ID'), so the schema already does the heavy lifting. The description adds no syntax or format detail for id; the site_id/building_id mentions refer to fields of the returned record rather than this tool's inputs. Baseline 3 applies at 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Get a single annual funding budget by ID.' The word 'single' plus 'by ID' implicitly distinguishes it from list_budgets, and 'annual funding budget' is more specific than the bare tool name. It does not explicitly name the sibling it contrasts with, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Goes beyond basic when-to-use by telling the agent how to complete the workflow: resolve site_id/building_id via list_sites/list_buildings and fetch currency via get_organization_settings. It never explicitly states when to call this vs. list_budgets, but the routing to companion tools is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_orderAInspect
Get a change order by ID, including amount, status, vendor, and linked project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Change order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a genuine behavioral gotcha: amounts are bare numbers with no currency, requiring a follow-up settings call. It says nothing about read-only semantics, permission requirements, or behavior when the ID is not found, leaving meaningful behavioral gaps for a data-fetch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: the purpose and returned fields lead, and the currency caveat follows. No filler, and the most important non-obvious instruction (the currency follow-up) is included rather than omitted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter GET with no output schema and no annotations, the description covers the essentials: what is returned and the currency-interpretation caveat. Missing only secondary detail such as permission requirements or not-found behavior, which is a modest gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented as the change order ID, so the schema does the heavy lifting. The description adds no format, constraint, or lookup detail beyond what the schema states, which is the expected baseline for a fully-covered single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a change order by ID") and enumerates the returned fields (amount, status, vendor, linked project), so the agent knows exactly what it retrieves. It does not explicitly contrast with list_change_orders or update_change_order, but "by ID" is a clear discriminator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent infers this is the single-record fetch versus list_change_orders. The description does give a concrete procedural guideline for a downstream call (fetch get_organization_settings for currency before stating an amount), which is real routing value, but it never states when this tool is the right choice or when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compliance_itemBInspect
Get detailed compliance item including linked PM schedules and their required frequencies.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It usefully discloses that the response embeds linked PM schedules and required frequencies, which is real behavioral detail, but it says nothing about permissions, not-found behavior, or read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope detail about linked schedules arrives immediately. It is appropriately sized for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does double duty and partially compensates by naming key returned data. However, it omits error/not-found handling and sibling differentiation, leaving gaps for a tool in a very large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage ('Compliance item ID', uuid format). The schema already documents it fully, and the description adds no syntax or format meaning beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (compliance item) and adds scope detail about linked PM schedules and their frequencies. This does distinguish it somewhat from get_compliance_pm_schedule and list_compliance_items, though it does not explicitly name siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this fetches one item by UUID versus listing many, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. list_compliance_items / get_compliance_pm_schedule).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compliance_pm_scheduleBInspect
Get one compliance item to PM schedule link by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get one' implies a read of a single record, but it says nothing about permissions, what happens when the ID is not found, or the shape of the returned link object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized for a trivial one-parameter lookup, though it is arguably terse enough to leave gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read with a fully covered schema and no output schema, the description is minimally sufficient. It does not clarify the join/link nature of the entity or route to the list alternative, which would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'id' parameter (format uuid) is already fully documented in the schema. The description's 'by its ID' adds no syntax or format detail beyond that, matching the baseline 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (compliance item to PM schedule link), and scope (one, by ID). It is distinguishable from siblings like get_compliance_item and list_compliance_pm_schedules, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implies the ID-based single-fetch context, but there is no explicit guidance on when to use this versus list_compliance_pm_schedules or get_compliance_item. 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.
get_compliance_recordBInspect
Get a single compliance record by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance record ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions/scope needed, error behavior for a missing ID, or that the operation is a non-mutating read. 'Get' implies read-only, but nothing is disclosed beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, zero-waste sentence that is front-loaded with the verb and resource. It is appropriately sized, though it is terse to the point of omitting any useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool this is minimally viable; the singular fetch semantics are clear. But with no annotations and no output schema, a brief note on what a record contains or how failures surface would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, documenting 'id' as a UUID-format Compliance record ID, so the schema does the heavy lifting. The description's 'by ID' adds no syntax, format, or lookup nuance beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (compliance record) with the singular scope made explicit. It distinguishes itself logically from list_compliance_records, though it never names the sibling. Clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'single' plus the required ID implies you need a known identifier, which tacitly separates it from list tools. However, there is no explicit when-to-use/when-not guidance or named alternative, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contract_documentBInspect
Get a single contract document by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contract document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure; it only implies a read-only fetch via 'Get.' It omits permissions, error behavior when an ID is missing, and any rate-limit or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action, object, and lookup key with no wasted words. It is appropriately sized for a simple get-by-ID tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no output schema and no annotations, the description states the core operation adequately but leaves behavioral and error context unspecified. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the single id parameter documented as a UUID contract document ID. The description's 'by ID' adds no detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('contract document') with a scope qualifier ('single ... by ID'), which implicitly distinguishes it from list_contract_documents and mutation siblings. However, it does not explicitly name the list alternative, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit guidance on when to choose this tool over list_contract_documents or other get_* tools. The 'by ID' wording implies direct retrieval when an ID is known, but no when-to-use or exclusion criteria are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_criticality_modifierBInspect
Get a single criticality modifier override by ID. A tier with no override uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4); a modifier below 1 tightens targets and one above 1 relaxes them.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Criticality modifier ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully explains the modifier semantics (below 1 tightens targets, above 1 relaxes them) and the built-in tier defaults, which is real domain context. However it says nothing about error behavior for a missing ID, auth/permission requirements, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly worded sentences that front-load the core operation, followed by genuinely useful interpretation of modifier values. No filler, though the second sentence is domain color rather than strictly invocation-critical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-fetch tool it covers the essentials and the value semantics, but with no output schema the description should describe the shape of the returned override. Missing error/not-found behavior and return detail leave a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented as a UUID in the schema. The description adds no format or lookup semantics beyond 'by ID', so the baseline 3 for schema-complete params applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Get), resource (criticality modifier override), and scope (single, by ID), so the operation is unambiguous. It does not explicitly differentiate itself from the sibling list_criticality_modifiers or update/delete_criticality_modifier, but the 'single ... by ID' phrasing makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this vs list_criticality_modifiers or update_criticality_modifier, nor any prerequisites. The note about tier defaults describes data semantics rather than when to reach for this tool, so usage must be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_field_definitionBInspect
Get a single custom field definition by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field definition ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not state whether the operation is read-only (though implied by 'Get'), what happens if the ID is not found, or any permission requirements. For a tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action, resource, and scoping constraint directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose and parameter, but with no annotations and no output schema, it is minimal. It does not describe the return format or any error behavior, leaving some gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already fully documented as a UUID. The description adds no additional meaning beyond what the schema provides, which establishes a baseline of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (custom field definition) with the scoping constraint 'by ID'. It is clear enough to distinguish from list_custom_field_definitions and other get_* siblings, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the tool is for retrieving a known definition, which is reasonable context. However, there are no explicit when-to-use or when-not-to-use instructions, and no alternative tool is named, so 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.
get_custom_field_valueCInspect
Get a single custom field value by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field value ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only lookup, what happens on a missing/invalid ID, or anything about the returned payload, despite there being no output schema to fall back on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key qualifier ('single', 'by ID') front-loaded and no wasted words. It is efficiently structured, though extremely terse rather than information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter getter, so the bar is low, but with no output schema and no annotations the description should at least hint at the return shape or error behavior. As written it is minimally adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter and 100% schema description coverage, the schema already documents 'id' as a UUID-format custom field value ID. The description's 'by ID' adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (custom field value) and narrows scope with 'single...by ID', which contrasts with the sibling list_custom_field_values. It stops short of naming that sibling or otherwise differentiating explicitly, so it is clear but not maximally so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the list_custom_field_values alternative, and no prerequisites. An agent can infer retrieval-by-ID from the phrasing, but nothing is stated about when this tool is preferable to a list or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_snapshotAInspect
Get a single dashboard snapshot by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Dashboard snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses a genuinely non-obvious data trait: amounts are bare numbers with no currency attached. That prevents a wrong answer. It leaves out read-safety confirmation (implied by 'Get'), error behavior for an invalid/missing ID, and any surrounding workflow detail, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler. The core retrieval purpose is front-loaded and the currency caveat follows immediately, so every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description rightly compensates by explaining the output's numeric-format quirk and the follow-up call needed to interpret it. For such a simple one-parameter read tool this is largely sufficient, though a note on what to do if the ID is unknown would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented as a UUID 'Dashboard snapshot ID' in the schema, so the baseline of 3 applies. The description adds no parameter-level detail (e.g., where to source the ID) beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope qualifiers ('a single dashboard snapshot by ID'), which cleanly separates it from list_dashboard_snapshots (plural, listed) and get_dashboard_summary (aggregate). An agent can pick 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context by naming the companion call get_organization_settings and the condition under which to make it ('before stating a currency amount'). It does not explicitly state when to prefer this over get_dashboard_summary or how to obtain an ID besides list_dashboard_snapshots, so it falls 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.
get_dashboard_summaryAInspect
Get aggregated dashboard statistics: total assets, work orders by status, overdue count, active PM schedules, sites, and buildings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden; it does disclose the shape of the aggregate output, which is useful. However, it says nothing about scope (org-wide vs. filtered), permissions, freshness/timing of the aggregation, or that it is a read-only non-mutating call, all of which an agent would want to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: the verb and resource lead, followed by a compact list of the aggregated fields. Nothing could be removed without losing information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by enumerating what the summary contains, and with zero parameters the input side needs no explanation. It falls short only on scope and on the relationship to the dashboard-snapshot siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description's enumeration of returned metrics is a bonus rather than parameter semantics, and it creates no confusion about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get aggregated dashboard statistics') and enumerates exactly which metrics come back (assets, work orders by status, overdue, PM schedules, sites, buildings), so the agent knows the payload content. It does not, however, distinguish itself from the closely named siblings get_dashboard_snapshot and list_dashboard_snapshots, which is the main clarity gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite the presence of get_dashboard_snapshot and list_dashboard_snapshots as obvious overlapping siblings. Usage can only be inferred from the word 'summary' in the name, which is weak routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expenseAInspect
Get a project-scoped expense (Project → Costs → Expenses tab) by ID, including amount, date, receipt, and linked project or work order. Does NOT include invoice_number or po_number - those live on asset_costs (the main AssetLab "Expenses" page). Use get_asset_cost for that record type. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Expense ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses excluded fields (invoice_number, po_number), clarifies that amounts are bare numbers with no currency, and prescribes a companion call. It stops short of permissions, error behavior, or not-found semantics, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler, front-loaded on what is returned. The exclusions and currency caveat are placed after the purpose, each earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-ID lookup with no output schema, the description compensates by enumerating returned fields, flagging omitted fields, and explaining the currency pitfall 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as 'Expense ID'. The description adds no format or constraint detail beyond the schema (it does not even restate that the UUID is required), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('project-scoped expense'), plus the UI location it maps to (Project → Costs → Expenses tab). It also explicitly distinguishes itself from the sibling get_asset_cost, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative ('Use get_asset_cost for that record type') and the condition that selects it (invoice_number/po_number fields), and instructs when to call get_organization_settings for currency. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_floorplanBInspect
Get a single floorplan by ID. Returns floor metadata, PDF path, page number, and detection status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the return payload (floor metadata, PDF path, page number, detection status), but omits auth requirements, error/not-found behavior, and what 'detection status' actually means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and no wasted words. It is efficient for a simple getter, though the second sentence could be trimmed or more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required param, no output schema), and the description does mention return contents to partially compensate for the missing output schema. It is adequate but leaves return structure and failure modes underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented in the schema as a UUID. The description's phrase 'by ID' adds no syntax or format detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (floorplan), and scope (a single floorplan by ID), which distinguishes it from the sibling list_floorplans. It does not, however, name any sibling explicitly to route the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no preconditions, and no mention of alternatives such as list_floorplans or get_floorplan_region. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_floorplan_regionBInspect
Get a single floorplan region by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan region ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not clarify read-only safety, error behavior when an ID is not found, authentication needs, or return format. For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. Every word earns its place for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no annotations and no output schema, the description is minimally adequate: it states what the tool does and the lookup key. It lacks any context about what a floorplan region is, how it relates to a floorplan, or error semantics, but these are not strictly required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'id' fully documented as 'Floorplan region ID'. The description's 'by ID' merely restates what the schema already conveys, adding no extra meaning beyond the structured data. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('floorplan region') with clear scope ('single ... by ID'), which distinguishes it from sibling list_floorplan_regions. However, it does not explicitly name alternatives for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no indication of when to prefer list_floorplan_regions or other retrieval tools. The phrase 'by ID' implies you need the ID, but no explicit context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_responseBInspect
Get detailed information about a specific form response by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form response ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, yet it only restates the tool's basic operation. It says nothing about whether the read is safe, what shape the returned data takes (e.g., includes answers, metadata, timestamps), whether it can fail if the ID is invalid, or any rate limits. The schema does not cover behavior either, so this is a notable deficiency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the tool's action and scope without any filler. It is appropriately sized for a simple retrieval operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and no annotations or output schema, the description is minimally adequate but leaves important context gaps. It does not describe what the response includes, when to use it over similar tools, or any behavior such as error conditions. For a tool handling form response data, these omissions make it less than fully helpful, but not critically deficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'id' parameter fully described as a UUID-formatted form response ID. The description adds no further format, example, or constraint details, so it fails to add meaning beyond the schema. Per the rubric, with high schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and resource ('a specific form response by its ID'), and the name matches. It does not, however, differentiate from potential sibling retrieval tools like get_form_response_answer or list_form_responses, leaving some ambiguity about when to use this versus those. The core purpose is nonetheless unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It doesn't mention that this retrieves a single response while list_form_responses retrieves many, nor does it point to get_form_response_answer for answer details. The description passively implies a use case ('by its ID') but offers no explicit conditions or exclusions, which is a major gap among many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_response_answerCInspect
Get detailed information about a specific form response answer by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form response answer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Get' implies a read-only operation, but the description says nothing about permissions, behavior when the ID is not found, or the nature of the returned data beyond the adjective 'detailed'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource and identifier front-loaded and no waste. It is appropriately sized for a trivial lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description leaves the agent guessing about what 'detailed information' actually comprises and how errors are surfaced. It is adequate to identify the tool but incomplete as behavioral documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema coverage; the schema already documents 'id' as the form response answer ID in UUID format. The description's 'by its ID' adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('form response answer') scoped by 'by its ID', which clearly distinguishes it from the sibling list_form_response_answers. It does not explicitly name the alternative, but the retrieval-by-identifier purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and does not mention the sibling list_form_response_answers or get_form_response as alternatives. An agent must infer that this is the single-record lookup versus listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_templateBInspect
Get detailed information about a specific form template by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says it returns 'detailed information' and never states what happens on a missing/invalid ID (error vs empty), whether auth or a specific permission is required, or what 'detailed' covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. Slightly generic phrasing ('detailed information') but appropriately sized for a one-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-param read with no output schema, the description is minimally adequate, but with zero annotations it should at least say whether the response is a full template object or note error behavior on an unknown ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single 'id' param is documented as 'Form template ID' with a uuid format), so the schema does the heavy lifting. The description only echoes 'by its ID', adding no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource+scope: get a specific form template by ID. An agent can distinguish it from the list_ and create_/update_/delete_ form-template siblings, but it does not explicitly differentiate itself from get_form_template_item, which is the closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by its ID' (single-record fetch vs the list_form_templates sibling), but there is no explicit when-to-use or when-not guidance, and no mention of the related get_form_template_item tool that an agent might confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_template_itemBInspect
Get detailed information about a specific form template item by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. The 'Get' verb plus retrieval-by-ID wording makes read-only semantics reasonably inferable, but it says nothing about behavior on a nonexistent/invalid ID, permissions required, or whether nested data is included. Adequate but thin rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized for the simplicity of the tool, though it is terse enough that it could have absorbed a clause of clarifying context at no cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool this is the minimum viable level. With no output schema and no annotations, the description should at least gesture at what 'detailed information' contains or how a missing item behaves, and it does neither.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented 'id' property (uuid format, 'Form template item ID'), so the schema already does the heavy lifting. The description adds only the redundant phrase 'by its ID' and no format or sourcing detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get detailed information) and resource (form template item) scoped to retrieval by ID. It is clear what the tool does, but it does not differentiate itself from its siblings get_form_template and list_form_template_items, leaving the agent to infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g. list_form_template_items for enumeration or get_form_template for the parent entity), and no preconditions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_assetAInspect
Get a single infrastructure asset (feature) by ID. Returns full geometry as GeoJSON plus all attributes. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset (feature) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the return shape (full GeoJSON geometry plus all attributes) plus a genuinely valuable behavioral warning that amounts are bare numbers without currency. It omits error/not-found handling and any permission requirements, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all load-bearing: identity/scope first, return content second, currency caveat last. No redundancy and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly compensates by describing the payload (GeoJSON geometry + attributes). For a single-parameter read tool it is nearly complete; only failure modes (invalid/unknown ID) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented as a UUID in the schema. The description restates 'by ID' but adds no format, scoping, or lookup semantics beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single infrastructure asset (feature) by ID') and uses 'single' to contrast with the list_infrastructure_assets sibling. An agent can distinguish it from create/update/delete_infrastructure_asset and the list variant without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: use when you have an ID and need one asset. It also gives cross-tool guidance ('call get_organization_settings for currency_code before stating one'), which is actionable usage direction. It does not explicitly name list_infrastructure_assets as the alternative when no ID is known, so it's short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_commentBInspect
Get a single infrastructure asset comment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read-only operation, but nothing is said about not-found behavior, permission requirements, or whether a missing ID errors or returns null — significant gaps for a tool with zero structured disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the retrieval key front-loaded and no filler. It is efficient but extremely terse, leaving no room for the behavioral context noted above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers the essentials of what is fetched and by what key. It is minimally viable but silent on failure modes and permissions, which an agent would want for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is already documented as a UUID in the schema. The description's 'by ID' adds no format or semantic detail beyond that, so the baseline 3 for fully-covered schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (infrastructure asset comment) with the retrieval key (by ID). It is clear what the tool does, though it does not explicitly distinguish itself from the near-identical get_asset_comment sibling or from list_infrastructure_asset_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the 'by ID' phrasing — an agent can infer this is the single-record fetch to use after obtaining an ID from list_infrastructure_asset_comments. There is no explicit when-to-use, when-not-to-use, or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_costAInspect
Get a single infrastructure asset cost by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset cost ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely valuable trait: amounts are bare numbers with no currency, requiring a companion call to get_organization_settings. Beyond that it says nothing about auth requirements, error behavior, or response shape, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste; the core purpose is front-loaded and the currency caveat follows as a directly actionable follow-up instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity get with no output schema, the description covers purpose and the one non-obvious data quirk (currency). It stops short of describing the returned fields, but nothing critical to invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'id' parameter (typed uuid), so the schema already documents it. The description adds no syntax or format detail beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (infrastructure asset cost), and scope (single ... by ID), which cleanly separates it from list_infrastructure_asset_costs and get_infrastructure_asset. It does not explicitly name the sibling it is not, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By ID' implies the precondition (you must already have an identifier) and the singular scope implies the alternative is the list tool, but neither the when-to-use condition nor the alternative is stated outright. The currency-handling note is output guidance rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_documentBInspect
Get a single infrastructure asset document by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While 'Get' implies a read-only operation, the description does not state what happens if the ID is not found, whether authentication or permissions are required, or any other behavioral trait beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core operation immediately and is appropriately sized for a simple get-by-ID tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain what a 'document' contains or what the return value looks like. For a simple retrieval tool, the schema covers the input fully, but the lack of any return-value context leaves a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single 'id' parameter is fully documented as 'Infrastructure asset document ID'). The description adds no syntax, format, or meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get a single infrastructure asset document by ID.' This distinguishes it from list or update siblings, but it does not differentiate it from other get_* tools like get_asset_document or get_infrastructure_asset, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use guidance, no prerequisites, and no alternatives. 'By ID' implies you need an identifier, but it doesn't say when to choose this over list_infrastructure_asset_documents or other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_inspectionBInspect
Get a single infrastructure asset inspection by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset inspection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read operation, but does not describe return format, error behavior (e.g., not found), permission requirements, or idempotency beyond the word "Get".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It conveys the essential operation, scope, and key parameter efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-resource fetch, the description is minimally adequate but leaves gaps given no output schema and no annotations. It does not indicate what the returned inspection object contains or how failures are signaled, though those may be inferable from common API patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single id parameter as "Infrastructure asset inspection ID". The description only repeats this meaning and adds no further detail such as format constraints or source of the ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (infrastructure asset inspection), and scope (single by ID). The purpose is clear, but the description does not actively distinguish this tool from sibling tools like list_infrastructure_asset_inspections or update_infrastructure_asset_inspection beyond the identifier in the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as list_infrastructure_asset_inspections. The phrase "by ID" implies a known identifier is required, but no explicit usage conditions, exclusions, or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_partBInspect
Get a single infrastructure asset part association by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset part ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose authorization requirements, error behavior for invalid or missing IDs, or what the returned association includes beyond the basic read operation implied by 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes to identifying the operation and its scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup, the description is minimally sufficient to invoke the tool. However, with no output schema and no annotations, it could reasonably state what the returned association contains or mention common error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage and clearly documents the single UUID parameter. The description adds no meaning beyond 'by ID', so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a precise resource ('infrastructure asset part association'), and the lookup key ('by ID'). This clearly distinguishes it from sibling list tools and from the broader infrastructure asset getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as list_infrastructure_asset_parts or get_infrastructure_asset. The 'by ID' phrasing only implies that a known identifier is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_asset_risk_history_entryAInspect
Get a single infrastructure asset risk history entry by ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset risk history entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It correctly discloses the key trait 'Read-only', but does not mention permissions, error behavior, or whether missing IDs return null versus an error. For a simple read operation this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and the read-only behavior added economically. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity single-resource get with a fully documented ID parameter, the description is nearly sufficient. The absence of an output schema means the return shape is not described, but the tool's obvious retrieval nature keeps this from being a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is already documented in the schema as a UUID. The description adds only the phrase 'by ID', which restates the schema rather than adding format, constraint, or lookup semantics beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), a precise resource (single infrastructure asset risk history entry), and the lookup key (by ID). It clearly distinguishes this single-entry fetch from the sibling list tool (list_infrastructure_asset_risk_history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' combined with 'single' implies the condition under which to use this tool: when you already have the entry ID and need one record, rather than calling the list tool. No explicit alternatives or exclusions are named, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_feature_classAInspect
Get a single infrastructure feature class by its code (e.g. "water_main"). Note: addressed by code, not UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Asset class code (lowercase, snake_case) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. The note that the entity is 'addressed by code, not UUID' is genuinely useful behavioral context that steers identifier selection, but it omits anything about auth, not-found behavior, or return shape for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the resource and identifier convention are front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity read tool with one fully documented parameter and no output schema, the description is largely sufficient. Only minor gaps remain (not-found handling, whether an unknown code errors out).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `code` parameter already documents its format and pattern. The description adds an example ('water_main') and reaffirms the code-not-UUID addressing, but contributes little beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ('Get') and resource ('a single infrastructure feature class'), and it explicitly notes the retrieval is by `code`. It distinguishes cardinality ('single') from the list sibling, but does not name `list_infrastructure_feature_classes` or other get_* siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the singular 'Get a single' phrasing. There is no explicit when-to-use, when-not-to-use, or reference to the list alternative for discovering codes, so an agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_lifecycle_eventAInspect
Get a single lifecycle strategy event by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full disclosure burden. It delivers one non-obvious, valuable detail: amounts are bare numbers with no currency, requiring a call to get_organization_settings. However, it says nothing about the read-only nature, response shape, or what a missing/invalid ID produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the primary action front-loaded and no filler. The currency caveat is the only secondary content and it is genuinely actionable, though it slightly interrupts the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter GET with no output schema and no annotations, the description covers the core action and adds a meaningful cross-tool currency caveat. It is adequate, though a note on what the returned event contains would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single 'id' param documented as a UUID. The description only restates 'by ID' and adds no format or validation meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('a single lifecycle strategy event'), and selector ('by ID'). The word 'single' implicitly distinguishes it from list_infrastructure_lifecycle_events, though it does not name that sibling. Clear and specific overall.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the fetch-by-ID pattern, and it does route the agent to get_organization_settings for currency, but it does not explicitly state when to prefer this over list_infrastructure_lifecycle_events or the similarly-named asset variant. No explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_los_targetAInspect
Get a single infrastructure LoS target by ID. base_target is the base for that feature class and metric, not what any one network is held to (list_infrastructure_los_targets explains the criticality adjustment). All three metrics are 0-100; condition is higher-is-better, fci and asset_past_useful_life_pct lower-is-better. Not money.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure LoS target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds real domain semantics beyond the schema: what base_target represents, that metas metrics are 0-100, higher-is-better vs lower-is-better direction for condition/fci/asset_past_useful_life_pct, and 'Not money.' It stops short of permissions or error/return behavior, so it is not fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler; each contributes either routing or domain interpretation. It is dense but every clause earns its place, though the parenthetical sibling hint is slightly buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description partially compensates by explaining base_target and the metric semantics that the response would contain. It is fairly complete for a single-record getter, lacking only explicit confirmation of read-only/return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single id parameter, so the schema already documents it. The description adds no additional parameter detail (format, source of the ID). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Get a single infrastructure LoS target by ID.' It distinguishes itself from the list sibling by emphasizing single-by-ID retrieval and explicitly references list_infrastructure_los_targets, so an agent can tell them apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: 'by ID' signals single-record lookup versus the list tool. However, the sibling reference to list_infrastructure_los_targets is framed only as an explanation of the criticality adjustment, not as explicit routing ('use list to enumerate, use this to fetch one'). No when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_networkCInspect
Get a single infrastructure network by ID. criticality sets how strictly the network is held to its feature class's Level of Service targets; null is treated as medium.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure network ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely fails: it does not say what the response contains, whether access is permission-gated, or what happens on a missing/invalid ID. The second sentence discusses 'criticality', which reads like return-field semantics but is never framed as such.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded. The second sentence is only marginally useful and, because criticality is not an input here, spends words on something the caller cannot act on when invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and no annotations, the description covers the basic operation but omits return-shape and failure behavior. The dangling criticality reference leaves the caller unsure whether it is an input, an output field, or a constraint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (id) is fully documented in the schema at 100% coverage, so the baseline would be 3. However, the description introduces 'criticality' as if it were a settable input, while the schema has additionalProperties:false and exposes only id — this is confusing rather than clarifying.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single infrastructure network by ID'), which is enough to distinguish it from sibling list_infrastructure_networks and the create/update/delete variants. It stops short of explicitly naming those siblings, so it does not reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to reach for this tool versus list_infrastructure_networks or the infrastructure asset getters. There is no mention of prerequisites, IDs coming from a list call, or any exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infrastructure_zoneBInspect
Get a single infrastructure zone by ID. Boundary is returned as a GeoJSON Polygon.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure zone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose one genuinely useful behavior beyond the schema: the boundary is returned as a GeoJSON Polygon. However, it says nothing about permissions, error behavior for a missing/invalid ID, or read-only safety, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The identification of the tool comes first and the return-format note follows, which is the right ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity read with one fully documented required parameter and no output schema, the description covers the essentials and adds a return-format clue. It is nearly complete, missing only notes on behavior when the ID does not resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is already documented as a UUID. The description's 'by ID' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with a clear scope qualifier ('a single ... by ID'), which implicitly separates it from list_infrastructure_zones. It also names the payload detail (boundary as GeoJSON Polygon). It stops short of explicitly naming the sibling tool it differs from, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, nor are alternatives named. Retrieval context is only implied by 'single ... by ID'. As in the mid-tier calibration case, implied-only guidance without exclusions scores 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceAInspect
Get detailed invoice information including amounts, dates, linked vendor, project, and purchase order. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Invoice ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it partially does so by disclosing a non-obvious data trait: amounts are bare numbers with no currency attached, plus the companion call needed to interpret them. It says nothing about read-only semantics, permissions, error behavior, or missing-record handling, so significant behavioral ground is still uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core capability is front-loaded and the currency caveat is placed immediately after as a follow-on instruction rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully compensates by naming the returned fields (amounts, dates, vendor, project, purchase order). With one simple required param and the currency caveat covered, the definition is nearly complete for a straightforward read tool, though it still omits what happens when the invoice ID is not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the baseline is 3. The description adds no lookup syntax, format, or identifier guidance beyond what the schema already declares.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get detailed invoice information') and enumerates what the payload contains (amounts, dates, linked vendor, project, purchase order), so an agent knows exactly what it gets back. It does not name or contrast itself with the sibling list_invoices, which is what would push it to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete sequencing rule — call get_organization_settings for currency_code before stating a currency — which is genuine guidance, but there is no statement of when to use get_invoice versus list_invoices, nor any precondition or exclusion. Usage is implied by the read-verb pattern rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_consequenceAInspect
Get a single LoS consequence by ID. Advisory only: no notification is sent. scope_ref holds a criticality tier, a system ID or a feature class code depending on scope_type, and is null for global.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS consequence ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does add real value: 'Advisory only: no notification is sent' clarifies the absence of side effects, and the scope_ref note explains a data-shape behavior. It stops short of stating read-only status or permission requirements explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with no wasted words. The 'Advisory only' clause is slightly tangential but still earns its place as a side-effect disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should carry more of the return-value and safety burden. It partially explains scope_ref/scope_type behavior but leaves the rest of the record's contents and any read-permission context unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented in the schema, so the baseline is 3. The scope_ref explanation describes a response field rather than an input parameter, so it does not increase the input-parameter value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single LoS consequence by ID'), and the 'single... by ID' phrasing implicitly distinguishes it from list_los_consequences. It is clear but does not explicitly name the sibling list tool or otherwise differentiate beyond singular/plural.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one record by its ID. There is no statement of when to use this versus list_los_consequences, nor prerequisites or exclusions. Adequate but under-specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_measureAInspect
Get a single LoS measure by ID, including all configuration (targets, data source, weights).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measure ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Get' implies a non-mutating read and the description usefully discloses the return payload (targets, data source, weights), but it says nothing about permissions, error behavior for missing IDs, or whether the read is cached/consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that identifies the resource, the lookup key, and the returned content. Zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record read with one fully documented parameter and no output schema, the description covers the essentials and even previews the returned configuration. Only the absence of any read-safety or error context keeps it from 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is fully documented as a UUID in the schema. The description only restates 'by ID,' adding no format or lookup semantics, so the baseline 3 for a well-covered schema applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (LoS measure) plus the scope qualifier 'single ... by ID,' which implicitly distinguishes it from list_los_measures. It does not name the sibling explicitly, so it falls just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by ID' phrasing implies usage when a specific measure is needed rather than a listing, but there is no explicit when-to-use, when-not, or named alternative (e.g., list_los_measures for discovery). Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_measurementAInspect
Get a single LoS measurement by ID, including value, period, and source metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measurement ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does add value by enumerating the returned content (value, period, source metadata), which is useful since there is no output schema. It is silent, though, on failure behavior for an unknown ID, permission requirements, or whether the read is safe/side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation and its key, then names the payload fields. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema, the description covers the operation, the lookup key, and the shape of the response. The only missing piece is disambiguation from the other LoS getters in the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents the UUID-typed id fully. The phrase "by ID" adds no format or lookup semantics beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (LoS measurement) plus the retrieval key (by ID), which is clear enough for an agent to act on. However, in a sibling set containing get_los_measure, get_los_consequence, and get_los_proposed_target, the description does no work to distinguish this entity from those closely related LoS concepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"By ID" implies this is a direct single-record retrieval as opposed to list_los_measurements, so usage is inferable. But there is no explicit statement of when to prefer this over the list tool or the neighboring get_los_* tools, and no prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_proposed_targetBInspect
Get a single LoS proposed target by ID: measure, year, and target_value (in the measure's own unit, not money) or target_statement.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS proposed target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses a mutual-exclusivity behavior (returns target_value OR target_statement) and a unit caveat (measure's own unit, not money), but says nothing about auth requirements, not-found/error behavior, or other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource, the lookup key, and the salient return fields without waste. With no output schema present, the field enumeration earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with no output schema, the description covers the identifier and the shape of the returned data (measure, year, target_value/target_statement) plus a unit clarification. Only error/not-found behavior is unaddressed, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it. The phrase 'by ID' merely restates the schema and adds no syntax or format detail beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (LoS proposed target) with a clear scope qualifier (single ... by ID), and enumerates the fields returned. It reads as clearly distinct from list_los_proposed_targets by virtue of 'single/by ID', though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of how to obtain a valid ID, and no reference to alternatives such as list_los_proposed_targets. Usage is only implied by 'by ID'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_status_snapshotBInspect
Get a single monthly Level of Service reading by ID. actual is null when there was no data; derived_target is what that facility was held to then, after its criticality was applied. fci and asset_past_useful_life_pct are 0-100 percentages (not fractions), asset_condition_avg is 0-100 and risk_score_avg is 0-25. Not money.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS status snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully explains output semantics—such as actual being null when no data exists, derived_target reflecting criticality-adjusted expectations, and the percentage scales—but does not explicitly state that the operation is read-only, whether permissions are required, or how errors are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action in the first sentence, followed by focused clarifications of return-value semantics. Every sentence adds useful information with no redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get tool with no output schema, the description appropriately explains several key return fields, their nullability, and their numeric ranges. It does not attempt to enumerate every possible returned field, but it covers the non-obvious interpretation details an agent would need to understand the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single id parameter fully documented as a UUID LoS status snapshot ID. The description adds no parameter meaning beyond 'by ID', so the baseline 3 is appropriate when the schema already does this work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get a single monthly Level of Service reading by ID.' The phrase 'single ... by ID' distinguishes it from the sibling list tool list_los_status_snapshots, but it does not name an alternative or clarify its relationship to other get_* LoS tools such as get_los_measurement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use or when-not-to-use guidance. It implies the tool is used when an ID is available, but the schema already mandates the id parameter, and no alternative sibling is mentioned for discovery or fallback scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_los_targets_history_entryAInspect
Get a single LoS targets history entry by ID: the target, minimum and stretch goal a measure was set to on effective_date, in the measure's own unit (not money). History exists from 2026-09-20 onward only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS targets history entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add real behavioral context: the values are in the measure's own unit, not money, and history only exists from 2026-09-20 onward. It still omits auth/permission needs and error behavior for missing IDs, so it is solid but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core purpose and packs return fields, unit caveat, and a date-range constraint without waste. It is efficient, though the multiple clauses slightly strain readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record read with no output schema, the description compensates by explaining which fields come back, the unit of those fields, and the historical coverage window. That is enough for an agent to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the required 'id' parameter (uuid) is already fully documented. The description reinforces that the ID refers to a history entry, but adds no format or lookup detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (a single LoS targets history entry by ID) and enumerates the payload it returns (target, minimum, stretch goal). The word 'single' plus 'by ID' cleanly distinguishes it from the sibling list_los_targets_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you need an entry ID and want one record. There is no explicit when-to-use guidance versus list_los_targets_history or the related los_measure/los_proposed_target getters, and no note on what to do if the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_manufacturerBInspect
Get detailed manufacturer information including contact details and associated system classes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Manufacturer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'Get' implies read-only, and the mention of contact details and system classes hints at returned fields, but it omits permissions, error behavior, and explicit read-only/no-side-effect confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with the verb and resource. Every word contributes to purpose or scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description covers purpose and some return content. However, it lacks usage alternatives and explicit behavioral details to fully compensate for the absence of annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single fully documented 'id' parameter. The description adds no syntax, format, or source guidance for the ID beyond the schema's 'Manufacturer ID', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Get' and resource 'manufacturer information' with scope (contact details, associated system classes). The name and singular 'Get' distinguish it from list_manufacturers, but the description itself does not explicitly differentiate from list/update/delete siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like list_manufacturers or conditions such as needing a known manufacturer ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organization_settingsAInspect
Get this organization's display settings: currency_code (ISO 4217), timezone, date_format, company_name, org_category, and which optional modules are enabled (floorplans, infrastructure, level of service). Call this before presenting any monetary amount - costs, budgets and replacement values returned by every other tool are bare numbers with no currency attached, so stating one without checking risks labelling a Canadian tenant's money as US dollars. Also the fastest way to tell an empty module from one this organization does not have.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a critical cross-tool behavioral trait: every other tool returns bare numbers with no currency attached, so this call is a prerequisite for correct money presentation. It also covers the empty-vs-unlicensed module distinction. It stops short of stating the read-only nature or any permission/auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the returned fields and then the high-value usage warning. Every sentence carries weight, though the closing "fastest way to tell an empty module from one this organization does not have" is slightly compressed and could be clearer about what an empty module looks like.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by enumerating the return fields, and no annotations exist so it supplies the usage rationale. It is nearly complete for a zero-parameter read tool, with only the safety/auth profile left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the schema has nothing to explain and the baseline of 4 applies. The description's field list describes the return payload rather than inputs, which is appropriate given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get this organization's display settings") and enumerates the exact fields returned: currency_code, timezone, date_format, company_name, org_category, and module flags. An agent immediately knows what it retrieves and why the payload matters, with no sibling tool competing for this purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition: "Call this before presenting any monetary amount," with the concrete failure mode (labelling a Canadian tenant's money as US dollars) spelled out. It also names a second use case (distinguishing an empty module from an unlicensed one). No when-not guidance is given, but there is no plausible alternative tool for this data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_partAInspect
Get detailed information about a specific part including location and stock levels. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a genuinely non-obvious behavior: monetary amounts are bare numbers with no currency, requiring a separate call for currency_code. An agent without this would emit wrong output. It omits not-found/error handling, but for a simple read-only getter the currency gotcha is the meaningful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste: purpose first, then the currency caveat. Front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only getter with no output schema, the definition covers what is returned and the one cross-tool dependency that matters for correct output. Only sibling disambiguation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter (id) with 100% schema description coverage, so the schema already documents it as a UUID Part ID. The description adds no additional syntax or semantics for the id beyond what the schema provides, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Get detailed information about a specific part") and enumerates the kind of content returned (location, stock levels), which distinguishes it from the neighboring list_parts. It does not explicitly name a sibling it is not, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (fetch details for a part you already have an ID for), and there is a useful procedural instruction to call get_organization_settings for currency_code. However, there is no explicit when-to-use/when-not framing against list_parts or get_asset_part.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_part_categoryBInspect
Get a single part category by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about permissions, error behavior when the ID does not exist, or return shape. 'Get' implies a safe read, but that is left for the agent to assume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized, though it is so terse that it sacrifices useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage and no output schema, the essentials are present. It nevertheless lacks any note about the response or failure modes, which would matter for an unannotated tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single 'id' parameter documented as a UUID, so the schema already does the heavy lifting. The description's 'by ID' adds no syntax or format detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (part category) scoped to a single item fetched by ID. This contrasts implicitly with list_part_categories/update_part_category, but the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies this is the lookup path when a UUID is known rather than a listing path, but there is no explicit statement of when to prefer it over list_part_categories or search. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pm_scheduleAInspect
Get detailed information about a specific PM schedule including tasks, resources, and linked assets. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | PM schedule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses that monetary amounts are bare numbers with no currency and directs the agent to get_organization_settings for currency_code, which is genuinely useful behavioral context. However, it says nothing about read-only nature, permissions, or error behavior for a missing id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by a formatting caveat. No padding or repetition; every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read with no output schema, the description covers purpose, contents, and the currency-handling caveat, which is enough for correct invocation. It leaves minor gaps (no mention of sibling tools or failure modes) but is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required uuid id already documented in the schema. The description adds no syntax, format, or meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (PM schedule) and enumerates what it includes (tasks, resources, linked assets). It does not name or contrast against the obvious sibling get_compliance_pm_schedule, so it doesn't fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied use: call this to retrieve details for a known PM schedule id. The description adds a useful cross-tool instruction (call get_organization_settings for currency_code before stating one), but never says when to use this versus list_pm_schedules or get_compliance_pm_schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectAInspect
Get detailed project information including budget, progress, schedule variance, and linked sites. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and it usefully discloses that amounts are returned as bare numbers without currency and that a separate settings call is required to interpret them. It stops short of stating read-only semantics or error behavior for an invalid id, but the currency caveat is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: the returned content is front-loaded and the currency caveat follows immediately as an operational note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey the shape of the return, and it does list the key fields. It could go further on how linked sites are represented or what appears when a project is missing, but it is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is fully documented as a UUID in the schema, so the description adds nothing param-specific. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('project') and enumerates the returned facets (budget, progress, schedule variance, linked sites), which distinguishes it from list_projects and the many get_project_* siblings by scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage instruction (fetch currency_code via get_organization_settings before stating monetary values), but never says when to prefer this over alternatives such as list_projects or the granular get_project_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_assetBInspect
Get a single project asset assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read but says nothing about permissions, error behavior for an unknown ID, or what the returned assignment contains, so an agent learns nothing beyond the operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded after the verb. Its brevity is appropriate for a one-parameter lookup, though it undershoots what could be stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial one-parameter read with no annotations and no output schema, this is minimally viable. It leaves the agent without any sense of the return shape or failure modes, but nothing about invoking it correctly is technically missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single 'id' parameter is documented as 'Project asset ID'), and the description's 'by ID' adds no format or lookup detail beyond the schema. This is the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single project asset assignment'), and 'by ID' clarifies the retrieval mode. It is distinguishable from list_project_assets by the word 'single', but it never names siblings or explains how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'by ID' phrasing hints that you must already have an ID, which suggests it is the follow-up to list_project_assets. There is no explicit when-to-use statement, no mention of alternatives, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_budget_itemAInspect
Get a single project budget item by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Budget item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose a non-obvious trait: amounts are bare numbers with no currency attached, requiring a companion lookup. It omits other relevant behavior such as not-found handling or whether the response includes child records, so it is good but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core purpose is front-loaded ahead of the currency caveat. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally sketch the returned fields; instead it covers only the currency pitfall. That single warning is high-value and offsets much of the gap, leaving the definition nearly complete for a simple single-record getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented as a UUID budget item ID, so the description's 'by ID' adds nothing beyond the schema. Baseline 3 is appropriate when structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single project budget item') and pins the retrieval key ('by ID'), which cleanly separates it from the sibling list_project_budget_items and create/update_project_budget_item. An agent can identify 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete conditional instruction: call get_organization_settings for currency_code before stating an amount. That is genuine cross-tool routing guidance. It does not, however, state when to use this versus list_project_budget_items or what to do if the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_buildingBInspect
Get a single project building assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project building ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It conveys only the read intent; it says nothing about behavior on a missing/invalid ID, whether the ID is scoped to a project, permissions, or the shape of the returned assignment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundant clauses. Very terse, but nothing is wasted; the brevity is appropriate given the one-parameter schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-fetch tool with one fully-documented param and no output schema, the description is minimally sufficient to invoke it. It nonetheless leaves the read-vs-list relationship and failure behavior unstated, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema as a UUID. The description's 'by ID' restates rather than extends that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single project building assignment') plus the lookup key ('by ID'). The word 'single' distinguishes it from the sibling list_project_buildings, though that contrast is implicit rather than named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the tool is used when a project building ID is already known, but there is no explicit when-to-use guidance, no conditions, and no sibling (e.g. list_project_buildings for enumeration) named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_commentBInspect
Get a single project comment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether the comment might not be found (404-equivalent behavior), what fields are returned, or any access restrictions. For a read tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste. The purpose is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter read tool with no output schema, but the description is extremely thin. Without annotations and without an output schema, the agent has no idea what the return shape looks like or what happens on failure. Given the complexity is low, a 3 might be tempting, but the complete absence of behavioral or return context in a no-structured-guidance situation leaves it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter with a clear schema description ('Project comment ID' with format uuid). The description adds no syntax or format detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (single project comment by ID). The 'single' qualifier cleanly distinguishes it from the sibling list_project_comments, though it doesn't name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'single' implies retrieval of one record, which hints at when to use it over list_project_comments. However, there is no explicit statement of when to use this versus the list variant, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_cost_snapshotAInspect
Get a single project cost snapshot by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project cost snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers a genuinely non-obvious behavioral trait: returned amounts are bare numbers with no currency, plus the cross-tool instruction to fetch currency_code from get_organization_settings. It does not cover error behavior for a missing ID or any permission requirements, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded and load-bearing: the first gives the operation, the second gives the currency caveat and the corrective action. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter getter with no output schema or annotations, the description covers the critical gotcha (unitless amounts and where to get the currency). It does not describe the snapshot's returned fields or not-found behavior, but the currency guidance is the highest-value gap it could have filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter (typed as a UUID string), so the schema already documents it fully. The description's 'by ID' adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a single project cost snapshot by ID'), which clearly distinguishes it from the bulk list_project_cost_snapshots sibling. It is clear but does not explicitly name the sibling it contrasts with, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by ID' versus the list variant, but the description never states when to prefer this tool over list_project_cost_snapshots or create/delete variants. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_documentCInspect
Get a single project document by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not whether the call is read-only (implied by 'Get' but unstated), what happens when the ID does not exist, or whether document content or only metadata is returned. For a fetch tool with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with verb and resource, with zero filler. It is arguably too terse given the gaps elsewhere, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage and no output schema, the description is minimally adequate to invoke the tool correctly. It leaves open what the response contains and failure behavior, which would be worth one more sentence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented in the schema as 'Project document ID' with uuid format. The description's 'by ID' adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (project document) with the scope qualifier 'single', which distinguishes it from list_project_documents. It does not name or differentiate itself from create/update/delete_project_document siblings, but the operation type is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling list_project_documents tool for retrieving multiple documents. The agent must infer the usage context entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_document_folder_templateBInspect
Get a project document folder template by ID, including its folder structure.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add useful context by stating the response includes the folder structure, which goes beyond the schema. However, for a GET by ID it discloses nothing about auth requirements, what happens on a missing ID, or other behaviors, leaving gaps a low-annotation tool must normally fill.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence with the key detail (folder structure) front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description is nearly complete: it conveys the input (ID) and hints at the return (folder structure). It could say slightly more about the return shape given no output schema exists, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single 'id' parameter is documented as 'Template ID'). The description restates the 'by ID' idea but adds no format or syntax details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get a project document folder template by ID') and even notes what is returned ('including its folder structure'). It is clearly distinguishable from write siblings like create/update/delete_project_document_folder_template, though it does not explicitly point to the alternative list_project_document_folder_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_project_document_folder_templates or the parent template list. The reader must infer that 'by ID' means it is for retrieving a single known template, but nothing states that explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infrastructure_assetCInspect
Get a single project ↔ infrastructure feature link by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project infrastructure asset link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get a single ... by ID' implies a read-only single-record fetch, which is some signal, but there is no mention of return shape, authorization requirements, or behavior when the ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with no padding, and the key identifying information is front-loaded. Nothing extraneous, though there is almost nothing beyond the minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no output schema and no annotations, the description covers the core operation but omits everything an agent might need about the returned link or failure modes. Adequate but thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema as a UUID link ID. The description's 'by ID' adds no meaning beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and a specific resource (a single project ↔ infrastructure feature link) retrieved by ID. The resource is precise enough to distinguish it from create_project_infrastructure_asset or delete_project_infrastructure_asset, though it does not name its list/get siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. It does not tell the agent to prefer list_project_infrastructure_assets for enumeration or explain any prerequisite for having a link ID in hand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_locationAInspect
Get a single project location assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project location ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation, but the description does not mention authentication requirements, error behavior for missing IDs, rate limits, or any other operational trait beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Every element ('Get', 'single', 'project location assignment', 'by ID') contributes directly to identifying the operation and its required input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-parameter retrieval tool with a fully documented schema, the description gives enough information for an agent to call it correctly. It does not describe the returned object, and no output schema exists to compensate, but the resource name makes the expected return reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 100% schema description coverage, so the schema already fully documents the required UUID 'id'. The description only repeats the 'by ID' idea and adds no format, validation, or alternative-key context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a precise resource ('project location assignment'), and scoping conditions ('single', 'by ID'). This distinguishes it from sibling tools like list_project_locations, create_project_location, and delete_project_location without requiring the schema to be opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies that the tool should be used when the caller already has a project location ID, which is a minimal usage condition. However, the description does not explicitly say when to use this tool instead of list_project_locations or other retrieval alternatives, so guidance remains 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.
get_project_milestoneCInspect
Get a single project milestone by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project milestone ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not that this is a read-only operation, not what happens when the ID does not exist, not what permissions are needed, and not what is returned. 'Get' faintly implies read-only, but nothing beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition, which is structurally clean. It is arguably too terse for an environment of this size, but that is a completeness concern rather than verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter, the definition is minimally viable, but with no output schema and no annotations the description should at least sketch the returned milestone or the not-found behavior. It leaves those gaps unfilled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it fully; the description's 'by ID' merely restates it. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Get a single project milestone') and adds a retrieval qualifier ('by ID'). 'Single ... by ID' implicitly separates it from list_project_milestones, but it never names that sibling, so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of the obvious alternative, list_project_milestones, despite hundreds of sibling tools. The only hint is the 'by ID' mechanism, which is a parameter detail rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_phaseBInspect
Get a single project phase by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project phase ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and delivers almost nothing: "Get" implies a read, but there is no statement about error behavior for an unknown ID, permissions/visibility scoping, or what the returned phase contains. Only the read-only implication is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler or repetition. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with a fully documented schema this is minimally adequate, but with no output schema and no annotations the agent learns nothing about the returned shape or failure modes. A short clause on those would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (id, uuid) with 100% schema description coverage, so the schema already documents it fully. The description's "by ID" adds nothing beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a single project phase") and adds the key discriminator "by ID" and "single", which implicitly separates it from list_project_phases. It does not, however, name or reference any sibling tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the alternative list_project_phases for retrieving many phases. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_riskAInspect
Get a single project risk by ID, including mitigation and contingency plans.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project risk ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose meaningful payload content (mitigation and contingency plans are included), which helps an agent decide it has the right tool, but it says nothing about error behavior (e.g. missing ID), permissions, or response shape beyond those fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler; the resource and the notable returned content are both stated efficiently with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with no output schema, the description covers the selector (ID) and highlights the notable returned fields (mitigation and contingency plans), which is adequate. Only error/not-found or authorization behavior is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents the UUID format. The description's 'by ID' merely restates what the schema provides and adds no format or semantic detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (project risk), and scope (single, by ID), which implicitly separates it from list_project_risks and the create/update/delete_project_risk siblings. It is clear and unambiguous, though it does not explicitly name the sibling it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'a single project risk by ID' — an agent can infer this is the fetch-one path versus list_project_risks. However, there is no explicit when-to-use/when-not statement or mention of the alternative list tool, so 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.
get_project_siteBInspect
Get a single project site assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read but never states read-only semantics, nor what happens when the ID does not resolve (error vs empty), nor any permission requirements. For a no-annotation tool this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description never indicates what the returned assignment contains or how it relates to its parent project/site. For a simple one-parameter lookup this is tolerable but leaves the agent guessing about the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single well-documented 'id' parameter (uuid, 'Project site ID'), so the schema already does the work. The description adds only the notion that the ID identifies one assignment, which is baseline-equivalent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single project site assignment') plus the retrieval key ('by ID'), which cleanly separates it from list_project_sites. It does not name any sibling explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the usage context (direct lookup when the identifier is known, versus browsing via list_project_sites), but no when-to-use or when-not-to-use guidance is given and no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_systemCInspect
Get a single project system assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read but never states that this is a non-mutating lookup, nor does it describe behavior for a missing/invalid ID, permissions required, or whether related records are expanded. For a retrieval tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly the source of the gaps elsewhere rather than a deliberate compression of rich content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description adequately conveys the operation and the entity returned, but it omits return shape and error/empty behavior. No output schema exists to cover that burden, so a little more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented as a UUID 'Project system ID'. The description's 'by ID' only echoes this, adding no format, validation, or sourcing details beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (project system assignment) with clear scope (single, by ID), which distinguishes it from the list_project_systems sibling. It does not, however, name any sibling explicitly or clarify how it differs from the adjacent get_project_system_class / get_project_system_group tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus the sibling list_project_systems or the other project-system getters. The 'by ID' phrasing implies a point lookup, but the agent must infer this rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_system_classCInspect
Get a single project system class assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation, but the definition says nothing about error behavior when the ID is not found, required permissions, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words. It is efficient, though its brevity comes at the cost of any additional guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full schema coverage and no output schema, the description is minimally viable. It omits return-shape expectations and failure behavior, but nothing critical blocks a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, so the schema already documents the UUID 'id'. The description's 'by ID' adds no syntax or format detail beyond that, which makes the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get a single project system class assignment by ID.' An agent can tell this apart from list_project_system_classes, though it does not explicitly name the list/create/update/delete siblings that operate on the same entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_project_system_classes or any other sibling. The word 'single' hints at retrieval of one record, but no alternatives or preconditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_system_groupCInspect
Get a single project system group assignment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project system group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it adds nothing beyond the title-level fact that this is a fetch. It does not state read-only safety, what happens on an unknown/invalid ID, or what object shape is returned, all of which an agent would benefit from knowing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is well matched to a simple lookup. It is arguably under-specified rather than verbose, but structurally it is clean and economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with full schema coverage and no output schema, the description is minimally sufficient to call the tool correctly. It leaves out error behavior and any note about the returned assignment shape, which is a modest but real gap given there are no annotations to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented as a UUID 'Project system group ID', so the schema does the heavy lifting. The description only restates 'by ID' and adds no format, scoping, or resolution detail beyond the schema; baseline 3 for a fully-covered one-param schema is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') plus the resource ('a single project system group assignment') and the key ('by ID'), so an agent can distinguish it from the plural list_project_system_groups or the sibling get_project_system_class. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the list_ variant as an alternative, and no stated prerequisite (e.g. that the group must exist or be fetched from a list call first). The single retrieval-by-ID framing implies usage but nothing is made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_taskAInspect
Get a single project task by ID, including cost and hour tracking. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it delivers the single most surprising behavior: amounts are bare numbers with no currency, plus the tool to resolve the currency. It does not cover permission requirements or error behavior for an unknown ID, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: what it returns first, then the currency caveat and its remedy. No filler, no restatement of the tool name, and the actionable warning is placed where it will be read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-resource get with no output schema and no annotations, the description covers purpose, the notable fields returned, and the one non-obvious interpretation trap (currency-less amounts) with the tool needed to resolve it. Nothing else is required to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the single 'id' parameter (Project task ID, uuid format) at 100% coverage, and the description adds only the generic phrase 'by ID'. Baseline 3 applies since the schema already does the work and the description adds no format or lookup nuance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit scope ('Get a single project task by ID'), which cleanly separates it from the sibling list_project_tasks, and adds what the payload contains ('cost and hour tracking'). An agent can pick this over list_project_tasks and update_project_task without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete routing instruction: call get_organization_settings for currency_code before stating an amount, which is a real cross-tool dependency most definitions omit. It stops short of stating when-not to use it (e.g., use list_project_tasks for multiple tasks) or what happens for an invalid/missing ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_task_dependencyCInspect
Get a single project task dependency by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project task dependency ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only fetch, but nothing is said about what happens when the ID is missing, whether permissions/project scoping apply, or what the returned dependency contains. For a 1-param read tool this is thin but not dangerous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb, with zero filler. It is efficient, though its brevity is part of what leaves the gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with a fully documented single parameter and no output schema, the description is minimally sufficient. It stops short of covering failure behavior or scoping, which an agent would need for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as a UUID 'Project task dependency ID'. The description adds no format or sourcing detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('project task dependency') with a clear retrieval scope ('a single ... by ID'). This implicitly separates it from list_project_task_dependencies and create/delete variants, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_project_task_dependencies or the plural fetch patterns in the sibling set. Usage is only inferable from the phrase 'by ID', so the agent gets no explicit conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_team_memberBInspect
Get a single project team member by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project team member ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but permissions, not-found behavior, and return characteristics are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It states the action and lookup key immediately, which is appropriate for a simple get tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter get-by-ID tool, the description is minimally sufficient to invoke correctly. Without an output schema, however, it omits return shape and error behavior, leaving gaps in contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single required 'id' parameter is already documented in the schema. The description adds no detail beyond 'by ID', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('project team member'), and scope ('single ... by ID'), which distinguishes it from list_project_team_members and the create/update/delete siblings. An agent can tell it retrieves exactly one record by identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, alternatives, or exclusions are provided. 'by ID' implies the required lookup input, but the description does not route the agent between this tool and list_project_team_members or other project team member operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_time_entryCInspect
Get a single project time entry by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Time entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It conveys only that this is a fetch operation; nothing is said about what happens when the ID does not exist, whether the call is read-only/safe, permission requirements, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource named first and no redundant filler. It is efficient, though arguably too short to be fully informative rather than deliberately economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial one-parameter lookup with no output schema, the definition is close to adequate but leaves the return shape and not-found behavior unspecified. Given there is no output schema to fall back on, a little more detail would be expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as a UUID time entry ID in the schema itself. The description's 'by ID' aligns with that but adds no syntax, format, or lookup nuance beyond structured data, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Get) plus resource (project time entry) with a scope qualifier ('single ... by ID'). It reads clearly, but does not distinguish itself from the sibling list_project_time_entries beyond the implicit singular/plural split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' weakly implies retrieval when the identifier is already known, but there is no explicit statement of when to use this versus list_project_time_entries or why one would prefer it. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_updateBInspect
Get a single project update by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project update ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read-only fetch, but there is no disclosure of permission requirements, behavior on a missing/invalid ID, or what the returned update contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word (single, by ID) carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema and no annotations, the description is minimally adequate but omits return-shape hints and error/not-found behavior that would help an agent call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% (id: string, uuid, described as 'Project update ID'). The description adds no format or lookup-caveat information beyond the schema, which is the expected baseline when the schema already documents everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb (Get) plus specific resource (project update) and scope (single, by ID). It implicitly distinguishes itself from list_project_updates and update_project_update, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a single project update by ID' implies the retrieval-one-record use case, contrasted with listing, but the description never states when to choose this over list_project_updates or what prerequisites (permissions, valid ID) exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_purchase_orderAInspect
Get detailed purchase order information including amount, status, vendor, and linked project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does disclose a genuinely non-obvious behavioral trait: amounts are bare numbers with no currency, plus the follow-up call needed to interpret them. It does not cover permission requirements or error behavior, but the data-format disclosure is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states what is returned, the second front-loads the most surprising constraint (no currency) and the remedy. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations, so the description must carry the return-value and safety context. It names the returned fields and the currency caveat, which covers the main risk for this simple get; absence of permission/error notes is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id, UUID) and schema description coverage is 100%, so the schema already documents it fully. The description adds no syntax or format detail for the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (purchase order) and enumerates the key fields returned (amount, status, vendor, linked project). Distinguished from get_purchase_order_line and get_purchase_order_link, which fetch sub-resources rather than the order itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies single-item retrieval (versus list_purchase_orders) and, more usefully, gives a concrete workflow rule: call get_organization_settings for currency_code before quoting an amount. It stops short of explicit when-not-to-use exclusions, but the routing for the currency pitfall is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_purchase_order_lineAInspect
Get one purchase order line item by ID. unit_cost is a bare number with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order line ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it adds a genuinely non-obvious behavioral fact: unit_cost is a bare number lacking currency, so the agent must fetch currency_code before stating a value. It still omits error/not-found behavior and auth requirements, so it is above minimum but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the one caveat that matters. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of behavioral context. It flags the key unit_cost currency pitfall but does not describe the returned line-item shape or failure behavior, leaving the agent partially informed for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is fully documented (uuid format, 'Purchase order line ID'), so the schema does the heavy lifting. The description's extra note concerns the unit_cost response field, not the parameter, so it adds nothing to parameter meaning beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with a scope qualifier: 'Get one purchase order line item by ID.' The singular-by-ID framing distinguishes it from list_purchase_order_lines and get_purchase_order without naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this single-fetch tool versus list_purchase_order_lines or get_purchase_order, so selection is only implied by the scope wording. It does route the agent to get_organization_settings for currency_code, which is useful cross-tool guidance but about interpretation, not retrieval choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_purchase_order_linkBInspect
Get one purchase order link by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description does not disclose permissions, error behavior when the ID is not found, or any other operational trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. The core operation is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool, the description is minimally adequate. However, with no annotations and no output schema, it could do more to explain the expected result or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single id parameter is already fully documented in the schema. The description's 'by ID' adds no meaning beyond that schema documentation, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get one purchase order link by ID.' It clearly distinguishes a single-link retrieval from plural list tools like list_purchase_order_links. However, it does not explicitly differentiate itself from adjacent get tools such as get_purchase_order or get_purchase_order_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as list_purchase_order_links or get_purchase_order. It only implies retrieval by ID, with no exclusions, prerequisites, or routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_areaAInspect
Get a single service area by ID, including linked system classes and sites.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service area ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one useful trait beyond the name: the response includes linked system classes and sites. However, it says nothing about error behavior for an unknown ID, required permissions, or that the call is a read-only, side-effect-free operation — gaps that are low-risk for a getter but still undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 13-word sentence with no filler, front-loading the verb, resource, and lookup key. Every clause earns its place, including the payload note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must indicate what comes back, and it does name the linked entities returned. For a one-parameter read tool this is nearly sufficient; only the absence of not-found behavior and any paging/expansion flags keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the single 'id' parameter at 100% coverage, including its uuid format and that it is required, so the baseline is 3. The description's phrase 'by ID' matches but adds no new meaning such as whether the ID is a UUID, a slug, or accepts alternate identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (service area), and scope (single, by ID), which differentiates it from the sibling list_service_areas without naming it explicitly. It also discloses the returned payload (linked system classes and sites), so the agent knows this is a detail-fetch, not a bare lookup. It stops short of explicitly naming the list/update/delete siblings it must be chosen against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by ID' signals a single-record retrieval as opposed to list_service_areas, and the mention of linked system classes and sites hints at why one would fetch it. There is no explicit when-to-use, when-not-to-use, or named alternative, so the agent must infer routing from the name pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_siteAInspect
Get detailed information about a specific site including address and description. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses that monetary amounts are bare numbers with no currency and must be resolved via get_organization_settings — a real behavioral detail not present in the schema. However, nothing is said about permissions or return shape for a read tool lacking an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, purpose front-loaded, followed by the currency caveat. Every sentence carries information, though the currency note is only loosely tied to this tool's core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full schema coverage and no output schema, the description covers purpose plus a meaningful data-interpretation caveat. It is nearly complete; only permissions/return-format context is absent, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'id' parameter already documented as 'Site ID'. The description adds no further parameter semantics, so the baseline of 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (site information) and enumerates the kind of content returned (address and description). 'a specific site' implicitly distinguishes it from list_sites, but no sibling is named, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — fetch one site by id — with no explicit when-to-use/when-not versus list_sites. It does give one concrete cross-tool instruction (call get_organization_settings for currency_code before stating amounts), which lifts it above pure absence of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_fci_history_entryCInspect
Get a single site FCI history entry by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | FCI history entry ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about what happens when the ID is unknown, whether results are paginated or cached, or what permissions are needed for this FCI history resource.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is appropriately terse for a one-parameter lookup, though it is so minimal that it borders on under-specification rather than efficient concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with full schema coverage and no output schema, the description is minimally sufficient. It still omits error/not-found behavior and any relationship to the list tool that produces these IDs, which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single uuid id is documented as 'FCI history entry ID'), so the baseline of 3 applies. The description's 'by ID' restates the schema without adding format or behavior detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single site FCI history entry by ID'), and the word 'single' implicitly contrasts with the list_site_fci_history sibling. However, it never names that sibling or any other alternative, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_site_fci_history or the other history-entry getters. 'By ID' hints that an existing identifier is required, but that is the schema's job, not real usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_los_targetAInspect
Get a single system LoS target by ID. base_target is the organization-wide base for that system and metric, not what any one building is held to (list_system_los_targets explains the criticality adjustment). fci, asset_condition_avg and asset_past_useful_life_pct are 0-100 and risk_score_avg is 0-25; condition is higher-is-better, the others lower-is-better. Not money.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System LoS target ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it explains that base_target is organization-wide and not building-level, and that the criticality adjustment lives in the sibling tool. It doesn't cover auth or rate limits, but it discloses the key interpretive behavior of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then field semantics packed into two tight sentences. 'Not money' is terse but earns its place as a disambiguation. Slightly dense but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return semantics and it does: field scales (0-100, 0-25), direction (higher/lower-is-better), and the money caveat. Missing only safety/permission context, which is minor for a single-record read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id) and schema coverage is 100%, so the schema already defines it. The description's 'by ID' adds nothing beyond the schema, which is the expected baseline here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), a single resource (a system LoS target), and the retrieval key (by ID). The word 'single' distinguishes it cleanly from the sibling list_system_los_targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It references list_system_los_targets, but only as a pointer for the criticality-adjustment explanation rather than as a when-to-use alternative or exclusion. Usage is implied (single lookup by ID) rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userAInspect
Get a specific organization member by their user ID. Returns name, email, and role. Requires users:read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User ID (Clerk user ID string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required auth scope (users:read) and the returned fields, which is real added context. It does not cover failure behavior (e.g., unknown ID) or any permission nuances beyond the scope name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, followed by return values and the auth requirement. No filler; each sentence adds information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers purpose, return fields, and required scope. It stops short of error/not-found behavior, but otherwise gives an agent enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented as a Clerk user ID string. The description's 'by their user ID' matches the schema without adding format or syntax 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (organization member) and scopes it to a single record via 'by their user ID', which implicitly contrasts with list_users. It does not explicitly name the sibling it differs from, so it falls short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'a specific organization member by their user ID' signals you need an ID in hand and want one record rather than a list. There is no explicit when-to-use, when-not-to-use, or named alternative such as list_users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vendorAInspect
Get detailed vendor information including contact details, address, and website.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vendor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the shape of the returned data (contact details, address, website), which is useful since there is no output schema, but it omits error/not-found behavior, permission requirements, and whether the lookup is a pure read. Adequate but incomplete for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The verb and resource come first and the returned fields follow, so nothing needs reordering or trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description usefully previews what a vendor record contains, which compensates for the missing return schema. It is only minorly incomplete in not addressing not-found/permission behavior or its relationship to list_vendors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ('id', UUID), and schema description coverage is 100%, so the schema already documents it fully. The description adds no format or constraint detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get a vendor) and enumerates the returned content (contact details, address, website), which distinguishes it from mutation siblings like create_vendor/update_vendor. However it does not explicitly differentiate from the read sibling list_vendors, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the UUID 'id' parameter signals a single-record lookup by identifier, so an agent can infer it fetches one vendor rather than listing them. There is no explicit when-to-use/when-not guidance and no mention of list_vendors as the alternative for multi-record retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vendor_site_assignmentAInspect
Get a single vendor site assignment by ID, including vendor and site names.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vendor site assignment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It discloses that the response includes vendor and site names, which is genuinely useful since there is no output schema, but it says nothing about authorization requirements, error behavior for unknown IDs, or what happens with soft-deleted assignments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the ID lookup are stated before the return-value note. It is appropriately sized for a trivial one-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record read with one fully documented parameter and no output schema, the description covers what the tool does and hints at the returned fields. Nothing critical is missing for correct invocation, though it is not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented as a UUID, so the baseline is 3. The description reinforces that the ID identifies a vendor site assignment but adds no format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (vendor site assignment) scoped to a single record by ID, which cleanly distinguishes it from list_vendor_site_assignments. It does not explicitly name or contrast with that sibling, but the 'single ... by ID' phrasing makes the fetch-one intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' and 'a single' implies this is the lookup path when an ID is known versus browsing with a list tool, but no alternative (e.g., list_vendor_site_assignments) is named and no prerequisites or conditions are given. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_orderAInspect
Get detailed information about a specific work order by its ID, including description, dates, costs, and completion details. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a non-obvious output trait: monetary amounts carry no currency, which materially affects how the agent reports results. It omits permission/auth requirements and error behavior, but for an implied safe read tool with a single key, this is a solid addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The core purpose is front-loaded and the currency caveat follows as a dependency the agent needs before presenting results.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the returned content and flagging the currency gap. For a one-parameter read tool this is nearly sufficient; only auth/permission and not-found behavior go unmentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter (uuid), so the schema already documents it fully. The description restates the lookup key ('by its ID') without adding format or constraint detail, matching the baseline-3 case where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get detailed information about a specific work order by its ID') and enumerates the payload ('description, dates, costs, and completion details'), which is well beyond a tautology. It does not explicitly contrast itself with siblings like list_work_orders or get_work_order_comment, but the resource-named verb makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for a necessary follow-up call: amounts are bare numbers, so get_organization_settings must be consulted for currency_code before stating a value. It doesn't state when to prefer this over list_work_orders, but the single-ID scoping makes the alternative implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_order_commentBInspect
Get a single work order comment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about permissions, not-found/error behavior, or what the call returns; the description adds no context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single nine-word sentence with zero filler, front-loading the action and resource immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial one-parameter read tool with full schema coverage, the description is nearly sufficient. There is no output schema, so a hint about what the comment record contains would have added marginal value, but little is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter (UUID, 'Work order comment ID') is fully documented in the schema. The description's 'by ID' adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('work order comment') with a scoping qualifier ('single ... by ID'). This implicitly distinguishes it from the sibling list_work_order_comments, but the differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_work_order_comments or get_work_order. The 'by ID' phrasing hints at single-record retrieval, but there is no explicit when/when-not or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_order_scheduleAInspect
Get a single work order schedule entry by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order schedule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Get' plus 'single ... entry' does convey a read-only, single-record retrieval, but it says nothing about authorization requirements, behavior on a missing/invalid UUID, or that the entity may be absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the resource and the lookup key front-loaded. Zero filler and nothing that could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup with a fully described schema, no nested objects, and no output schema to explain, the description is sufficient to invoke the tool correctly. It only omits edge-case behavior such as what a missing record returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented as 'Work order schedule ID' with a uuid format. The description's 'by ID' adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single work order schedule entry') and scopes it with 'by ID', which cleanly separates it from the list_work_order_schedules sibling. It does not name that sibling explicitly, but the singular/ID framing leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by ID' signals this is for a known single record versus the list sibling. There is no explicit when-to-use statement, no mention of what to do if the ID is unknown, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_requestCInspect
Get detailed work request information including description, attachments, and processing status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work request ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It hints at read semantics through 'Get' and discloses that attachments and processing status are included, but says nothing about permission requirements, behavior on a missing/invalid id, or whether the payload is paginated or nested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but it is arguably undersized for a retrieval tool with no annotations, cramming purpose and return content into one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey return content; it partially does by naming description, attachments, and processing status. It still omits error and permission behavior, leaving an agent with an incomplete picture of the call's outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema as a UUID work request ID. The description adds nothing about the identifier, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get detailed work request information') and enumerates what the payload contains (description, attachments, processing status). However, it does not distinguish itself from the sibling list_work_requests or get_work_order, which an agent scanning a very large sibling set may confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_work_requests for discovery or update_work_request for mutation. There is no mention of prerequisites such as needing a known UUID, which matters because the only parameter is a required id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_bettermentsAInspect
List betterments - capital work that extended a facility asset's life, such as an elevator modernization or a boiler retube. Each records what the work cost (capitalized_amount), how much service life it bought (added_life_years), and when it went into service (occurred_on). A betterment re-bases the asset's depreciation from its own date and never changes the asset's original in-service date. Filter by asset_id, project_id or work_order_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by the project that delivered it | |
| work_order_id | No | Filter by the work order that delivered it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral load and delivers real domain semantics: a betterment re-bases depreciation from its own date and never alters the asset's original in-service date. It also warns amounts are bare numbers with no currency. It stops short of stating read/pagination behavior, but the substantive behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the definition and examples, then field meanings, then semantics, then filters, ending with the currency caveat. Every sentence contributes; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies the key recorded fields (capitalized_amount, added_life_years, occurred_on), domain semantics, and a currency warning, which is enough for correct invocation. Only a fuller picture of the return shape is absent, which is minor for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including their formats and defaults. The description echoes the three filter params (asset_id, project_id, work_order_id) without adding syntax beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (betterments), then defines the domain concept ('capital work that extended a facility asset's life') with concrete examples (elevator modernization, boiler retube). This clearly distinguishes it from neighboring tools like list_asset_costs and list_asset_lifecycle_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the filterable inputs (asset_id, project_id, work_order_id) and adds cross-tool guidance to call get_organization_settings for currency_code before quoting amounts. It lacks explicit when-not-to-use or named alternatives, but the context for use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_commentsBInspect
List comments on assets. Filter by asset_id to get comments for a specific asset.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It omits ordering, return shape, and — most importantly — the automatic all-pages fetch behavior that the schema hints at, so an agent cannot tell whether it needs to paginate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler. It is efficient, though the second sentence largely restates what the parameter name already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no output schema, the description is minimally adequate: it names the resource and the filter. It still leaves the automatic multi-page fetch semantics unmentioned, which is the one behavioral quirk an agent would need to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, and asset_id are already fully documented, setting the baseline at 3. The description restates asset_id's filtering purpose but adds no format or default-value detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List comments on assets') and clarifies the filtering behavior via asset_id. However, it does nothing to distinguish itself from the near-identical sibling list_infrastructure_asset_comments, leaving the agent to infer which resource each targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies usage: omit asset_id to list all comments, supply it to scope to one asset. But it offers no guidance versus alternatives like get_asset_comment (single comment) or the infrastructure-asset variant, so the routing decision 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.
list_asset_condition_assessmentsAInspect
List point-in-time condition assessments recorded against assets. Filter by asset, assessor, method, condition score range, or assessment date range. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| method | No | Filter by method (visual | detailed | vendor) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| assessor_id | No | Filter by assessor user ID | |
| condition_max | No | Maximum condition score (0-100) | |
| condition_min | No | Minimum condition score (0-100) | |
| assessed_on_to | No | Filter assessments on/before this date (YYYY-MM-DD) | |
| assessed_on_from | No | Filter assessments on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description must carry the behavioral burden, and it does disclose real traits: point-in-time semantics, the 0-100 score banding so results can be interpreted, and the crucial caveat that amounts are bare numbers requiring get_organization_settings for currency_code. It does not state auth requirements or result ordering/limits, but the disclosure goes well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose then filters then the score/currency caveats. The banding enumeration is longer than the rest but it is the most decision-relevant content and is worth the space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-annotation, no-output-schema list tool, it covers filters, value interpretation, currency handling, and (via schema) pagination behavior. Return shape is not described, but the essential call-time context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% so baseline would be 3, but the description adds interpretive meaning for the score parameters (the 0-100 scale with its five bands) and clarifies the filter axes (asset, assessor, method, score range, date range) beyond the schema's per-field strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List point-in-time condition assessments recorded against assets') with enough scope detail to separate it from list_assets and from get_asset_condition_assessment. An agent can identify the object of the call immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the available filter dimensions, which implies the usage context (browse/filter the assessment collection), but never states when to prefer this over get_asset_condition_assessment or list_assets, nor any exclusions. The currency instruction is cross-tool guidance rather than when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_costsAInspect
List asset cost records - this is what the AssetLab UI shows on the main "Expenses" page (top-level nav). Each record includes amount, cost_date, category (Repair, PM, Operation, Replacement, Decommission, Other), description, invoice_number, po_number, and links to asset/site/building/work_order. Distinct from list_expenses, which returns project-scoped expenses without invoice/PO fields. Filter by asset, site, category, or work order. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| asset_id | No | Filter by asset ID | |
| category | No | Filter by cost category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| work_order_id | No | Filter by work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses the exact field set returned and warns that amounts are bare numbers with no currency, which is a real behavioral caveat. It omits any statement of permissions or read-only semantics, but the 'List' verb and currency caveat make it substantially better than a bare listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then differentiates from the sibling, then lists filters, then the currency caveat. Dense but every clause is useful; the UI-page reference ('main Expenses page') is the only slightly expendable bit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description rightly enumerates returned fields; no annotations exist, so the currency caveat is included. It covers the essentials for a read-only list tool, though it says nothing about result size or ordering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description recaps the filter dimensions (asset, site, category, work order) but adds no syntax or semantics beyond what the schema documents, and its category list even includes 'Other' while the schema enum omits it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List asset cost records'), enumerates the returned fields, and explicitly names and distinguishes the sibling list_expenses ('returns project-scoped expenses without invoice/PO fields'). An agent can separate the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (list_expenses) and the differentiator (project-scoped, no invoice/PO), and tells the agent to call get_organization_settings before stating currency. It doesn't state explicit when-not conditions, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_documentsBInspect
List asset documents (O&M manuals, warranties, specs, etc.). Filter by asset_id or category.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| asset_id | No | Filter by asset ID | |
| category | No | Filter by document category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only operation, how pagination resolves (the schema hints at auto-fetching all pages), or anything about result ordering or limits; 'List' weakly implies read-only but nothing is confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no wasted words. The parenthetical examples are informative rather than filler, though the second sentence is slightly redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with full schema coverage and no output schema, the description is minimally sufficient. It omits pagination behavior and any disambiguation from the parallel infrastructure-asset document listing tool, which are the main completeness gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents asset_id, category, search, page, and per_page. The description only echoes the asset_id and category filters and adds no syntax, defaults, or enum detail beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list asset documents) and clarifies scope with concrete examples (O&M manuals, warranties, specs). It does not, however, distinguish itself from the near-identical sibling list_infrastructure_asset_documents, so an agent must infer the asset-vs-infrastructure-asset boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Filter by asset_id or category' implies the intended usage, but there is no explicit when-to-use guidance, no exclusion criteria, and no pointer to the analogous infrastructure-asset sibling. 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.
list_asset_lifecycle_eventsAInspect
List facility lifecycle strategy events - condition-triggered maintenance/rehabilitation events keyed on an asset-type scope (exactly one of asset_type_id or asset_type_group_id), never on individual assets. The events sharing one scope form that scope's strategy; an asset resolves its type's own strategy first, else its type group's. Filter by asset_type_id, asset_type_group_id, event_class, or is_active. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active ("true") vs disabled ("false") events | |
| event_class | No | Filter by event type | |
| asset_type_id | No | Filter by asset type ID | |
| asset_type_group_id | No | Filter by asset type group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the scope-keying rule ('exactly one of asset_type_id or asset_type_group_id, never on individual assets'), the strategy-resolution precedence, and a non-obvious currency caveat (amounts are bare numbers; call get_organization_settings for currency_code). It does not cover pagination behavior, but the schema documents that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb+resource, then dense but purposeful domain context. The final currency sentence is somewhat tangential to listing but is actionable guidance an agent needs when reporting amounts, so it earns its place; overall compact with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, no-output-schema, no-annotation read tool with a genuinely intricate domain (strategy resolution across asset types and groups), the description is thorough about the model, filters, and currency handling. The one material gap is disambiguation from list_infrastructure_lifecycle_events and get_asset_lifecycle_event.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), and the description adds real meaning beyond the schema: the 'exactly one of asset_type_id or asset_type_group_id' constraint is not encoded in the schema (both are optional), and the filter list plus currency note add semantic context for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List facility lifecycle strategy events') and then defines what those events are (condition-triggered maintenance/rehabilitation keyed on an asset-type scope). It fails to distinguish itself from the near-identical sibling list_infrastructure_lifecycle_events or from get_asset_lifecycle_event, so an agent must still infer scope from the 'facility' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the data model (events keyed on asset-type scope, never individual assets; resolution order type-first-then-group) which implies when this tool is relevant, but it never states when to use this versus list_infrastructure_lifecycle_events or get_asset_lifecycle_event, and gives no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_partsAInspect
List parts associated with assets. Filter by asset_id to get all parts for one asset, or by part_id to see all assets using a specific part.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| part_id | No | Filter by part ID | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' implies a safe read, but the description says nothing about whether the two filters can be combined, result ordering, or that geographies can be paginated (schema mentions pagination, description does not). It adds some behavioral meaning via the filter semantics but leaves notable gaps for an annotation-free tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the core purpose front-loaded and the filter semantics immediately following. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, fully documented parameters, and no annotations, the description covers purpose and filter meaning adequately. Minor omissions (pagination behavior, filter combinability) are covered by the schema's own descriptions, so an agent can call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema's terse 'Filter by asset ID'/'Filter by part ID' by explaining what each filter returns (parts for an asset vs. assets using a part). That is genuine semantic value, though page/per_page go unmentioned in the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List parts associated with assets'), which is clearly distinct from create_part, get_part, and list_parts in intent. It does not explicitly name sibling tools like list_infrastructure_asset_parts or list_parts to disambiguate the junction-table nature, but the resource is specific enough that an agent can select it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives concrete usage direction: use asset_id to get all parts for one asset, part_id to see all assets using a part. This tells the agent how to drive the tool. It stops short of naming alternatives (list_parts vs. this association list) or stating when-not-to-use, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_placementsAInspect
List asset pin placements on floorplans. Each asset has at most one placement globally. Filter by floorplan_id to see all pins on one floor, or by asset_id to find where a specific asset is placed.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| region_id | No | Filter by region ID | |
| floorplan_id | No | Filter by floorplan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one meaningful domain trait, the at-most-one-placement-globally cardinality constraint, but says nothing about pagination behavior, permissions, or the shape/size of results (the schema covers pagination only implicitly). Read-only nature is inferrable but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler, front-loaded with the verb+resource and followed immediately by the cardinality constraint and filter guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema and no annotations, the description covers purpose, cardinality, and the two primary filter use cases. It is nearly complete, though it could briefly note what a placement record contains or how results are shaped, since no output schema exists to cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond the schema's terse 'Filter by floorplan ID' / 'Filter by asset ID' by explaining what each filter returns ('all pins on one floor' vs. 'where a specific asset is placed'), adding real semantic value for two of the five parameters. It leaves region_id and the paging params to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'List asset pin placements on floorplans.' The added invariant ('Each asset has at most one placement globally') pins down the resource precisely and distinguishes it from generic list_assets or get_asset_placement without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use each key filter: floorplan_id 'to see all pins on one floor' and asset_id 'to find where a specific asset is placed.' Strong contextual guidance, but it never names an alternative tool (e.g., get_asset_placement for a single placement) or a when-not-to-use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_replacement_plansAInspect
List asset replacement plans for lifecycle/capital planning. Filter by asset, status, priority, or planned year. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| year | No | Filter by planned replacement year | |
| status | No | Filter by plan status | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| priority | No | Filter by priority |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does add real behavioral value: it warns that amounts are bare numbers and directs the agent to get_organization_settings for currency_code before quoting a figure. It does not, however, confirm read-only semantics or describe pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, filtering, then the currency caveat front-loaded where an agent will read it. No sentence is redundant and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates for the most dangerous gap by flagging currency-less amounts. For a no-required-param list tool this is nearly complete, though return shape and auto-pagination are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters are documented in the schema with enums, ranges, and defaults. The description restates the filterable fields without adding format or value semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (asset replacement plans) plus the planning domain it serves (lifecycle/capital). It is distinguishable from the mass of sibling list_* tools, though it does not explicitly contrast itself with get_asset_replacement_plan for single-record retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Filter by asset, status, priority, or planned year' implies how to narrow results, but there is no statement of when this tool is preferred over alternatives or any exclusions. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_risk_historyAInspect
List asset risk assessment history. Shows risk scores, condition scores, and trigger events over time. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| trigger_event | No | Filter by trigger event type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add real behavioral context by explaining the condition-score scale (0-100 with banded labels), which is exactly the kind of semantics an agent needs to interpret results. However, it says nothing about read-only safety, authentication, result size, or that all pages are fetched automatically – leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the purpose and followed by the returned fields and the score scale. Every sentence earns its place; the only minor cost is that the scale table is a dense run-on rather than a clean list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation list tool with no output schema, the description compensates well by enumerating returned fields and defining the score bands, which the agent would otherwise have to guess. It still omits pagination behavior (auto-fetch of all pages) and any statement that this is a safe read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, per_page, asset_id, trigger_event) are already documented, including defaults, bounds, and the enum values. The description adds no parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List asset risk assessment history') and names the payload it returns (risk scores, condition scores, trigger events over time). It does not differentiate itself from the near-identical siblings get_asset_risk_history_entry (singular) or list_infrastructure_asset_risk_history, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description – you call it to retrieve the risk history series for an asset – but there is no explicit when-to-use, no exclusion, and no routing to the singular get_asset_risk_history_entry sibling. The agent must infer the list-vs-get choice itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsAInspect
List assets in your AssetLab account. Supports filtering by site, building, system class, system group, system, and text search. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_id | No | Filter by system ID | |
| building_id | No | Filter by building ID | |
| system_class_id | No | Filter by system class ID | |
| system_group_id | No | Filter by system group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose one genuinely useful behavioral trait — amounts are bare numbers requiring a currency lookup — but omits permission/auth scope, ordering, and result-shape expectations that a no-annotation list tool should cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary action and filters before the currency caveat. Tight overall, though the currency sentence is a downstream-rendering concern rather than a call-selection concern.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param, no-output-schema list tool with no annotations, the description covers purpose, filter surface, and one important reporting gotcha. It is nearly complete, with the missing sibling differentiation and any scoping/permission note the only real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 8 well-documented params, so the baseline is 3. The description restates the filterable fields (site, building, system class, system group, system, search) without adding format, default, or pagination semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'List assets in your AssetLab account', then enumerates the supported filters. An agent knows exactly what it does. It does not, however, distinguish itself from close siblings like list_infrastructure_assets, which is the main gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by listing the filter dimensions, and it gives one explicit cross-tool instruction (call get_organization_settings for currency_code before quoting an amount). But it never says when to pick this tool over the many sibling list_* tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_statusesAInspect
List asset statuses for the organization. These define the lifecycle states an asset or infrastructure feature can be in. Each has a module: facilities (assets), infrastructure (features), or null (shared by both); pick one matching the record, or a shared one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| module | No | Only records in this workspace; none = shared ones only | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'List' implies a read-only operation and the description adds domain context about asset statuses and modules. However, it does not explicitly confirm read-only behavior, mention pagination (the schema handles automatic page fetching), or describe permissions or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the tool's purpose and then explaining the domain concept and module guidance. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description effectively explains what asset statuses are and how to filter by module. It does not describe the return structure or explicitly state read-only behavior, but for a simple list tool with full parameter schema coverage, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters. The description adds meaningful semantics for the module enum, mapping 'facilities' to assets, 'infrastructure' to features, and null to shared statuses, plus guidance on selection. This goes beyond the schema's brief enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: 'List asset statuses for the organization.' It also explains what the statuses represent, distinguishing this list tool from the singular get_asset_status sibling implicitly. However, it does not explicitly name or differentiate itself from alternatives like list_asset_types or get_asset_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives specific guidance on choosing the module parameter ('pick one matching the record, or a shared one'), which helps with invocation. But it does not say when to use this tool versus alternatives such as get_asset_status, nor does it state prerequisites or exclusions for the tool overall.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_type_groupsCInspect
List asset type group classifications. Groups organize asset types into logical categories.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never states that this is a read-only operation, how results are ordered, or how pagination behaves (the schema mentions auto-fetching all pages, but the description does not). The second sentence describes domain semantics rather than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action. The second sentence adds domain meaning rather than restating the name, though it is arguably encyclopedic rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, schema-only list tool with no output schema, the description is minimally adequate: purpose is clear and parameters are documented elsewhere. Missing usage routing and behavioral notes (read-only nature, ordering) keep it at the minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, and per_page are already fully documented in the schema. The description adds nothing about parameters; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List asset type group classifications'), and the resource wording distinguishes it from the sibling list_asset_types. It never explicitly names that sibling or contrast the two, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as list_asset_types or update_asset_type_group. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_typesCInspect
List asset type classifications. Filter by group.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| group_id | No | Filter by asset type group ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does not state that the operation is read-only, what ordering results come in, whether the list is paginated or complete, or any auth requirements. For a list tool with zero annotation coverage, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded. It is efficient, though its brevity edges toward under-specification rather than true conciseness of a complete thought.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no output schema, and no annotations, the description should do more to explain return contents, ordering, and safe read-only behavior. As written, an agent knows the tool exists but not enough about what calling it yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, group_id, and per_page are already documented in the schema, including pagination defaults and the max of 1000. The description's 'Filter by group' restates what group_id already says and adds no syntax or format detail beyond it. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List asset type classifications.' An agent can identify this as a read-only list of asset type classifications. However, it does not distinguish itself from the close sibling list_asset_type_groups, leaving the agent to infer the boundary between types and groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by group' hints at the group_id filter, but there is no when-to-use guidance, no mention of when to omit filtering, and no routing to alternatives such as list_asset_type_groups or get_asset. The agent gets no help deciding between this and its overlapping siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_attachmentsBInspect
List file attachments linked to work orders, work requests, PM schedules, or PM templates.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| work_order_id | No | Filter by work order ID | |
| pm_schedule_id | No | Filter by PM schedule ID | |
| pm_template_id | No | Filter by PM template ID | |
| work_request_id | No | Filter by work request ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only listing via 'List' but says nothing about permissions, return shape, or result size; the pagination behavior lives only in the schema. For a tool with zero annotation coverage this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant filler. It is efficient, though it is perhaps terse given the tool's 7-parameter surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should ideally confirm the read-only nature and hint at the returned attachments. It covers the resource and its linking model adequately but leaves behavioral context to inference, making it only minimally complete for this surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all seven parameters (page, search, per_page, and the four UUID filters) documented in the schema itself. The description adds no parameter detail, but the schema fully carries the semantic load, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('file attachments') and scopes it to four parent entity types (work orders, work requests, PM schedules, PM templates). This clearly separates it from get_attachment, but it does not explicitly contrast with other list_* siblings, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four parent entity types imply the filtering scenarios the tool supports, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., get_attachment for a single record). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_budgetsAInspect
List annual funding budgets - one figure per year, funding source (O&M or Capital) and workspace (module), which is what the dashboard Budget tab shows. Filter by year, funding source, module, site or building. Includes allocated, budgeted, and remaining amounts. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| year | No | Filter by budget year (e.g. 2026) | |
| module | No | Filter by workspace; 'none' for organization-wide budgets | |
| search | No | Search by name | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| building_id | No | Filter by building ID | |
| funding_source | No | Filter by funding source |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so reasonably: it discloses the shape of each row (per year/funding source/workspace), the fields returned (allocated, budgeted, remaining), and a non-obvious data caveat that amounts are bare numbers lacking currency. It omits pagination/auth/rate-limit behavior, but that is largely covered elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the identity of the resource, then filters, then returned fields, then the currency caveat. Every sentence carries information; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return contents and the currency caveat needed to interpret them, and it coordinates with get_organization_settings. Combined with a fully documented 8-parameter schema, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are already documented, including enum values and paging defaults. The description restates the filter dimensions (year, funding source, module, site, building) without adding syntax or constraints beyond the schema, so it meets the baseline without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List annual funding budgets') and further pins the granularity: one figure per year per funding source and workspace, matching the dashboard Budget tab. An agent knows exactly what entity this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use (mirrors the dashboard Budget tab) and actionable guidance for the filtering dimensions and, importantly, the cross-tool step of calling get_organization_settings for currency_code before stating an amount. It does not explicitly name when to prefer this over sibling tools like list_project_budget_items or get_budget, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_buildingsBInspect
List buildings. Optionally filter by site to see all buildings at a specific location.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and discloses almost nothing: no read-only safety confirmation, no auth/permission requirements, no note on result volume or that pagination is auto-handled. Only the name implies a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences, front-loaded with the core action and followed by the optional filter. No filler, no redundancy with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool, but with no annotations and no output schema it should say more about the read-only nature and return shape. Pagination and item limits are covered by the schema, so the remaining gap is behavioral rather than structural.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, search, site_id, per_page) are already documented in the schema. The description adds only high-level meaning for site_id and nothing for search or pagination, matching the baseline for schema-complete tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List buildings') and names the filterable dimension (site). It is distinguishable from write siblings like create_building or delete_building, but it does not differentiate itself from the near-identical list_project_buildings or list_building_types siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one usage context — filter by site to see all buildings at a location — which implies when the site_id filter is useful. However, it offers no exclusions or alternatives (e.g., when to use a nested-project building list instead), leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_building_typesCInspect
List building type classifications.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and 'List' is the only signal that this is a safe read. It says nothing about pagination behavior, ordering, result size, or permissions — the pagination default is only discoverable by opening the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is efficient, though its brevity reflects under-specification rather than tight editing of rich content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param read-only listing tool with a fully documented schema, this is minimally adequate. With no annotations and no output schema, however, the agent gets no information about the shape or size of the classification records returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents page, search, and per_page including the auto-fetch-all-pages behavior, so the baseline of 3 applies. The description adds no parameter meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (building type classifications), so an agent knows it retrieves a classification catalog. It does not distinguish itself from similar list_* siblings such as list_asset_types or list_location_types, but there is no real ambiguity here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus other list endpoints, and no mention of prerequisites, filters, or exclusions. The agent must infer that it is a read-only catalog lookup purely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_change_ordersAInspect
List change orders. Filter by status, vendor_id, or project_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: draft, submitted, approved, rejected | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| vendor_id | No | Filter by vendor ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and adds real value: it discloses that amounts are bare numbers with no currency and prescribes calling get_organization_settings for currency_code before quoting a value. That is a genuinely useful data-format and dependency disclosure, though it omits permission/read-only framing and return-shape notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action, then filters, then the critical currency caveat. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 100% schema coverage and no output schema, the description covers the action, filter dimensions, and an important currency caveat. It is largely self-sufficient, with only return-shape/pagination details left to the schema (which already states all pages are fetched automatically).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the six parameters are already documented. The description merely repeats the filter params (status, vendor_id, project_id) without adding syntax, defaults, or enum detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List change orders'), which clearly separates the collection-read from siblings like get_change_order, create_change_order, and update_change_order. It doesn't explicitly name those siblings, but the noun+verb is unambiguous for a CRUD collection listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the filterable dimensions (status, vendor_id, project_id), which implies usage, but gives no explicit when-to-use/when-not guidance or named alternatives. Adequate but leaves 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.
list_compliance_itemsBInspect
List compliance items (regulatory requirements tracked against PM schedules). Filter by status or system.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: active, archived | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_id | No | Filter by system ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' clearly implies a read-only operation and the domain clarification helps identify the resource, but the description says nothing about pagination behavior, permissions, or result shape. The schema does cover the auto-fetch pagination, which slightly lowers the gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The core action and the filtering capability are both stated immediately. Slightly terse but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-list tool with full schema coverage and no output schema, the description is adequate on the mechanics. It falls short on sibling differentiation and behavioral context, leaving the agent to infer how this list differs from the other compliance list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (page, search, status, system_id, per_page) is already documented in the schema. The description adds only a partial restatement of the status and system filters, giving no syntax or value details beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (compliance items), plus a helpful parenthetical defining the domain object as 'regulatory requirements tracked against PM schedules'. It does not, however, distinguish itself from close siblings like list_compliance_pm_schedules or list_compliance_records, so the agent gets no routing signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by status or system' implies the intended usage pattern, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many list_* siblings. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_compliance_pm_schedulesAInspect
List the PM schedules linked to a compliance item, or the compliance items a PM schedule counts toward. Pass compliance_item_id or pm_schedule_id (one is required). Each link carries required_frequency_days (how often the schedule must be completed for the item to stay compliant) and weight.
| Name | Required | Description | Default |
|---|---|---|---|
| pm_schedule_id | No | PM schedule ID - resolve via list_pm_schedules | |
| compliance_item_id | No | Compliance item ID - resolve via list_compliance_items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden; it discloses that each returned link carries required_frequency_days and weight and explains their meaning, which is genuinely useful. However it omits pagination, result-shape, and any access/permission notes, so coverage is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: purpose, invocation rule, then field semantics. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter join-table list with no output schema and no annotations, the description covers purpose, invocation, and the meaningful returned fields. It is nearly complete, missing only pagination/volume expectations and the precise result envelope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both UUID parameters are already documented with resolution hints. The description adds value beyond the schema by stating the mutual-exclusion requirement ('one is required') and framing each parameter as selecting a direction of traversal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a specific verb ('List') and the exact resource (PM schedule <-> compliance item links) and even states the bidirectional nature of the join. An agent can distinguish this from get_compliance_pm_schedule, create_compliance_pm_schedule, and list_pm_schedules without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the caller to pass exactly one of compliance_item_id or pm_schedule_id, clarifying the either/or invocation model that the schema (required: 0) leaves ambiguous. It does not explicitly contrast against the single-record get_compliance_pm_schedule sibling, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_compliance_recordsAInspect
List compliance records - audit trail of completed compliance checks linked to work orders and PM schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| work_order_id | No | Filter by work order ID | |
| compliance_item_id | No | Filter by compliance item ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'List' implies a read-only retrieval and the description conveys that these are completed/immutable historical records, but it says nothing about permissions, result volume, or pagination behavior beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that names the resource first and then qualifies its scope. Nothing is wasted and no back-loaded caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-required-parameter list tool with a fully documented schema and no output schema, the description is adequate but not complete: it omits any indication of what a record contains or how results relate to the linked work orders and PM schedules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, per_page, work_order_id, compliance_item_id) are already documented in the schema, including the automatic full-pagination behavior. The description adds no syntax or filter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (compliance records), and adds meaningful scope: it is the audit trail of completed compliance checks linked to work orders and PM schedules. That clearly separates it from list_compliance_items and list_compliance_pm_schedules, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicit usage is readable from the description (retrieve the historical record of already-completed checks), but there is no explicit when-to-use, when-not-to-use, or pointer to alternative list tools for related entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contract_documentsCInspect
List documents attached to contracts. Filter by contract_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| contract_id | No | Filter by contract ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read, but nothing is said about pagination (the schema says pages are auto-fetched), ordering, permissions, or what a result contains. Minimal disclosure beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. It is tight, though arguably under-specified rather than maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with no annotations and no output schema, the description covers the basic purpose and the primary filter but omits return shape, ordering, and pagination behavior. Adequate at a minimum-viable level, with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, per_page, and contract_id are all already documented structurally; the baseline is 3. The description adds no syntax, default, or filtering semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List documents attached to contracts'), which is enough to distinguish it from get_contract_document (singular) among hundreds of siblings. It does not, however, explicitly name or contrast with any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only says 'Filter by contract_id,' which is a parameter restatement, not usage guidance. It never says when to use this list vs list_contracts or get_contract_document, nor whether filtering is required or optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contractsAInspect
List vendor contracts. Filter by category or search by title. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| category | No | Filter by contract category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely non-obvious trait: amounts are bare numbers without currency, requiring get_organization_settings for currency_code. That is real value beyond the schema, but nothing is said about permissions, result volume, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero padding, and the most important constraint (currency handling) is placed where it will be read. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param list tool with no output schema, the description covers purpose, filtering, and the currency caveat on returned amounts, which is the main trap. It does not describe the shape of returned records or ordering, but the automatic pagination note lives in the schema, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, per_page, search, and category; the baseline is 3. The description adds only the category/search usage hint, and it says 'search by title' while the schema says 'Search by name', a small mismatch that slightly muddies rather than clarifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List vendor contracts'), and the word 'vendor' scopes it usefully against siblings like list_contract_documents and list_contract_sites. It never explicitly names those siblings or explains what makes this list different from them, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by category or search by title' implies how the tool is typically used, which is adequate but thin. There is no guidance on when to prefer this over a get_* lookup or another list tool, and 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.
list_contract_sitesAInspect
List contract-to-site mappings showing which contracts cover which sites. No single-record lookup (composite key).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| contract_id | No | Filter by contract ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the composite-key constraint, so the agent knows there is no single-record variant, but it omits permission needs, return shape, and read-only status — though 'list' implies a read. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource meaning followed by the key constraint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filterable list tool with no output schema, the description conveys what the result conceptually contains (contract/site pairings) and rules out a get variant. Missing only minor behavioral detail such as pagination semantics, which the schema already covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page/per_page/site_id/contract_id are fully documented in the schema. The description adds nothing beyond the schema for parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (contract-to-site mappings) and clarifies the semantic meaning — which contracts cover which sites. This distinguishes it from list_contracts and list_sites, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note 'No single-record lookup (composite key)' implies the agent must use this list endpoint rather than a get-by-id, which is useful negative guidance. However, it gives no explicit guidance on when to prefer this over list_contracts/list_sites or how the filters are meant to combine.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cost_categoriesBInspect
List cost categories used to classify expenses, invoices, and purchase orders. Supports hierarchical parent-child structure.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active status | |
| parent_id | No | Filter by parent category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the hierarchical parent-child structure, which is real context beyond the schema, but omits that this is a read-only operation, pagination behavior, and whether large result sets are truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste, front-loading the resource definition before the structural note. Appropriately sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-filter list tool with no annotations and no output schema, the description is minimally adequate: it explains what a cost category is and that hierarchy exists, but says nothing about active/inactive filtering semantics or the auto-pagination behavior documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five filters (page, search, per_page, is_active, parent_id) are already documented. The mention of hierarchy loosely relates to parent_id but adds no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (cost categories) and adds domain context about what they classify (expenses, invoices, purchase orders). It does not explicitly differentiate from create_cost_category/update_cost_category/delete_cost_category siblings, though the verb makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, no prerequisites, no notes about the presence of related cost category operations. The agent must infer usage purely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_criticality_modifiersAInspect
List the organization's criticality modifier overrides. Rows are overrides only: a tier with no row uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4), so an empty list means every tier is on its default. A modifier below 1 tightens the targets of facilities in that tier and one above 1 relaxes them; the allowed range is 0.1 to 1.9. Deleting a row restores the default. Filter by tier.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| criticality | No | Filter by criticality tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does notable work: it discloses that rows are overrides only, that an empty list means all tiers are on default, the default values themselves, the valid 0.1-1.9 range, and the tightening/relaxing semantics plus the effect of deletion. It stops short of stating the read-only nature explicitly or any auth/rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place, front-loading the core identity before moving to override/default semantics, range, and filtering. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only filtered list with no output schema, the description supplies the return semantics an agent needs (rows are overrides, defaults apply where absent) and the pagination behavior lives in the schema. A slightly fuller statement of row fields would make it complete, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, and criticality are already documented, including the enum values and auto-pagination. The description's 'Filter by tier' restates the schema rather than adding syntax or behavior beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the organization's criticality modifier overrides') and clarifies that the collection contains overrides only, which meaningfully separates it from get_criticality_modifier. It does not name any sibling tool, so it falls short of the top bar where the definition routes the agent among alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use it to see which tiers have non-default modifiers, and 'Filter by tier' hints at narrowing. There is no explicit when-to-use statement, no mention of when to prefer get_criticality_modifier, and no prerequisites, so the guidance is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_field_definitionsBInspect
List custom field definitions configured for this tenant. Filter by entity type (e.g. asset, work_order) or field type.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| field_type | No | Filter by field type | |
| entity_type | No | Filter by entity type (e.g. asset, work_order) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' clearly implies a read-only, non-destructive operation, so safety is inferable, but the description discloses nothing about the automatic full-pagination behavior (which only appears in the schema) or result size. It is adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the filtering capability second. Nothing is wasted, though the split into a purpose plus filter sentence is standard rather than notably efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool the description is serviceable, but with no output schema and no annotations it leaves the return shape and pagination semantics to the schema fields, and never says what a definition record contains. Just enough to call correctly, but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (page, per_page, field_type, entity_type) is already documented with defaults, bounds, and enums. The description's entity-type examples duplicate what the schema already says, adding no semantic value beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List custom field definitions') plus scope ('configured for this tenant'), so an agent can tell it apart from get_custom_field_definition and create/update/delete variants. But it does not distinguish itself from the sibling list_custom_field_values, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter sentence implies usage (use it to find definitions of a given entity or field type), but there is no explicit when-to-use/when-not guidance and no reference to the alternative list_custom_field_values. Usage must be inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_field_valuesBInspect
List custom field values. Filter by entity_id to get all custom fields for a specific record, or by field_definition_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| entity_id | No | Filter by entity ID (e.g. asset ID, work order ID) | |
| field_definition_id | No | Filter by field definition ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether this is read-only, what fields are returned, whether pagination is handled, or any permissions required. It adds only the filtering behavior, which is already implied by the parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and then the filtering options. No wasted words, though it could be slightly more structured by explicitly listing the two use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no explanation of the return shape or read-only nature, the description is incomplete for a list tool that an agent must invoke safely. It should at least indicate that results are read-only and that pagination is automatic, as hinted in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter fully, including pagination defaults and the meaning of entity_id and field_definition_id. The description adds only a brief restatement of the two filter parameters, which is a 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (list) and resource (custom field values), and distinguishes filtering modes via entity_id vs field_definition_id. It is not confused with siblings like get_custom_field_value or list_custom_field_definitions, though it could note it returns a collection rather than a single value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes (filter by entity_id to get all fields for a record, or by field_definition_id), but it does not explicitly say when to use this tool versus get_custom_field_value or list_custom_field_definitions, nor does it mention that no filters may return all values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dashboard_snapshotsAInspect
List monthly dashboard snapshots with aggregate stats: asset counts, condition scores, work order metrics, and CRV totals. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| year | No | Filter by snapshot year (e.g. 2026) | |
| month | No | Filter by snapshot month (1-12) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose a genuinely non-obvious behavioral quirk: amounts are bare numbers with no currency attached, and the agent must call get_organization_settings for currency_code before presenting values. It does not cover pagination or auth, but the currency caveat is real added context for a read-only list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler; the content summary comes first and the important currency caveat follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the four stat categories the snapshots contain, plus the currency gotcha. Missing only minor details such as pagination behavior, which the schema already explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, year, month and per_page are fully documented in the schema; the description adds nothing parameter-specific. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (monthly dashboard snapshots) and enumerates the aggregate stats returned: asset counts, condition scores, work order metrics, CRV totals. This is clearly distinguishable from the singular sibling get_dashboard_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the monthly scoping, but there is no explicit statement of when to choose this over get_dashboard_snapshot or get_dashboard_summary. The one actionable instruction (call get_organization_settings for currency_code) is a dependency note rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_expensesAInspect
List project-scoped expenses (the Project → Costs → Expenses tab). These records have description, amount, expense_date, receipt_url, and notes - they do NOT carry invoice_number or po_number. For the records shown on the main AssetLab "Expenses" page (which include invoice_number, po_number, category, and asset/site links), use list_asset_costs instead. Filter by project, work order, or cost category. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| category_id | No | Filter by cost category ID | |
| work_order_id | No | Filter by work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does well: it discloses the exact field set returned (description, amount, expense_date, receipt_url, notes) and, critically, the field set that is ABSENT (no invoice_number/po_number) — a trap an agent could otherwise fall into. The currency caveat ('bare numbers with no currency') is a genuine behavioral warning. It stops short of full disclosure (no auth/pagination context beyond what the schema shows).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly packed sentences, all front-loaded: scope first, then disambiguation, then filters, then the currency gotcha. No filler and nothing repeated from annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must supply both the return-field profile and the safety/format context — and it does, enumerating returned fields and flagging the currency ambiguity. An agent has everything needed to call this correctly and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters (project_id, category_id, work_order_id, page, per_page, search). The description restates the three filter dimensions at the domain level ('Filter by project, work order, or cost category') but adds no syntax or format beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List project-scoped expenses') and anchors it to a UI location ('Project → Costs → Expenses tab'). It then explicitly distinguishes itself from the sibling list_asset_costs by naming the fields that differ (invoice_number/po_number presence), so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool (list_asset_costs) and the exact condition that selects it (records on the main AssetLab Expenses page). It also prescribes a pre-call workflow: invoke get_organization_settings for currency_code before stating an amount.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_floorplan_regionsBInspect
List labeled rooms/zones on a floorplan. Each region has a polygon (normalized 0-1 coordinates), an optional location_id linking to the Locations hierarchy, and a "reviewed" flag for AI-detected regions.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| reviewed | No | Filter by reviewed state | |
| location_id | No | Filter regions linked to a specific location | |
| floorplan_id | No | Filter by floorplan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully describes the returned region shape (polygon in normalized 0-1 coordinates, optional location_id, reviewed flag), which substitutes for the missing output schema. However, it says nothing about auth, pagination, or mutation semantics (arguably implied by 'list').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, zero filler. The second sentence earns its place by describing the region payload in the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully covers the returned region fields. It omits pagination behavior (documented in the schema) and any usage context, but for a straightforward read-only list tool this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (page, per_page, reviewed, location_id, floorplan_id) are already documented in the schema. The description mentions reviewed and location_id but adds no syntax or format detail beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List labeled rooms/zones on a floorplan.' This clearly distinguishes it from get_floorplan_region (singular) and the create/update siblings. It stops short of naming an alternative sibling explicitly, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative tool is named. The agent must infer usage purely from the name and the filter parameters documented in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_floorplansAInspect
List floorplans (PDF page-level floors or site-level sheets). Filter by building_id for a building's floors, or by site_id for site-level plans (campus maps, outdoor layouts). Each floorplan belongs to exactly one of building OR site. A multi-page PDF produces multiple floorplans sharing the same pdf_storage_path.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| status | No | Filter by detection status | |
| site_id | No | Filter by site ID (site-scoped floorplans only) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| building_id | No | Filter by building ID (building-scoped floorplans) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose non-obvious behavior: every floorplan belongs to exactly one of building OR site, and a multi-page PDF yields multiple floorplans sharing one pdf_storage_path (guards against treating them as duplicates). It does not state read-only semantics explicitly or pagination behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool returns before the filtering rules. Slight redundancy between the second and third sentences, but no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param list tool with no output schema, the description covers domain semantics and the scope constraint well. Return shape and pagination are not described, but with no output schema and schema-documented per_page defaults, the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining the building_id/site_id mutual exclusivity and what each scope represents. page, status and per_page are left to the schema, which documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (floorplans) and immediately disambiguates the two entity kinds it returns: PDF page-level floors vs site-level sheets. It does not explicitly contrast with siblings like get_floorplan or list_floorplan_regions, so it stops short of 5, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection guidance: use building_id for a building's floors, site_id for site-level plans such as campus maps. It clarifies the filtering condition but names no exclusions (e.g., 'use get_floorplan for a single record'), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_response_answersBInspect
List the per-question answer values within form responses. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| item_key | No | Filter by item key | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| response_id | No | Filter by form response ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose 'Read-only', a useful safety trait, but omits pagination behavior, rate limits, and return format, leaving clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource scope and followed by the read-only trait. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter list tool with no output schema and no annotations, the description gives scope and safety but lacks return-value shape and filtering/pagination context. It is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page, item_key, per_page, and response_id all documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'List' and resource 'per-question answer values within form responses', distinguishing it from siblings like list_form_responses and get_form_response_answer by granularity. It does not explicitly name those alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no indication of when to use this tool versus list_form_responses or get_form_response_answer, nor any prerequisites or exclusions. 'Read-only' is a safety trait, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_responsesAInspect
List form responses - completed or in-progress fill-outs of a form, attached to a work order or PM. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| status | No | Filter by status | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| subject_id | No | Filter by subject ID | |
| template_id | No | Filter by form template ID | |
| subject_type | No | Filter by subject type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden; it does state 'Read-only,' which is the single most important behavioral trait for an agent deciding whether this is safe to call. However, it says nothing about pagination behavior, result volume, or permission requirements beyond the read-only claim, so there are real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource, entity definition, and safety trait, and no filler whatsoever. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with six optional filters and full schema coverage, the description covers what is listed and that it is safe, which is adequate. But with no output schema and no annotations, it leaves the return shape (what fields a form response carries, how auto-pagination results arrive) entirely implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, making 3 the baseline. The description adds only indirect hints: 'completed or in-progress' gestures at the status filter and 'attached to a work order or PM' at subject_type, but it never names or explains the filters explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('List form responses') and then defines the domain entity in plain terms ('completed or in-progress fill-outs of a form, attached to a work order or PM'), which is genuinely useful in a catalog dense with form-related siblings. It does not explicitly distinguish itself from get_form_response, list_form_response_answers, or create_form_response, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'List' verb implies a browse/collection use case and the phrase 'attached to a work order or PM' hints at the scoping context, but there is no explicit when-to-use guidance and no mention of when to prefer get_form_response (single) or list_form_response_answers (child records) instead. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_template_itemsAInspect
List the items (questions) within form templates. Returned in sort order. Filter by template_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| template_id | No | Filter by form template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It adds useful behavioral context that results are returned in sort order, but it does not state read-only safety, auth requirements, or pagination behavior (which is only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the main purpose and followed by ordering and filtering details. Every sentence earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read list with a fully documented schema and no output schema, the description covers purpose, ordering, and the primary filter. It is slightly incomplete because template_id optionality and default all-pages behavior are left only to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. 'Filter by template_id' restates the schema’s own template_id description and adds no format or syntax detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (items/questions within form templates), and clarifies the filter target. It does not explicitly differentiate itself from sibling list_form_templates or get_form_template_item, so it falls short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: retrieve items (questions) belonging to form templates, optionally filtered by template_id. There is no explicit when-to-use guidance, no exclusions, and no named alternatives among the many list_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_templatesBInspect
List form templates - reusable inspection, checklist, compliance, and survey definitions. Each has a module: facilities, infrastructure, or null (shared by both).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| module | No | Only records in this workspace; none = shared ones only | |
| search | No | Search by name | |
| status | No | Filter by status: draft, published, archived | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| work_category_id | No | Filter by work category ID (look up with list_work_categories) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the resource type and module values, but does not disclose read-only nature, pagination behavior, permissions, or any other operational context. The description adds minimal value beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with the primary purpose front-loaded. Every sentence contributes relevant information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list endpoint with 6 optional filters and no annotations or output schema, the description covers purpose and module field but omits usage guidance and behavioral context. The rich schema compensates for filter documentation, but the description leaves gaps in when and how to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only mentions the `module` field, but the schema already defines it with an enum and meaning. The description's phrasing 'null (shared by both)' slightly conflicts with the schema's 'none' enum value, adding no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('form templates'), and clarifies what the resource represents ('reusable inspection, checklist, compliance, and survey definitions'). This distinguishes it from siblings like list_form_responses (instances) and list_form_template_items (individual questions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance, alternatives, or prerequisites are provided. The agent must infer usage from the tool name alone, with no indication of when to prefer this over get_form_template or list_form_template_items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_asset_commentsBInspect
List comments on infrastructure features. Filter by feature.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the basic action. It does not state whether results are read-only, what a comment contains, authentication needs, or result size/ordering; the automatic full-pagination behavior is only discoverable from the schema property descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, efficient sentences with the action first and the filter second, no filler. It is compact, though borderline terse for a tool with an asset/feature naming discrepancy that a few more words could have resolved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool this covers the essentials: what it returns, and a key filter. Missing pieces include the shape/fields of a returned comment and confirmation of the unpaginated fetch behavior, with no output schema or annotations to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema descriptions already fully explain page, per_page, and feature_id semantics (defaults, max, UUID format). The description only restates the feature_id filter, adding no format or constraint detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ("List") and resource ("comments") and distinguishes itself from the single-item get_infrastructure_asset_comment and the create/update/delete siblings by default. However, it calls the parent entity "infrastructure features" while the tool and its sibling create_infrastructure_asset_comment concern infrastructure assets, so the object of the listing is slightly ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by feature" implies the intended narrowing use case and the presence of feature_id, so usage is reasonably inferable. There is no explicit when-to-use versus get_infrastructure_asset_comment for a single comment, and no mention of when the filter should be omitted (all comments).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_asset_costsAInspect
List cost rows for infrastructure features. Filter by feature, work order, category, or cost date range. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| category | No | Filter by cost category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID | |
| cost_date_to | No | Costs on/before this date (YYYY-MM-DD) | |
| work_order_id | No | Filter by work order ID | |
| cost_date_from | No | Costs on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden and does disclose a non-obvious trait: amounts are bare numbers with no currency, plus the remedy tool. It does not mention pagination behavior or read-only semantics, but the schema covers paging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler: what it lists, how to filter, and the critical currency caveat placed last where it is most likely to be heeded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description supplies the essential return-value caveat (uncured, unitless amounts) and the follow-up call needed to interpret them. Only minor gaps remain, such as return shape/pagination framing, which the schema partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including enums and date formats. The description names the filter categories but adds no syntax or format detail beyond the schema, which is the expected baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List cost rows for infrastructure features,' and enumerates the filterable dimensions. It is clearly distinguishable from mutation siblings like create_infrastructure_asset_cost, though it does not explicitly differentiate itself from the other list_* cost tools (list_asset_costs, list_expenses).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usable filters and an explicit cross-tool routing instruction: call get_organization_settings for currency_code before stating an amount. It does not state when NOT to use this tool or how it differs from sibling cost-listing 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.
list_infrastructure_asset_documentsCInspect
List documents attached to infrastructure features. Filter by feature, category, or name search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| category | No | Filter by document category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals nothing about read-only semantics, permissions, pagination behavior, or result shape - all of which matter for a list tool. Only the implicit 'List' verb hints at a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. It is efficient, though very terse for a tool with five parameters and a crowded sibling namespace, leaving little room for the disambiguation an agent would need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of behavioral context, and it omits return format, pagination semantics (only hinted at in the schema), and permissions. The core purpose is conveyed, but a list tool in this dense namespace deserves more routing detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description's mention of 'feature, category, or name search' loosely maps to feature_id, category, and search, but adds no syntax, format, or default-value detail beyond the schema (which already documents paging defaults and the uuid format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List documents attached to infrastructure features') and enumerates the filterable dimensions, which is enough for an agent to grasp what it returns. It stops short of distinguishing itself from the many other list_* document siblings (list_asset_documents, list_project_documents, list_contract_documents), so a 5 is not warranted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or exclusions. With ~180 list_* siblings in scope, an agent gets no signal about why it would choose this tool over list_asset_documents or any other document lister. Filtering is mentioned but not framed as selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_asset_inspectionsBInspect
List inspections recorded against infrastructure assets. Filter by feature, inspector, method, condition score range, or inspection date range.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| method | No | Filter by inspection method (e.g. CCTV, visual) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure asset (feature) ID | |
| inspector_id | No | Filter by inspector user ID | |
| condition_max | No | Maximum condition score (0-100) | |
| condition_min | No | Minimum condition score (0-100) | |
| inspection_date_to | No | Filter inspections on/before this date (YYYY-MM-DD) | |
| inspection_date_from | No | Filter inspections on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no pagination behavior (the schema says all pages are auto-fetched, but the description is silent), no auth requirements, no result ordering, and no indication of what happens when filters combine. For a nine-parameter read tool with zero annotation coverage, this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and then the filter capabilities. No filler or repetition, though the filter enumeration is largely redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filter-based list tool with full schema coverage and no output schema, the definition is minimally adequate. It omits ordering, default result size behavior, and any mention of the related single-record and create/update/delete inspection siblings, which an agent would want for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's type, format, and constraints. The description's enumeration of filter categories (feature, inspector, method, condition range, date range) adds only a high-level restatement of what the schema says in detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (inspections recorded against infrastructure assets), and the filter dimensions make the scope unambiguous. It does not explicitly distinguish itself from the singular get_infrastructure_asset_inspection sibling, but the list-vs-get naming convention makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter list implies when this tool is useful (browse/search inspections by various criteria), but there is no explicit guidance on when to use this versus get_infrastructure_asset_inspection for a single record, nor any stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_asset_partsCInspect
List parts associated with infrastructure features. Filter by feature or part.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| part_id | No | Filter by part ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It conveys only that this is a listing operation; it says nothing about read-only nature, permissions, pagination behavior, or result shape, and only the schema mentions automatic page fetching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core action front-loaded and no filler. It is efficient, though the second sentence is largely redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully documented list tool with no output schema, the description is adequate but thin. It omits any behavioral or return-format context that an agent might want, and lacks differentiation from closely related list/get siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (page, per_page, part_id, feature_id) are already documented in the schema. The description's mention of filtering by feature or part adds a little framing but 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('parts associated with infrastructure features'), which is more specific than a bare 'list parts'. It implies a join between parts and infrastructure features, though it doesn't explicitly distinguish itself from the nearby list_parts or list_asset_parts siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by feature or part' merely restates the two filter parameters rather than telling the agent when to choose this tool over list_parts or the asset-based variants. There is no context for prerequisites, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_asset_risk_historyBInspect
List the risk + condition history captured for infrastructure features (populated automatically when a feature's risk fields change). Read-only. Filter by feature, source, or capture date range.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| source | No | Filter by capture source (e.g. manual_update) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID | |
| captured_at_to | No | Entries on/before this date (YYYY-MM-DD) | |
| captured_at_from | No | Entries on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does add value by disclosing that the records are read-only and are generated automatically on risk-field changes, which tells the agent it cannot write here. However, it omits auth needs, ordering, and pagination/volume behavior for a history dataset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, appropriately front-loaded with the core identity before the generation note and the filtering summary. No filler, though the trailing filter list is partly redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, zero-required history list with no output schema and no annotations, the description establishes what the data is and that it is read-only, which is adequate. It stops short of clarifying scope relative to the near-identical asset-level siblings or what the returned entries contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the six parameters is already documented, including date formats and pagination defaults. The description's 'filter by feature, source, or capture date range' merely summarizes what the schema already states, adding no new syntax or semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the risk + condition history captured for infrastructure features') and clarifies the data's origin ('populated automatically when a feature's risk fields change'). It does not, however, distinguish itself from the very similar sibling list_asset_risk_history, leaving ambiguity about which scope applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage-style hint is 'Read-only,' which signals safety but not fit. There is no statement of when to use this versus list_asset_risk_history or get_infrastructure_asset_risk_history_entry, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_assetsAInspect
List infrastructure assets (features - segments or nodes). Geometry is returned as GeoJSON (Point for nodes, LineString for segments) in EPSG:4326. Filter by network, feature_type, site, status, asset type, condition score range, or risk score range. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| status_id | No | Filter by asset status ID | |
| network_id | No | Filter by infrastructure network ID | |
| feature_type | No | Filter by feature type | |
| asset_type_id | No | Filter by asset type ID | |
| condition_max | No | Maximum condition score (0-100) | |
| condition_min | No | Minimum condition score (0-100) | |
| risk_score_max | No | Maximum risk score | |
| risk_score_min | No | Minimum risk score | |
| include_deleted | No | Include soft-deleted features ("true") - default "false" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does meaningful work: it discloses the returned geometry encoding (GeoJSON, Point for nodes, LineString for segments, EPSG:4326) and warns that amount fields are unitless so the agent must call get_organization_settings for currency_code before quoting figures. It does not mention that this is a read-only, paginated-by-default operation, but the return-format and currency caveats are substantive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose and return format, followed by filter dimensions and a currency caveat. Every sentence adds something, though the final currency warning is slightly off-topic for a listing tool and could arguably live in an output note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, no-output-schema list tool, the description supplies the most important missing piece: the shape of the returned geometry and the unitless-amount caveat. It does not enumerate other returned fields (name, status, condition score, etc.), but the critical ambiguities for correct usage are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 13 parameters are already documented with labels, ranges, and defaults; the baseline is 3. The description restates the filter categories rather than adding syntax or format detail beyond the schema, though it does usefully confirm that condition/risk filters operate as ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List infrastructure assets'), and disambiguates the domain further by equating assets with 'features - segments or nodes'. This lets an agent distinguish it from the sibling list_infrastructure_networks or the generic list_assets without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates the filter dimensions available (network, feature_type, site, status, asset type, condition range, risk range), which implies how the tool is used for querying. However, it gives no explicit when-to-use guidance, no exclusions, and never names an alternative tool (e.g., list_assets or get_infrastructure_asset) that an agent might otherwise confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_feature_classesAInspect
List infrastructure feature classes (catalog of classes like water_main, sewer_gravity, pavement). Use the code field as the natural key when referencing a class from a network. Filter by category or is_builtin.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| category | No | Filter by category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_builtin | No | Filter by builtin ("true") vs tenant-defined ("false") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the behavioral burden. 'List' reasonably implies a safe read, and the natural-key note adds real context, but it doesn't state return format, pagination behavior (which lives in the schema), or auth requirements. Adequate but thin for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and then the key/filter guidance. No wasted text, though it is not maximally dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter list tool with full schema coverage and no output schema, the description supplies the entity meaning plus the natural-key field that return data would otherwise leave unexplained. It is complete enough to invoke correctly, with only return-shape detail missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, category, per_page, and is_builtin are already fully documented in the schema. The description only echoes 'category' and 'is_builtin' and adds nothing new about parameter syntax or format, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List infrastructure feature classes') and clarifies the domain with concrete examples (water_main, sewer_gravity, pavement), which distinguishes it from the many other list_infrastructure_* siblings. It doesn't explicitly name an alternate tool, but the entity is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful in-context guidance—'Use the code field as the natural key when referencing a class from a network'—and notes the available filters. However, it gives no when-to-use-vs-alternative routing (e.g. vs get_infrastructure_feature_class) and no exclusions, 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.
list_infrastructure_lifecycle_eventsAInspect
List lifecycle strategy events - condition-triggered maintenance/rehabilitation events keyed on a scope (feature_class code, material, optional diameter band), never on individual features. The events sharing one scope form that scope's strategy; features resolve the most specific matching scope like replacement rates. Filter by feature_class, material, event_class, or is_active. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| material | No | Filter by material (exact string) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active ("true") vs disabled ("false") events | |
| event_class | No | Filter by event type | |
| feature_class | No | Filter by feature class code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely important behavioral trait: amounts are bare numbers with no currency, requiring a prior call to get_organization_settings for currency_code. That is real cross-tool dependency context an agent cannot get from the schema. It still omits auth requirements, ordering, and any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the domain definition before the filter list and the currency caveat. Each sentence earns its place, though the mid-sentence 'like replacement rates' analogy and the strategy-scope elaboration add some density without adding callable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no annotations and no output schema, the description supplies the domain model, the filter set, and the currency-handling prerequisite. Pagination is covered by the schema (auto-fetch of all pages, default 1000). Only auth/ordering behavior is 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description restates the filters already documented in the schema (feature_class, material, event_class, is_active) and adds conceptual meaning about scope resolution, but does not mention page/per_page or add format syntax beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List lifecycle strategy events') and immediately qualifies it: condition-triggered maintenance/rehabilitation events keyed on a scope, never on individual features. This distinguishes it from siblings like list_asset_lifecycle_events and get_infrastructure_lifecycle_event by naming the scoping model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the available filters (feature_class, material, event_class, is_active) and explains the resolution semantics ('features resolve the most specific matching scope'), which is implied usage guidance for understanding results. However, it never says when to reach for this tool over get_infrastructure_lifecycle_event or list_asset_lifecycle_events, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_los_targetsAInspect
List technical Level of Service targets for infrastructure. One base target per feature class and metric, set once for the organization. Each network of that class is held to a version adjusted by the network's criticality (an unrated network counts as medium): a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical network, 58 at a Low one). Derived targets never leave the metric's scale. Metrics: fci (0-100 percent, lower is better), asset_condition_avg (0-100, higher is better, read with the fixed condition bands), asset_past_useful_life_pct (0-100 percent, lower is better). Average risk is not available for infrastructure. None of these values are money. Filter by feature class, metric or active.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| active | No | Filter by active (true) or paused (false) | |
| metric | No | Filter by metric | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_class | No | Filter by feature class code (e.g. "sidewalk") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and delivers: it explains that a base target exists per feature class/metric, how derived targets are computed via criticality modifiers, that an unrated network defaults to medium, and that derived values stay on the metric scale. It omits return shape and pagination, but the behavioral model is unusually well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the description spends considerable space on the criticality-modifier arithmetic ('condition 70 becomes 82 at a Critical network') that an agent does not strictly need in order to call a list endpoint. It is dense and structured rather than wasteful, but not every sentence earns its place for invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param list tool with 100% schema coverage and no output schema, the description supplies the domain model, metric definitions, defaults, and filter hints. Only the return/pagination shape is left unaddressed, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it documents the metric semantics (fci lower-is-better 0-100 percent, asset_condition_avg higher-is-better, asset_past_useful_life_pct lower-is-better) and notes average risk is unavailable for infrastructure, going beyond the bare enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('technical Level of Service targets for infrastructure'), and the 'infrastructure' scoping separates it from list_system_los_targets. An agent can identify the resource without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It closes with 'Filter by feature class, metric or active,' which implies how to narrow results, but there is no explicit when-to-use vs the sibling list_system_los_targets or list_los_measures, and no exclusions. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infrastructure_networksAInspect
List infrastructure networks (named groupings of features bound to one feature class). criticality (critical, high, medium, low) sets how strictly a network is held to its feature class's Level of Service targets; null is treated as medium. Filter by feature_class code or text search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_class | No | Filter by feature class code (e.g. "water_main") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully explains domain semantics (what a network is, criticality meaning, null treated as medium), but says nothing about read-only nature, pagination, result volume, or permissions. It adds some value but leaves operational behavior undescribed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose front-loaded with the filter guidance last, no obvious padding. The criticality clause is somewhat tangential since no criticality parameter exists, slightly diluting focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 100% schema coverage and no output schema, the description supplies adequate purpose and filtering context; pagination is handled by the schema. The dangling criticality explanation (describing a field rather than a filter) leaves a small ambiguity but overall it is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, per_page, search, and feature_class. The description echoes search and feature_class filters without adding 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (infrastructure networks) and adds a parenthetical definition ('named groupings of features bound to one feature class') that distinguishes the entity from siblings like list_infrastructure_feature_classes or list_infrastructure_zones. It does not explicitly name which sibling to prefer, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence 'Filter by feature_class code or text search' implies how to narrow results, and the criticality note hints at the field's role, but there is no explicit when-to-use, when-not, or alternative-tool routing among the many list_* siblings. 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.
list_infrastructure_zonesAInspect
List operational hydraulic boundaries (pressure zones, DMAs, sewersheds, etc.). Boundary is returned as a GeoJSON Polygon in EPSG:4326. Filter by network or kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by zone kind | |
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| network_id | No | Filter by infrastructure network ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose valuable return context (boundaries returned as GeoJSON Polygon in EPSG:4326) and 'List' implies a read-only operation, but it says nothing about permissions, ordering, completeness of results, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero filler; the core purpose and the return format are front-loaded and actionable. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully summarizes the return shape (GeoJSON Polygon, EPSG:4326), which is the key missing piece an agent would need. For a simple filtered-list tool this is largely sufficient, though it omits result ordering and any indication of null/empty behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the kind enum and pagination defaults. The description only restates that filtering is by network or kind, adding no format or semantic detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List operational hydraulic boundaries') and immediately disambiguates the domain term 'zone' with concrete examples (pressure zones, DMAs, sewersheds). It is clearly distinct from list_infrastructure_networks, though it never names a sibling explicitly, so it stops short of the 5-level criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence 'Filter by network or kind' gives filtering guidance, which implicitly tells the agent how to narrow results, but there is no statement of when to use this tool versus get_infrastructure_zone or list_infrastructure_networks, and 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.
list_invoicesAInspect
List invoices. Filter by status (pending, approved, paid, voided), vendor, or project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: pending, approved, paid, voided | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| vendor_id | No | Filter by vendor ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose a genuinely non-obvious behavior: amounts are bare numbers with no currency and the agent must fetch currency_code separately. It omits auth requirements and rate limits, and read-only-ness is only inferred from 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler; the core action and filters come first, and the currency caveat is placed as a trailing imperative that tells the agent what to do next.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, all-optional list tool with no output schema, the description covers the action, the filters, and one important output quirk (bare amounts). It does not describe the shape of returned invoice records or default ordering, which a list tool ideally would.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the status values and names the vendor/project filters, all of which the schema already documents, and adds no syntax or format detail beyond the currency caveat about the returned amounts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List invoices') and enumerates the three filter dimensions (status, vendor, project), which lets an agent distinguish it from single-record siblings like get_invoice. It does not explicitly name an alternative, so it stays short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the enumerated filters, but there is no explicit statement of when to choose this over get_invoice or a filtered search. The only routing hint is the downstream call to get_organization_settings, which is about interpreting output, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsBInspect
List locations (rooms, floors, areas within buildings). Optionally filter by building or location type.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| building_id | No | Filter by building ID | |
| location_type_id | No | Filter by location type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It implies a safe read operation and notes optional filtering, but says nothing about ordering, result limits, or permissions. The schema's page/per_page descriptions do disclose the auto-pagination behavior, partly compensating for the gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core purpose is front-loaded ahead of the filtering note. Efficient and appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with a fully documented schema, this is adequate. However, with no annotations and no output schema, the description could say more about what a returned location contains; it is minimally complete rather than thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented with types, bounds, and defaults. The description restates two of them (building and location type) at a high level without adding format or syntax detail beyond the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("List locations") with a clarifying gloss of what a location is — rooms, floors, areas within buildings — which meaningfully separates it from siblings like list_location_types and list_buildings. It never names those siblings directly, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Optionally filter by building or location type" tells the agent when the filters might be relevant, but there is no when-to-use/when-not guidance and no reference to alternative listing tools (list_buildings, list_project_locations). Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_location_typesCInspect
List location type classifications (e.g., room types, floor types).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does not state that this is a safe read-only operation, that pagination is auto-handled across all pages, or what the returned fields look like, so an agent gets only the bare surface meaning of 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no wasted words. It is appropriately sized for a simple list tool, though the parenthetical examples are the only elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-required-parameter list tool with a fully documented schema and no output schema, the description is minimally adequate. It conveys the resource being listed but omits read-only nature and pagination behavior, which the schema only partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each of the three parameters (page, per_page, search) is documented in the schema with defaults and limits. The description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and resource ('location type classifications') and clarifies with examples (room types, floor types), so an agent can distinguish it from the sibling list_locations and the create/update/delete_location_type tools. It lacks explicit sibling routing but the resource noun is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as list_locations or how it relates to the location type CRUD siblings. The examples hint at the domain but do not state conditions or exclusions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_consequencesAInspect
List Level of Service consequences: what a missed technical target means, in the organization's own words. Advisory only: the statement is shown on the Status screen when a target is breached, and no notification is sent to notify_roles or to anyone else. When several match a breach the most specific scope wins (a specific system or feature class over a criticality tier over global). severity is a floor; the severity shown scales with the size of the gap and the facility's criticality. A null metric matches any metric. Filter by scope type, severity or active.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| active | No | Filter by active (true) or paused (false) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| severity | No | Filter by severity | |
| scope_type | No | Filter by scope type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so well: it discloses that the tool is advisory only, that no notification is sent to notify_roles or anyone else, that the most specific scope wins on a breach, and that severity behaves as a floor that scales with gap size and facility criticality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, leading with the object definition before the behavioral rules. Every sentence contributes; the only minor bloat is a brief restatement of the filterable fields already visible in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list with no output schema and no annotations, the description covers display behavior, matching precedence, and severity semantics sufficiently for correct invocation. It stops short of describing return shape or pagination, but auto-pagination is noted in the schema and no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description nonetheless adds real meaning beyond the schema by explaining that 'severity is a floor' and that 'a null metric matches any metric' (though the metric parameter itself is not present in the schema), while the rest of the filter sentence just restates scope_type, severity, and active.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Level of Service consequences') and immediately defines the domain object conceptually ('what a missed technical target means, in the organization's own words'). This clearly distinguishes it from get_los_consequence, list_los_measures, and list_los_proposed_targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides useful context about the object being advisory and shown on the Status screen, but never says when an agent should call this list versus the sibling get_los_consequence or the other LOS list tools. Usage is implied by the filter sentence rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_measurementsBInspect
List LoS measurement values (time-series). Filter by measure, period type, date range, or auto/manual.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| date_to | No | Filter measurements up to this date (ISO 8601, inclusive) | |
| is_auto | No | Filter by auto-calculated (true) or manual (false) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| date_from | No | Filter measurements from this date (ISO 8601, inclusive) | |
| period_type | No | Filter by period type | |
| los_measure_id | No | Filter by LoS measure ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses that the data is time-series and filterable, but says nothing about pagination behavior, return format, permissions, or read-only safety beyond the implicit 'List' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core operation and immediately followed by the supported filters. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter list tool with no output schema and no annotations, the description is only minimally complete. It covers purpose and filter categories, but omits return shape, pagination context, and sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already well documented. The description groups the filter dimensions ('measure, period type, date range, or auto/manual') but adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List LoS measurement values (time-series).' It is clear what the tool returns and that filtering is supported, but it does not distinguish this tool from siblings like list_los_measures or get_los_measurement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to use this tool versus alternatives, nor any when-not conditions. Usage is only implied by the list/filter wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_measuresCInspect
List LoS measures. Filter by service area, category, type, data source, or active status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| type | No | Filter by measure type | |
| search | No | Search by name | |
| category | No | Filter by measure category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active status | |
| data_source | No | Filter by data source type | |
| service_area_id | No | Filter by service area ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden and falls short. It does not disclose that pagination is handled automatically (the schema's page/per_page notes indicate all pages are fetched), nor any ordering, permission, or scope behavior for a read operation over potentially large measure sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words, and the resource statement is front-loaded ahead of the filter summary. It could be marginally tighter by aligning the listed filters exactly with the schema's parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter list tool with no output schema and no annotations, the description is adequate but thin; it omits the automatic pagination behavior and any indication of what a returned measure record contains or how results are ordered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, including enums for type, category, and data_source. The description restates five filter dimensions (service area, category, type, data source, active status) but adds no syntax or semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (LoS measures), which cleanly distinguishes it from the create/update/delete/get siblings in the same family. It does not, however, explicitly contrast itself with get_los_measure or explain what set of records 'list' returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance: no mention of when to prefer this over get_los_measure for a single record, no prerequisite context, and no exclusions. It only enumerates filterable dimensions, which is parameter information rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_proposed_targetsAInspect
List proposed levels of service: one row per LoS measure and future year (O. Reg. 588/17 s. 6(1)). A community measure carries target_statement; a technical measure carries target_value, in the measure's own unit (not money). Filter by measure or year.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| year | No | Filter by target year | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| los_measure_id | No | Filter by LoS measure ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses the per-row shape, that community measures carry target_statement while technical measures carry target_value, and that target_value is in the measure's own unit and not money. It omits pagination/result-size behaviour, but that is covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool returns before the field-level caveats and the filter note. The legal citation is compact and every clause adds usable information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly explains the return shape (one row per measure-year, differing fields by measure type). Combined with full parameter coverage, an agent has what it needs to call and interpret the tool; only pagination behaviour is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented, making 3 the baseline. The description adds a small amount by tying filters to 'measure or year' and clarifying unit semantics for target_value, but does not go beyond the schema for page/per_page.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (proposed levels of service), and goes further by defining the row granularity: one row per LoS measure and future year. The 'proposed' qualifier distinguishes it from the neighbouring list_los_measures and list_los_targets_history tools, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence ('Filter by measure or year') implies when to narrow results, but there is no explicit guidance on when to use this tool versus list_los_measures, list_system_los_targets, or list_infrastructure_los_targets. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_status_snapshotsAInspect
List monthly technical Level of Service readings, newest first. Read-only. One reading per tracked pair (a system in a building, or an infrastructure network) and metric per month, recorded the first time anyone opens the Status screen in that month, so a month nobody opened it is missing rather than zero. actual is the measured value and is null when there was no data; base_target is the organization-wide target and derived_target is what that facility was held to at the time, after its criticality was applied; status is exceeding, meeting, below, failing or no_data. fci and asset_past_useful_life_pct are percentages on 0-100 (not fractions), asset_condition_avg is 0-100 and risk_score_avg is 0-25. None of these values are money. Filter by system, building, network, metric, or a period range on period_start.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| metric | No | Filter by metric | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| period_to | No | Readings for this month or earlier (YYYY-MM-DD, compared to period_start) | |
| system_id | No | Filter by system ID | |
| network_id | No | Filter by infrastructure network ID | |
| building_id | No | Filter by building ID | |
| period_from | No | Readings for this month or later (YYYY-MM-DD, compared to period_start) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only behavior, newest-first ordering, the one-row-per-pair-per-month grain, and critically explains that missing months are absent rather than zero and that actual is null when no data exists. It also pre-empts misinterpretation by stating the units (percentages on 0-100, risk on 0-25) and that none of the values are money.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose comes first, then grain, then field semantics; every sentence carries real information about return values that has to live somewhere since there is no output schema. It is dense and runs long, but nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with eight optional filters and no output schema, the description supplies the interpretation an agent needs for the main numeric and status fields. It is close to complete, though it does not explain how system_id, building_id, and network_id relate to one another or which metric values correspond to which described fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents each filter. The description adds value by enumerating the filterable dimensions in one place and grounding the period range against period_start, giving the agent a consolidated view of how to scope the query, though it adds no format or exclusivity detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list monthly technical Level of Service readings, newest first) and immediately defines what a snapshot is — one reading per tracked pair and metric per month, captured the first time anyone opens the Status screen. That definition cleanly separates it from the singular get_los_status_snapshot and from the measure/target definition tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description closes with 'Filter by system, building, network, metric, or a period range on period_start,' which implies how to narrow results but never states when to reach for this tool versus list_los_measurements, list_los_targets_history, or get_los_status_snapshot. Usage is inferable rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_los_targets_historyAInspect
List recorded changes to a LoS measure's target, minimum and stretch goal, newest first. Recording began on 2026-09-20: a change made before that date left no entry, so an empty list does not mean the target never changed. One entry per measure per day; a second change the same day overwrites that day's entry. Values are in the measure's own unit (not money). Filter by measure ID.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| los_measure_id | No | Filter by LoS measure ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and delivers unusually rich behavioral context: recording began 2026-09-20, pre-date changes leave no entry, an empty list does not imply no change, one entry per measure per day, and same-day changes overwrite. It does not disclose permissions or response shape, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, each carrying distinct information (scope, history semantics, overwrite rule, units), with the core operation front-loaded. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and no annotations, the description covers the semantics an agent needs: what counts as an entry, ordering, retention boundaries, and value units. Pagination is handled in the schema. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, and los_measure_id are already fully documented. The description's 'Filter by measure ID' merely echoes the schema's los_measure_id description and adds no syntax or format value. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (recorded changes to a LoS measure's target/minimum/stretch goal) plus ordering ('newest first'). An agent can distinguish it from get_los_targets_history_entry (single entry) and list_los_proposed_targets (proposed, not recorded changes) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never names when to use this versus sibling tools like get_los_targets_history_entry or list_los_proposed_targets, so selection guidance is only implied by the resource name. It does, however, flag an important usage precondition implicitly via the recording-start caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_manufacturersCInspect
List manufacturers of equipment and assets.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read-only operation, but the description never states whether results are paginated by default, what the sort order is, or that authentication/scope is required. Pagination behavior is only discoverable from the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loaded with the verb and resource. It is efficient, though the second half of the sentence contributes almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-optional-parameter list tool with no output schema, the description is minimally adequate; the schema covers all parameters. However, with no annotations and no mention of read-only semantics or result scope, the definition leaves the agent to infer the operation's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, and search are already fully documented in the schema, and the description adds no syntax or formatting detail beyond that. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (manufacturers), which is enough to distinguish it from create_manufacturer, get_manufacturer, and update_manufacturer siblings. The trailing phrase 'of equipment and assets' adds little scoping information but does not obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_manufacturer (single record) or any sibling, and no prerequisites or filter conditions are mentioned. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_part_categoriesAInspect
List part categories used to classify inventory parts. Each has a module: facilities, infrastructure, or null (shared by both); pick one matching the part's workspace, or a shared one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| module | No | Only records in this workspace; none = shared ones only | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the non-obvious module semantics and shared-category behavior, but does not explicitly state read-only safety, auth requirements, or pagination behavior beyond what the schema already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences. The core purpose is front-loaded, and the module guidance is appended without unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list endpoint with fully documented parameters, the description is nearly complete. It covers purpose and the key module domain rule, though it does not describe return shape beyond mentioning the module field, and no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic guidance for the module parameter, clarifying that null means shared by both workspaces and explaining how to choose a category matching a part's workspace.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list part categories used to classify inventory parts. It clearly distinguishes from siblings like list_parts, get_part_category, create_part_category, and update_part_category by focusing on category enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when the tool is relevant (classifying inventory parts) and includes a decision rule for the module parameter: match the part's workspace or choose a shared category. It does not explicitly name or exclude alternative tools, so it falls short of full when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_partsAInspect
List parts/inventory items. Filter by site or category. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| site_id | No | Filter by site ID | |
| category | No | Filter by category (partial match) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a genuinely useful data-format trait (amounts are bare numbers, no currency), but says nothing about permissions, default filtering, or what the returned records contain. That is adequate but incomplete for a read tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, filtering, and the critical currency caveat. The most agent-relevant warning is placed last and is still compact, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 100% schema coverage and auto-pagination documented in the schema, the description covers purpose, filtering, and the non-obvious currency caveat. The main remaining gap is return-shape detail, but with no output schema that is a modest omission rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (page, search, site_id, category, per_page) are already documented in the schema. The description restates the site and category filters but adds no format or matching semantics beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('parts/inventory items'), which is clearly distinct from the many asset-scoped list tools. It does not explicitly differentiate itself from close siblings like list_asset_parts or list_part_categories, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context ('Filter by site or category') and, unusually, a cross-tool workflow rule: fetch currency_code via get_organization_settings before quoting an amount. It lacks any when-not-to-use or alternative-tool routing, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pm_schedulesAInspect
List preventive maintenance schedules. Filter by status, frequency, or site. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: active, inactive | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| frequency | No | Filter by frequency: DAILY, WEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUAL, ANNUAL, FIVE_YEARLY, CUSTOM |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the bare-number currency quirk and routes the agent to get_organization_settings before stating amounts, which is real behavioral context. But it omits permissions, pagination semantics, and filter-combination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose and filters, then the currency caveat. Every sentence contributes; the currency note is slightly tangential to listing but earns its place as VALUABLE guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry return-value context, and it does disclose the important bare-number/currency caveat. It still lacks return-format and pagination detail, but for a zero-required-param list tool with full schema coverage this is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented in the schema, hitting the baseline. The description echoes the status/frequency/site filters without adding format, enum, or combination details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List preventive maintenance schedules') and names the primary filter dimensions. It does not explicitly distinguish itself from close siblings like list_pm_templates, list_compliance_pm_schedules, or get_pm_schedule, which an agent must infer from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied usage via 'Filter by status, frequency, or site,' giving the agent a sense of what the tool is for. However, it offers no when-to-use/when-not guidance, no named alternatives, and no prerequisites, leaving the agent to infer when this list tool beats get_pm_schedule or list_pm_templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pm_templatesBInspect
List preventive maintenance templates that can be used to create PM schedules. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the load. It usefully discloses that amounts are bare numbers and that get_organization_settings must be called for currency_code, a real cross-tool gotcha. However, it says nothing about pagination/return behavior or that this is a read-only listing beyond what the verb implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the purpose front-loaded and no filler. The currency-formatting note is slightly tangential to a list operation but is genuinely actionable, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter, no-required-arg list tool with full schema coverage and no output schema, the description covers purpose and one important cross-tool caveat. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so page, search, and per_page are fully documented in the schema (including the automatic all-pages fetch behavior). The description adds no parameter-level detail; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (preventive maintenance templates) plus their purpose (used to create PM schedules). It is distinguishable from create_pm_template/delete_pm_template/update_pm_template by the verb, though it does not explicitly name list_pm_schedules as the sibling it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'that can be used to create PM schedules' hints at context, but there is no explicit when-to-use, when-not-to-use, or alternative (e.g. list_pm_schedules). The agent must infer routing from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_assetsBInspect
List asset assignments for projects. Filter by project_id or asset_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| asset_id | No | Filter by asset ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but the description says nothing about pagination behavior, return shape, ordering, or whether an empty filter returns everything - gaps that matter for a 4-param list tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, filtering guidance second, with zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool the description covers the essentials, but with no annotations and no output schema it could have clarified what an 'asset assignment' record is and confirmed default full-list behavior when no filter is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the auto-pagination semantics of page and per_page. The description only restates the project_id/asset_id filters, adding no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List asset assignments for projects'), which is clear and actionable. However, it does not differentiate itself from nearby siblings such as list_assets, list_project_infrastructure_assets, or get_project_asset, so an agent still has to infer which list tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by project_id or asset_id' implies how to narrow results and suggests the two use cases (per-project or per-asset lookups). But there is no explicit when-to-use guidance or exclusion relative to the many other list_* siblings, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_budget_itemsAInspect
List project budget line items (labor, materials, equipment, subcontractors, permits, contingency, other). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| category | No | Filter by budget category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a genuinely important trait: amounts are bare numbers with no currency, requiring a call to get_organization_settings for currency_code. This is exactly the kind of non-obvious context that prevents a wrong answer. It still omits the read-only nature of the operation and the auto-pagination behavior noted only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first names the resource and scope, the second delivers the currency caveat and its remedy. The purpose is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should orient the agent to the return shape, and the bare-number amount warning does critical work here. It is nearly complete for a read/list tool; only pagination behavior and the read-only nature are left to the schema and annotations (none), keeping it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, category, per_page, and project_id, including the default an auto-pagination for page/per_page. The description's category enumeration mirrors the schema enum and adds no new syntax. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List project budget line items') and enumerates the categories covered, so an agent knows exactly what is returned. It does not explicitly distinguish itself from siblings like get_project_budget_item or list_budgets, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb 'List' and the optional filters present in the schema; there is no explicit when-to-use guidance, no statement of when to prefer get_project_budget_item for a single item, and no exclusions. The currency cross-reference is helpful but is behavioral, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_buildingsBInspect
List building assignments for projects. Filter by project_id or building_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| building_id | No | Filter by building ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' reliably conveys a read-only, non-destructive operation, and the schema documents the auto-pagination behavior, but the description says nothing about permissions, scope of results when no filter is given, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose before the filter hint, with no filler. It is efficient, though the extreme brevity leaves gaps that a slightly longer description could have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter list tool with no annotations and no output schema, the description covers only what and filters. It omits what an unfiltered call returns, the shape of an assignment record, and any permission prerequisites, leaving the definition minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented there, including pagination defaults. The description only restates the two filter parameters by name, adding no format or semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'List building assignments for projects' names a specific verb and resource, and the join-table nature (building-to-project assignments) distinguishes it from list_buildings and get_project_building. It stops short of explicitly naming those siblings, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by project_id or building_id' implies context of use (narrow to one project or one building), but there is no statement of when this tool is preferable to get_project_building or list_project_buildings alternatives, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_commentsCInspect
List comments on projects. Supports threaded replies via parent_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It confirms this is a read/list operation and mentions threaded replies, but says nothing about auth, scope, filtering limits, or return volume. It also references 'parent_id', a parameter that does not appear in the schema, which adds ambiguity rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. It is efficient, though the second sentence is arguably wasted since it references a non-existent parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no annotations and no output schema, the description is minimally adequate but thin. The reference to parent_id threading is not backed by the schema's parameters, leaving the agent unsure how threading is actually retrieved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, per_page, and project_id, making 3 the baseline. The description's only parameter-related claim ('via parent_id') does not correspond to any schema field, so it adds no usable parameter meaning and even risks confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List comments on projects'), which cleanly separates it from get_project_comment and create/update/delete_project_comment. However, it does not explicitly differentiate itself from the other sibling list_*_comments tools, so sibling routing is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus get_project_comment or the other comment-listing tools, and no prerequisites stated. The note about threaded replies is a feature remark, not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_cost_snapshotsAInspect
List historical cost snapshots for projects. Filter by project_id to see cost trends over time. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose a genuinely non-obvious trait: amounts are bare numbers with no currency, plus the follow-up call needed before quoting a figure. It omits other behavior such as ordering of historical snapshots or what a snapshot record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, filter usage, and the currency caveat. The most decision-relevant information (what it lists) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter list tool with no output schema, the description covers purpose, filtering and a critical data-format caveat, and the schema covers pagination. Return-field composition is left unstated, which is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page and project_id are already documented in the schema, including the automatic all-pages fetch. The description only adds the trend-analysis purpose of project_id, which is marginal beyond the schema's 'Filter by project ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List historical cost snapshots for projects'), which cleanly separates it from get_project_cost_snapshot (single) and create/delete_project_cost_snapshot. It does not name a sibling list tool as an alternative, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('Filter by project_id to see cost trends over time') and cross-tool guidance (call get_organization_settings for currency_code). It never states when not to use it, e.g. when a single snapshot via get_project_cost_snapshot is what's wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_document_folder_templatesCInspect
List project document folder templates for reusable folder structures.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing beyond the verb. It omits that results are paginated/auto-fetched (which the schema hints at), any permission or auth requirements, ordering, and the shape of returned templates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and resource front-loaded and no filler. It is efficient, though it is arguably too terse given the absence of annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only list tool with 100% schema coverage, the essentials are technically present. However, with no annotations and no output schema, the description should do more to convey scope and return behavior; it is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page, per_page, and search all documented in the schema itself (including the auto-fetch-all-pages behavior). 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (project document folder templates), with a short gloss ('for reusable folder structures') that clarifies what the resource is. It does not explicitly distinguish itself from get_project_document_folder_template, but the list/get contrast is conventional and inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus get_project_document_folder_template (single fetch) or the create/update/delete siblings. Usage is only implied by the verb 'List'; no prerequisites, no exclusions, no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_documentsBInspect
List documents attached to projects. Filter by project_id or folder_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| folder_id | No | Filter by folder ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' implies a read-only operation, which is the main behavioral signal, but the description says nothing about pagination, default return scope (all projects vs. one), or permissions. The pagination behavior happens to live in the schema parameter descriptions rather than here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler – the core action comes first and the filter options second. It is efficient, though arguably too terse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with full schema coverage and no output schema, the description is minimally adequate but leaves ambiguities: whether omitted filters return documents across all projects, and how results are ordered. It covers the essentials but not the edge behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (page, per_page, search, folder_id, project_id) are already documented in the schema. The description only references two of them and adds no format or default details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (documents attached to projects), which distinguishes it from get_project_document and list_project_document_folder_templates. It does not explicitly name or exclude those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the two filter axes (project_id, folder_id), which is implied usage guidance for scoping the list, but it never says when to prefer this tool over siblings like list_project_document_folder_templates or get_project_document, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_infrastructure_assetsCInspect
List links between projects and infrastructure features. Filter by project or feature.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| feature_id | No | Filter by infrastructure feature ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It is implicit from "List" that this is a read-only operation, but nothing states whether links are workspace-scoped, what happens when no filter is supplied, or how results are ordered. The pagination behavior is only discoverable from the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the entity being listed comes first and the filter capability second. Slightly terse rather than wasteful, so it is efficient but leaves useful space unused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter list tool with no annotations and no output schema, the description covers the entity and the two filters but never describes what a link record contains or the shape of the response. It is minimally adequate, but with no structured fields to fill the gap it could say more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the UUID formats and the automatic all-pages fetching behavior, so the baseline is 3. The description adds only the filter intent for project_id/feature_id and says nothing about page/per_page, but the schema already handles those thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (links between projects and infrastructure features), and clarifies that these records are association/join rows rather than the assets themselves, which distinguishes it from list_projects or list_infrastructure_assets. It does not explicitly name the sibling get/create/delete_project_infrastructure_asset tools, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by project or feature" describes a capability, not when to reach for this tool versus list_projects, list_infrastructure_assets, or the get_project_infrastructure_asset sibling. No prerequisites, no exclusions, no statement of what this returns that the alternatives do not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_locationsAInspect
List location assignments for projects. Filter by project_id or location_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| location_id | No | Filter by location ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly frames this as a read/list operation and indicates the filtering capability, but says nothing about result scope when unfiltered, permissions, or the automatic pagination behavior that the schema alludes to. For a low-risk list tool this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded ahead of the filter hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With all four parameters fully documented in the schema and no output schema required, the description supplies enough for an agent to call the tool correctly. It could be more complete by clarifying unfiltered behavior, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including page/per_page) are already documented in the schema. The description restates the two filter parameters without adding format, matching, or behavior detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List location assignments for projects'), which cleanly separates it from siblings like list_project_sites, list_project_buildings, and list_locations. It does not explicitly name a sibling it is not, but the resource is specific enough for disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by project_id or location_id' implies the two usage modes (all assignments vs. scoped by project or location) but never states when to prefer this tool over alternatives or what happens with no filter. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_milestonesBInspect
List project milestones. Filter by project or status (pending, completed, missed, at_risk).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by milestone status | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only establishes that this is a filtered list (implicitly read-only). It omits the notable auto-pagination behavior that the schema documents (all pages fetched automatically by default), which is meaningful behavioral context for an agent issuing large queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and followed by the filtering options; nothing extraneous. It is efficient if slightly bare for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with a fully documented schema and no output schema, the description is adequate but does not surface pagination semantics or the read-only nature that would help an agent call it correctly. With no annotations available, slightly richer context would be warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including enum values, defaults, and max lengths. The description adds only a redundant restatement of the project_id and status filters, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific verb (List) and resource (project milestones), distinguishing it from the singular get_project_milestone sibling by implication. It does not explicitly name alternatives or contrast with list_project_tasks/risks, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage by naming two filter axes (project, status) and enumerating status values, which implies a filtered-listing use case. However, it gives no explicit when-to-use guidance, no mention of when to prefer get_project_milestone, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_phase_categoriesBInspect
List project phase categories (e.g., Planning, Design, Execution). Sorted by sort_order.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one useful trait (results sorted by sort_order) but says nothing about permissions, whether it is read-only, or the automatic all-pages fetch behavior documented only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no waste; the resource and examples are front-loaded and the sorting behavior follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description could reasonably say more about the returned fields or pagination behavior. For a simple read-only list tool the current content is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, and per_page are fully documented in the schema itself. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (project phase categories) and even gives examples (Planning, Design, Execution) to disambiguate from the sibling list_project_phases. It does not explicitly contrast with siblings like list_project_phases, but the resource name and examples make the distinction reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no mention of prerequisites, and no routing between this and related list tools such as list_project_phases. An agent gets no help deciding when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_phasesAInspect
List project phases. Filter by project or status (pending, in_progress, completed, skipped).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| status | No | Filter by phase status | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the available status values, which is useful behavioral context, but says nothing about pagination semantics, default sorting, permissions, or result volume. For a read-list tool this is adequate but leaves real gaps since no structured hints exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the primary purpose, followed immediately by the filterable dimensions. Every clause earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 params, 100% schema coverage, and no output schema, the description covers purpose and filters but omits the return shape and pagination behavior. The schema documents per_page defaults, yet the description doesn't surface the auto-pagination behavior that matters when calling. Complete enough to call, not complete enough to predict results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the full parameter semantics (page, per_page, status enum, project_id) are already documented in the schema. The description restates the two filterable parameters without adding format or usage details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List project phases'), clearly distinguishing it from siblings like get_project_phase (singular) and list_projects. The sibling set is enormous, but the resource noun is precise enough for an agent to match it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool's purpose through its filters, but offers no explicit when-to-use guidance, no mention of when to prefer get_project_phase, and no prerequisites. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_risksBInspect
List project risks (risk register). Filter by project, status, category, probability, or impact.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| impact | No | Filter by impact level | |
| search | No | Search by name | |
| status | No | Filter by risk status | |
| category | No | Filter by risk category | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| probability | No | Filter by probability |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' weakly implies a read-only operation, but the description says nothing about permissions, whether all risks are returned when unfiltered, or pagination behavior. The schema documents page/per_page auto-fetching, but the description adds no behavioral context of its own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded before the filter list. It is appropriately sized for a simple list tool, though the second sentence is largely a restatement of filterable columns already implied by the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with zero required parameters, 100% schema coverage, and no output schema, the definition covers the essential purpose and filter surface. What is missing (default sort order, pagination semantics, relationship to get_project_risk) is modest but not critical given the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does enumerate the filterable fields (project, status, category, probability, impact), matching five of the eight parameters, but omits search, page, and per_page, and adds no syntax or semantic detail beyond the schema's own enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List project risks') and clarifies the domain with the parenthetical '(risk register)'. It clearly reads as a collection query, distinguishable from get_project_risk and create/update/delete_project_risk by verb. However, it does not name any sibling explicitly to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists filter dimensions but never states when to use this tool versus get_project_risk (single item) or the create/update/delete risk siblings. No prerequisites, no exclusions, no guidance on narrowing results. Usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsAInspect
List capital projects. Filter by status or health status (on_track, at_risk, delayed, critical). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by project status | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| health_status | No | Filter by health: on_track, at_risk, delayed, critical |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses that monetary amounts are bare numbers with no currency and that get_organization_settings must be called for currency_code, which is real behavioral context beyond the schema. It says nothing about permissions, result limits, or ordering, and the read-only nature is only implied by "List".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and filters, ending with the currency caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by flagging the currency interpretation issue for returned amounts. Pagination behavior is left entirely to the schema, and no mention is made of default ordering or result size, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the health enum values that the description restates. The only added semantic value is the currency caveat tied to interpreting returned amounts, not the parameters themselves, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List capital projects") and names the two filter dimensions, so it is distinguishable from the many list_project_* sub-resource siblings. It does not explicitly contrast itself with get_project or with nested collections like list_project_tasks, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the supported filters (status, health status) but gives no when-to-use or when-not-to-use guidance and does not point to any alternative tool for a different slice of project data. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_sitesBInspect
List site assignments for projects. Filter by project_id or site_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and 'List' weakly signals a read-only operation. It does not state that results are paginated or auto-fetched in full (that lives only in the schema), nor does it describe what a returned assignment record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and followed by the filtering capability. No filler, though the second sentence is almost redundant with the parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-required-parameter list tool with a fully documented schema and no output schema, the description is adequate but thin: it never says whether an empty filter returns everything, which is the key behavioral question an agent will have.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both filter parameters, page and per_page are already fully documented in the schema. The description only restates the two filter names, adding no format or behavior detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List site assignments for projects'), which distinguishes it from the bare list_sites sibling by scoping to project-site assignments. It does not, however, name or differentiate itself from near neighbors like get_project_site or list_vendor_site_assignments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies the intended use (retrieve assignments filtered by project or site), but there is no explicit when-to-use/when-not guidance or pointer to an alternative for unfiltered listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_system_classesAInspect
List system class assignments for projects. Filter by project_id or system_class_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| system_class_id | No | Filter by system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the filtering dimension but says nothing about read-only safety, permissions, or result shape; the auto-pagination behavior lives only in the schema. For a low-risk list operation this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with no redundant or filler text. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description could usefully say what a returned assignment record contains, and it omits any note on automatic pagination or default page size. Given the low complexity of a two-filter list tool, this is workable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, project_id and system_class_id are already fully documented. The description names only the two filter parameters and adds no semantics (e.g., whether filters combine, UUID expectations) beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (system class assignments for projects), so the intent is unambiguous. It does not, however, distinguish itself from close siblings like list_project_system_groups, list_project_systems, or list_system_classes, which an agent would have to open to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by project_id or system_class_id" implies how to narrow results, but there is no explicit when-to-use guidance, no statement that both filters are optional, and no routing to alternative list tools. 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.
list_project_system_groupsBInspect
List system group assignments for projects. Filter by project_id or system_group_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID | |
| system_group_id | No | Filter by system group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a read-only listing, does not describe pagination behavior (which is only in the schema), does not explain permissions or rate limits, and does not describe the return shape. For a list tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and followed by the filtering constraint. No wasted words, and the essential information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 100% schema coverage and no output schema, the description is minimum viable: it names the resource and the two main filters. However, it does not clarify what an 'assignment' record contains or how pagination works, and with no annotations or output schema there is little else to anchor the agent's expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds only that project_id and system_group_id are filters and can be used alternatively ('or'), without documenting page/per_page. This 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List system group assignments for projects.' It distinguishes the tool from siblings like list_system_groups or list_project_systems by focusing on assignments/associations. It does not explicitly name an alternative, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Filter by project_id or system_group_id' implies usage context: use this tool to retrieve assignments narrowed by either ID. However, it offers no guidance on when to choose this over get_project_system_group, list_project_systems, or list_system_groups, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_systemsBInspect
List system assignments for projects. Filter by project_id or system_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_id | No | Filter by system ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full behavioral burden. It says only 'list' and 'filter'; it omits pagination behavior (schema notes auto-fetch but this is not reinforced), return shape, auth requirements, and any explicit read-only assurance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action. The second sentence is somewhat redundant with the schema's parameter descriptions but remains efficient and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with complete schema descriptions and no output schema, the description covers purpose and filter options but is silent on return shape, ordering, and tool selection relative to get/list alternatives. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters including pagination and filters are already documented. The description repeats project_id and system_id filtering without adding syntax, constraints, or meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('system assignments for projects'), distinguishing it from single-item get_project_system and write operations create/delete_project_system. However, it does not explicitly differentiate from closely named siblings like list_project_system_classes or list_project_system_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides filter options (project_id or system_id) but gives no guidance on when to choose this tool over alternatives such as get_project_system or list_systems, and states no prerequisites or exclusions. 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.
list_project_task_dependenciesBInspect
List task dependencies. Filter by task_id or depends_on_task_id to see dependency chains.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| task_id | No | Filter by task ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| dependency_type | No | Filter by dependency type | |
| depends_on_task_id | No | Filter by depended-on task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' weakly implies a read operation, but nothing is stated about read-only safety, permissions, or whether dependencies are returned across projects. Pagination behavior is only disclosed in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and zero filler. Sized appropriately for a simple list tool, though it is arguably too sparse to be maximally helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Reasonable for a read-only list tool with 100% schema coverage and no output schema, but with no annotations and no behavioral detail about return shape or scope, an agent must infer more than it should.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented in the schema, which establishes the baseline of 3. The description restates the task_id and depends_on_task_id filters without adding syntax, format, or semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List task dependencies') and adds a scoping hint about dependency chains via task_id/depends_on_task_id. It distinguishes itself reasonably from the singular get_project_task_dependency and from list_project_tasks, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Filter by task_id or depends_on_task_id to see dependency chains' implies how to use it for chain traversal, but there is no explicit when-to-use guidance, no exclusions, and no reference to the sibling get/list tools it overlaps with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_tasksAInspect
List project tasks (work breakdown structure). Filter by project, phase, status, or priority. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by task status | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| phase_id | No | Filter by phase ID | |
| priority | No | Filter by priority | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully warns that amounts are bare numbers with no currency attached, which is a real output quirk not visible in the schema, but it says nothing about permissions, default ordering, or whether archived tasks are included. Pagination behavior that an agent might care about is left entirely to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, each doing work: the first establishes scope, the second handles a cross-cutting output caveat. No filler or restatement of the tool name, though the currency caveat reads slightly tacked-on rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list endpoint with fully documented parameters, no output schema, and no annotations, the definition covers purpose, filter axes, and the one misleading output trait (unitless amounts). Missing details like default sort order or inclusion of cancelled tasks are minor but real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 7 well-documented parameters including enums for status and priority. The description only echoes the filter set already described in the schema, adding no format or syntax detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List project tasks') plus a clarifying parenthetical (work breakdown structure), and names the filterable dimensions. It does not explicitly distinguish itself from adjacent siblings like get_project_task or list_project_task_dependencies, which is the only thing keeping it out of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (filtering a task list) and, more helpfully, a cross-tool instruction: call get_organization_settings for currency_code before stating an amount. There is no explicit 'when not to use' or contrast with alternative list tools, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_team_membersBInspect
List project team members. Filter by project, user, or active status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| user_id | No | Filter by user ID (Clerk ID) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active status ("true" or "false") | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description says nothing about permissions, whether results are scoped to the caller's organization, or pagination behavior (the auto-fetch-all-pages behavior is only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the filtering capability immediately after. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, filter-driven list tool with no output schema and full parameter documentation, the description is adequate but thin. It does not mention pagination defaults or the scope of returned members, leaving minor gaps an agent might care about.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, giving a baseline of 3. The description mentions only three filter dimensions (project, user, active status) and omits page, per_page, and search, adding little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List project team members'), which clearly separates it from get_project_team_member and the create/update/delete variants. However, it does not name or distinguish itself from other list_* tools in the family beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by project, user, or active status' implies the intended filtering scenarios, so usage is partially inferable. There is no explicit when-to-use guidance versus get_project_team_member for single-record retrieval, and no statement of when filters should be combined or omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_time_entriesBInspect
List project time entries for labor tracking. Filter by project, task, or user.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| task_id | No | Filter by task ID | |
| user_id | No | Filter by user ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether results are sorted, what fields are returned, rate limits, or permission/auth requirements. The pagination and auto-fetch behavior is only disclosed in the schema, not the description, leaving the behavioral profile thin for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with zero filler. Every phrase carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-list tool whose schema fully documents all five parameters (including pagination), the description covers the essentials. Still, with no output schema and no annotations, nothing explains the shape or ordering of the returned entries, leaving the definition minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including pagination semantics, so the schema already does the heavy lifting. The description names the filter dimensions (project, task, user) but adds no format, ID, or default-value detail beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (project time entries) plus the domain intent ('for labor tracking'). It is clearly distinguishable from the single-record get_project_time_entry, though it never explicitly contrasts with a sibling list tool. Clear and unambiguous, but no sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Filter by project, task, or user' implies the intended use cases and available narrowing options. However, there is no explicit when-to-use guidance, no exclusions, and no pointer to an alternative tool for related lookups. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_updatesAInspect
List periodic project updates (status reports). Filter by project, timeframe, or year.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| timeframe | No | Filter by timeframe | |
| project_id | No | Filter by project ID | |
| period_year | No | Filter by year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'List' implies a safe read, and the schema discloses automatic pagination, but the description adds no context on permissions, result volume, or ordering beyond the implicit read semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core purpose front-loaded before the filter hint. Nothing padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with 100% schema coverage and all-optional params, the description is nearly sufficient. No output schema exists but a list tool's return (the updates) is self-evident; only the missing behavioral/permission context keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (page, search, per_page, timeframe, project_id, period_year) are already documented. The description's mention of project/timeframe/year filtering maps to params but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'List periodic project updates' and clarifies the entity with '(status reports)'. An agent knows exactly what this returns, though it does not distinguish itself from siblings like list_project_comments or get_project_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by project, timeframe, or year' implies when the filters apply but gives no guidance on when to use this tool versus a single-record get_project_update or other list_* siblings. 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.
list_purchase_order_linesAInspect
List purchase order line items: description, optional part, quantity, unit_cost and quantity_received. Filter by purchase_order_id or part_id. A PO with lines takes its amount from them. unit_cost is a bare number with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| part_id | No | Filter by part ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| purchase_order_id | No | Filter by purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full disclosure. It mentions field details, the amount derivation ('A PO with lines takes its amount from them'), and a critical cross-tool rule about currency_code. But it omits pagination behavior (default all pages fetched automatically) and whether the operation is read-only, which are important for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences: first defines the list and fields, second states filtering, third provides a critical cross-tool note. Every sentence is information-dense and front-loaded with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is quite complete for a list tool with a fully documented schema and no output schema. It covers returned fields, filtering, and a crucial cross-tool instruction for unit_cost. The only gaps are pagination behavior and read-only nature, but these are minor given the schema already indicates automatic paging.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters (page, per_page, part_id, purchase_order_id) are fully documented in the schema. The description adds filter semantics for purchase_order_id and part_id, but does not cover pagination parameters or provide additional syntax beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'List' and resource 'purchase order line items', then enumerates the returned fields, leaving no ambiguity about what the tool does. This distinguishes it from get_purchase_order_line (singular) and list_purchase_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the two filtering options ('Filter by purchase_order_id or part_id'), giving clear usage context. However, it doesn't contrast with the sibling get_purchase_order_line for fetching a single line, leaving a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_purchase_order_linksAInspect
List the extra records a purchase order is linked to for reference: each row has exactly one of work_order_id, pm_schedule_id or project_id. Links never add to committed cost; the PO is charged only to its own project_id / work_order_id. Filter by any of those four IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| project_id | No | Filter by linked project ID | |
| work_order_id | No | Filter by linked work order ID | |
| pm_schedule_id | No | Filter by linked PM schedule ID | |
| purchase_order_id | No | Filter by purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral load, and it does add valuable context: it explains that links never add to committed cost and that the purchase order is charged only to its own project_id/work_order_id. However, it omits other behavioral traits like pagination behavior, rate limits, or authentication requirements, which would be expected for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two succinct sentences, front-loading the core purpose and then adding important behavioral context about cost impact. Every sentence serves a clear purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's relative simplicity (a list with filters, no output schema, no annotations), the description covers the essential aspects: what it lists, the structure of results, cost implications, and filtering options. It could be improved by mentioning pagination defaults (though the schema covers this) or clarifying typical use cases, but overall it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all six parameters, so the baseline is 3. The description's statement that you can filter by any of the four IDs (purchase_order_id, work_order_id, pm_schedule_id, project_id) adds some semantic meaning about the filter options but does not provide syntax or format details beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb (List) and resource (extra records... linked to a purchase order) and clarifies the output shape (each row has exactly one of work_order_id, pm_schedule_id or project_id). This distinguishes it from sibling tools like list_purchase_orders and list_purchase_order_lines, which deal with orders or lines rather than links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions filtering by any of the four IDs but does not explicitly state when to use this tool versus alternatives (e.g., when to list links vs. get a single link or list the parent purchase orders). No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_purchase_ordersAInspect
List purchase orders. Filter by status (draft, issued, partially_received, received, closed, cancelled), vendor, or project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: draft, issued, partially_received, received, closed, cancelled | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| vendor_id | No | Filter by vendor ID | |
| project_id | No | Filter by project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds genuinely useful context not present in the schema: amounts are bare numbers with no currency, and the agent must call get_organization_settings for currency_code before stating a currency. However, it is silent on read-only/scope/pagination behavior, so it only partially covers what annotations would otherwise supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and the currency caveat attached to the filter list; no filler. Slightly over-packed rather than wasteful, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must hint at return behavior; it does so by flagging that amounts lack currency. Pagination and search are covered by the schema. Coverage is solid for a list tool, with minor gaps around ordering and result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters. The description restates the status enum and mentions vendor/project filtering, adding no syntax or format detail beyond the schema; the currency note concerns return values, not parameter meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List purchase orders') and enumerates the filterable dimensions, so the agent knows exactly what the tool does. It does not explicitly distinguish itself from the many sibling list_* tools (e.g. list_purchase_order_lines), but the resource noun is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the filterable fields (status, vendor, project), which implies when the tool is useful, but gives no explicit when-to-use vs. when-not guidance or naming of alternatives among siblings. The one cross-reference (get_organization_settings) is for currency interpretation, not for selecting this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_areasAInspect
List service areas (Level of Service groupings). Filter by active status or search by name.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| is_active | No | Filter by active status (true/false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. 'List' strongly implies a non-mutating read, and the filtering capabilities are stated, but pagination behavior, result ordering, and the fact that all pages are auto-fetched (present only in the schema) are not surfaced in prose. Adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource identity front-loaded and the filter capabilities immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully documented parameters and no output schema, the definition covers purpose and filters adequately. It stops short of describing the shape of a returned service area or result ordering, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, per_page, and is_active are all already documented with defaults and bounds. The description restates the active-status and name-search filters but adds no format, matching semantics, or default behavior beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('service areas') and adds a clarifying gloss that these are Level of Service groupings, which disambiguates the domain term. It is clearly distinct from get_service_area and the list_service_area_* siblings by virtue of the resource name, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies usage by naming the two filter modes (active status, name search), so an agent can infer when this tool applies. However, there is no explicit when-to-use versus get_service_area or list_service_area_sites, and no stated preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_area_sitesBInspect
List site links for service areas. Filter by service_area_id or site_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| service_area_id | No | Filter by service area ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb 'List' implies a read-only, non-mutating operation, and the schema's page/per_page descriptions already disclose the auto-pagination behavior. Beyond that, the description says nothing about return shape, ordering, or permissions, which for a low-risk list tool is an acceptable but not rich level of disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded before the filtering hint. Nothing is padded, though the second sentence largely duplicates what the schema already conveys about site_id/service_area_id filters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, no-output-schema list tool this covers the essentials: what it lists and how to filter. It omits what a 'site link' record represents and any differentiation from adjacent list tools, leaving a modest gap for an agent choosing among many list_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, per_page, site_id, service_area_id) are already documented with format and default details. The description restates the two filter parameters without adding format, cardinality, or combination semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List site links for service areas'), which is enough to identify this as the join-entity listing between service areas and sites. It does not explicitly distinguish itself from siblings like list_service_areas, list_sites, or create_service_area_site, but the resource is discrete and identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Filter by service_area_id or site_id' implies the two ways to narrow results, and the schema's page/per_page defaults imply unfiltered calls fetch everything. There is no explicit when-to-use guidance, no statement of when to prefer list_sites or list_service_areas instead, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_area_system_classesBInspect
List system class links for service areas. Filter by service_area_id or system_class_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| service_area_id | No | Filter by service area ID | |
| system_class_id | No | Filter by system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies read-only, but the description never confirms it is a safe read, never mentions the automatic full-pagination behavior that the schema hints at, and says nothing about return shape. For a no-annotation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core action is front-loaded ahead of the filtering hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only place to explain what a 'link' record contains and how pagination behaves. For a simple, zero-required-param read tool this is minimally adequate, but the return semantics and read-only nature are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, including page/per_page pagination semantics. The description restates the two filter parameters but adds no syntax or meaning beyond the schema, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it lists the join/link records between service areas and system classes, not the entities themselves. An agent can distinguish it from list_service_areas or list_system_classes. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Filter by service_area_id or system_class_id' implies how to narrow results but gives no when-to-use guidance versus the many other list_* siblings and no exclusions or prerequisites. 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.
list_site_fci_historyAInspect
List Facility Condition Index (FCI) history for sites. Track FCI trends over time. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it adds genuinely useful domain context: the 0-100 FCI scale with its five severity bands. It does not disclose behavior such as default ordering, whether results span all sites when site_id is omitted, or read-only nature, though the schema covers automatic pagination. Adds value but leaves gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and resource, then the trend use case, then the interpretive scale. Every sentence earns its place; the score banding could arguably live elsewhere, but it is compact and useful for reading the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, no-output-schema, read-only listing tool, the description covers what is returned (FCI history) and how to interpret the values. Missing only minor context like default result ordering or whether omitted site_id returns all sites, which an agent would likely want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page, site_id, and per_page all documented including defaults, so the schema already does the heavy lifting. The description adds no parameter-specific format or semantics beyond that, which is the expected baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Facility Condition Index (FCI) history for sites') and adds scope ('Track FCI trends over time'), which distinguishes it from the singular sibling get_site_fci_history_entry. It stops short of explicitly naming that sibling as the alternative, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Track FCI trends over time' implies the use case, so an agent can infer this is for historical/trend analysis rather than a single point lookup. However, there is no explicit when-to-use/when-not guidance and no named alternative such as get_site_fci_history_entry for single-record retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesBInspect
List all sites (physical locations/campuses) in your organization. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Filter by city name | |
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that returned amounts are bare numbers lacking currency and requires a follow-up call to get_organization_settings before quoting them, but it does not address permissions, rate limits, or other read-operation traits beyond what 'List' already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first front-loads the purpose and scope, and the second adds a focused data caveat. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with 100% parameter schema coverage and no output schema, the description is nearly complete. It covers the resource meaning and a key return-value nuance, though it omits guidance on alternatives and does not describe any pagination behavior (which the schema largely handles).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four optional parameters (city, page, search, per_page). The description adds no parameter-level meaning beyond that, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (sites), and clarifies that sites are physical locations/campuses. It is clear and unambiguous, but it does not distinguish this tool from siblings such as get_site or list_locations, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use list_sites versus alternatives like get_site or list_locations. The only conditional instruction concerns a follow-up call for currency conversion, not tool selection, so usage guidance is essentially absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_system_classesBInspect
List system classes (top-level classification, e.g., "HVAC", "Plumbing", "Electrical").
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'List' implies a read-only operation and the examples clarify the resource, but the description does not disclose permission requirements, side effects, or return behavior beyond what the schema already covers for pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that identifies the resource and gives useful examples without any wasted words. It is appropriately sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, complete schema coverage, and absence of an output schema, the description is nearly sufficient. Its only notable gap is not contextualizing this global list against the project- and service-area-scoped system class list siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three optional parameters, so the schema already explains page, search, and per_page. The description adds no parameter-level meaning beyond what is in the schema, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('system classes') and provides concrete examples ('HVAC', 'Plumbing', 'Electrical'). It does not distinguish this global list from sibling list_project_system_classes or list_service_area_system_classes, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_project_system_classes or list_service_area_system_classes. It also provides no prerequisites or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_system_groupsBInspect
List system groups (categories of systems, e.g., "Heating", "Cooling"). Optionally filter by system class.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_class_id | No | Filter by system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden, but for a non-destructive list operation there is little risk to disclose. The schema itself documents pagination behavior (auto-fetch all pages, max 1000), which the description does not repeat. It adds minimal context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The parenthetical definition is compact and aids comprehension. It does not pad or restate the name gratuitously.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with 100% schema coverage and no output schema, the description is minimally adequate. It omits the system-vs-project scope relationship to its closest siblings, which is the main ambiguity an agent would face in this large toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (page, search, per_page, system_class_id) are already fully documented in the schema. The description's mention of filtering by system class adds nothing beyond the system_class_id schema description, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (system groups), and even disambiguates the domain concept with concrete examples ("Heating", "Cooling"). However, it does not distinguish itself from the very similar sibling list_project_system_groups, so an agent must infer the system-scoped vs project-scoped distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is "Optionally filter by system class," which is parameter usage, not when-to-use guidance. There is no statement about when this tool is preferable to list_project_system_groups, list_system_classes, or list_systems, all of which sit adjacent in the toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_system_los_targetsAInspect
List technical Level of Service targets for building systems. One base target per system and metric, set once for the organization. Each building is held to a version adjusted by its criticality: a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical facility, 58 at a Low one). Derived targets never leave the metric's scale. Metrics: fci (0-100 percent, lower is better), asset_condition_avg (0-100, higher is better, read with the fixed condition bands), asset_past_useful_life_pct (0-100 percent, lower is better), risk_score_avg (0-25, lower is better). None of these values are money. Filter by system, metric or active.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| active | No | Filter by active (true) or paused (false) | |
| metric | No | Filter by metric | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_id | No | Filter by system ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that targets are base-per-system/metric set once at the organization level, that per-building values are derived via criticality modifiers, and that derived values stay on the metric scale. It omits permission/pagination/return-shape behavior, but 'List' plus the schema choices cover most of that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by domain semantics and filters. It is dense but largely load-bearing; the worked example ('condition 70 becomes 82...') is somewhat heavy for a listing tool, keeping it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies the domain model needed to interpret results (base vs derived targets, metric scales) and the filterable dimensions. Return-field detail and pagination behavior are absent, but the schema documents pagination parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: for each enum value it gives the numeric range and direction (fci 0-100 lower-is-better, risk_score_avg 0-25 lower-is-better, etc.) and clarifies none are currency. That is meaningful semantic enrichment of the metric enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List technical Level of Service targets for building systems') with cardinality clarified ('one base target per system and metric'). It does not name or distinguish itself from close siblings like list_infrastructure_los_targets, list_los_proposed_targets or list_los_targets_history, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence 'Filter by system, metric or active' implies when the tool is useful, but there is no explicit when-to-use/when-not guidance and no alternative tool is named for adjacent needs (proposed targets, history, infrastructure targets). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_systemsBInspect
List systems (e.g., HVAC units, plumbing systems, electrical systems). Optionally filter by system group.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| system_group_id | No | Filter by system group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the 'List' verb strongly implies a non-destructive read, which is the right inference. The description does not disclose scope (all systems in the org vs. site-scoped) or return behavior, but the schema already documents automatic all-pages fetching, covering the main behavioral question an agent would have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core purpose is front-loaded ahead of the optional filter note. It avoids repeating the schema's pagination details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a zero-required-parameter list tool with a fully documented schema and no output schema to explain. However, it omits retrieval scope and any note on ordering, which would matter for an agent deciding between this and the project-scoped list variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, search, and system_group_id are all documented in the schema. The description's mention of the system-group filter adds no syntax or semantics beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List systems') and gives concrete examples (HVAC units, plumbing systems, electrical systems) that clarify what a 'system' means in this domain. It is distinguishable from list_system_groups and list_system_classes, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions an optional filter by system group, implying one usage path, but gives no guidance on when to use this over siblings like list_project_systems or list_system_classes, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersAInspect
List organization members. Returns user IDs, names, emails, and roles. Requires users:read scope. Note: This exposes personal information - only use when the user explicitly requests member data.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it states the required users:read scope and warns that the call exposes personal information. It does not describe pagination behavior or limits, though the schema documents that all pages are fetched automatically.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose before returns, permissions, and the caution. No filler and no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description usefully enumerates the returned fields and covers the auth scope and privacy implication for an annotation-free tool. What remains unaddressed — result size/limits and single-user lookup via get_user — is minor for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (page, per_page) are fully documented in the schema, so the baseline of 3 applies. The description adds no parameter-level information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List organization members') and enumerates the return fields (IDs, names, emails, roles). It does not distinguish itself from the sibling get_user, which fetches a single user, leaving that boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit usage constraint — 'only use when the user explicitly requests member data' — which is a real when-to-use rule rather than boilerplate. It stops short of naming alternatives (get_user) or stating when-not to call it beyond the PII caution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vendorsBInspect
List vendors. Filter by status, category, or city.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Filter by city (partial match) | |
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by vendor status | |
| category | No | Filter by category (matches vendors that include this category) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about read-only safety, return format, or the auto-pagination behavior that the params ('default: all pages fetched automatically') imply. For a 6-param list tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the core purpose leads and filters follow. It is slightly under-specified rather than padded, but it wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and six parameters, the description should at least mention the pagination default or the shape of the returned list. It covers the filters but leaves safety and result behavior unaddressed, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so semantics for search, page, and per_page are already documented in the schema, making the baseline 3. The description restates three of the six filters (status, category, city) without adding match semantics beyond what the schema already specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List vendors') and enumerates three filter dimensions, so an agent can immediately distinguish this from mutation siblings like create_vendor or update_vendor. However, it doesn't differentiate from the closest read alternative, get_vendor (single-record fetch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage ('Filter by status, category, or city') but gives no explicit when-to-use or when-not-to-use guidance, and does not mention the single-record sibling get_vendor or list_vendor_site_assignments as alternatives. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vendor_site_assignmentsBInspect
List vendor-to-site assignments showing which vendors serve which sites.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| vendor_id | No | Filter by vendor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys no read-only guarantee, no permissions/authentication requirements, no pagination behavior, and no hint about return shape for a tool that returns a collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the action and resource with zero padding. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool whose parameters are fully documented in the schema and with no output schema, the description is minimally sufficient. However, with no annotations, it should do more to signal that this is a safe, non-mutating, paginated query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – page, per_page, site_id, and vendor_id are all documented in the schema itself. The description adds no filtering semantics or format detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (List) and resource (vendor-to-site assignments) and adds a clarifying gloss ('which vendors serve which sites'). It does not explicitly distinguish itself from the get_vendor_site_assignment sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb 'List' – the agent can infer this is for browsing the vendor/site association set. There is no explicit when-to-use, when-not-to-use, or pointer to an alternative (e.g. get_vendor_site_assignment for a single record).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_categoriesBInspect
List work categories used to classify work orders and requests. Each has a module: facilities, infrastructure, or null (shared by both). Pick a category whose module matches the work - infrastructure for work on a feature, facilities otherwise - or a shared one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| module | No | Only categories in this workspace; none = shared categories only | |
| search | No | Search by name | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It helpfully discloses the data model - module is facilities, infrastructure, or null (shared) - which is real behavioral context about the entity. But it omits operational behavior such as read-only nature (only implied by 'List'), pagination, and what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core purpose followed by the module semantics and selection rule. No filler, though the closing selection sentence is somewhat tangential to invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter list tool with no output schema and no annotations, the description covers the entity semantics well but does not describe the return shape or pagination behavior, leaving an agent uncertain about what the listing yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (page, module, search, per_page) are already documented, making 3 the baseline. The description adds interpretation of the module values for selection decisions, but says nothing about page, per_page, or search semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List work categories') and clarifies their role by naming what they classify ('work orders and requests'). This distinguishes it from create/update/delete_work_category siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives guidance on how to choose a category by module ('infrastructure for work on a feature, facilities otherwise'), which is useful selection context. However, it does not state when to call this tool versus alternatives (e.g., search or filtered list variants), leaving the when-to-use dimension implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_order_commentsBInspect
List comments on work orders. Filter by work_order_id to get comments for a specific work order.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| work_order_id | No | Filter by work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'List' signals a read-only, non-destructive operation, which is useful, but nothing is said about pagination behavior (the schema notes all pages are auto-fetched), permissions, or result shape. Minimal but not misleading behavioral coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no padding. The second sentence largely echoes the work_order_id schema description, so it earns slightly less than a perfect score, but the definition is tight overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-list tool with no output schema, the description covers the essential action and the scoping parameter. It omits pagination defaults and any note on how many results or what fields are returned, leaving the agent to rely entirely on the schema for those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, and work_order_id are already fully documented in the schema. The description restates the work_order_id filter's effect but adds no syntax, format, or default details beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List comments on work orders'), which clearly separates it from the singular sibling get_work_order_comment and from create_work_order_comment. It does not name those siblings explicitly, but the read/list distinction is unambiguous from the name and text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells the agent how to scope the query ('Filter by work_order_id to get comments for a specific work order'), which is the main usage decision. It offers no explicit when-not guidance or route to alternatives such as get_work_order_comment for a single comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_ordersAInspect
List work orders. Filter by status (NEW, IN_PROGRESS, ON_HOLD, COMPLETED, CANCELLED), priority (LOW, MEDIUM, HIGH, CRITICAL), type (CORRECTIVE, PREVENTIVE, EMERGENCY, INSPECTION), and site. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| type | No | Filter by type: CORRECTIVE, PREVENTIVE, EMERGENCY, INSPECTION | |
| search | No | Search by name | |
| status | No | Filter by status: NEW, IN_PROGRESS, ON_HOLD, COMPLETED, CANCELLED | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| priority | No | Filter by priority: LOW, MEDIUM, HIGH, CRITICAL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the encyclopedic enum domains and, crucially, a non-obvious data caveat — amounts are bare numbers and currency_code must be fetched from get_organization_settings before any monetary claim. That cross-tool dependency is real behavioral context not present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences, no filler: purpose, filter axes, then a migration/data caveat. The final currency sentence is slightly tangential to a listing call but is genuinely load-bearing for downstream use of the returned amounts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with no output schema and no annotations, the description covers filtering and one data caveat but says nothing about the shape of the returned list, default scoping, or pagination behavior (the latter is delegated to the schema). Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, per_page, search, and site_id are already documented, and the description largely repeats the enum values that already appear in the status/type/priority schema descriptions. It adds no syntax or format detail beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('List work orders') and enumerates the filterable dimensions, so an agent can tell it apart from get_work_order or create_work_order at a glance. It does not explicitly name a sibling or scope the listing (e.g., all sites vs. one), which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Filter by status... priority... type... and site', which tells the agent when the filters apply, but there is no explicit statement of when to use this versus get_work_order (single record) or bulk_update. The condition selecting this tool over its siblings 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.
list_work_order_schedulesAInspect
List work order schedules (technician day plans). Filter by technician_id + scheduled_date to get one technician's ordered day: rows are returned by date, then stop_order (the day-plan stop sequence; rows without stop_order sort last), then start time. travel_time_minutes is a straight-line estimate from the previous stop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| date_to | No | Filter: scheduled_date on or before (YYYY-MM-DD) | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| date_from | No | Filter: scheduled_date on or after (YYYY-MM-DD) | |
| technician_id | No | Filter by technician (Clerk user ID) | |
| work_order_id | No | Filter by work order ID | |
| scheduled_date | No | Filter by exact date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful behavior: the sort order (date, then stop_order, then start time), that rows without stop_order sort last, and that travel_time_minutes is a straight-line estimate from the previous stop. It omits auth/permission or rate-limit context, but for a read-only list tool the ordering semantics are the key behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then usage, then behavioral note in tight sentences with no filler. Slightly 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param list tool with full schema coverage and no output schema, the description supplies the ordering and travel-time semantics needed to interpret results. It could say more about return fields, but is adequate given the schema handles filtering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining that the technician_id + scheduled_date combination produces one technician's ordered day, giving the combined filters semantic meaning beyond the schema's per-parameter text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ("List work order schedules") and clarifies the domain object with the parenthetical "(technician day plans)". It distinguishes the plural list operation from the singular get_work_order_schedule sibling, though it does not name alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers concrete guidance: "Filter by technician_id + scheduled_date to get one technician's ordered day", describing a specific use pattern. It does not, however, state when-not to use it or point to an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_requestsAInspect
List work requests (submitted by requesters). Filter by status (SUBMITTED, APPROVED, REJECTED, CONVERTED) or priority.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: all pages fetched automatically) | |
| search | No | Search by name | |
| status | No | Filter by status: SUBMITTED, APPROVED, REJECTED, CONVERTED | |
| site_id | No | Filter by site ID | |
| per_page | No | Items per page (default: 1000, max: 1000). All pages are fetched automatically. | |
| priority | No | Filter by priority: LOW, MEDIUM, HIGH, CRITICAL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' implies a read-only operation, but it says nothing about pagination behavior or return shape (both partially covered only in the schema). For a read tool this is acceptable but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short front-loaded sentences with no filler. The parenthetical requester clarification adds meaning, though the enum values are duplicated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter list tool with full schema coverage and no output schema, the description covers what is listed and how to filter. It is complete enough to invoke correctly, with only minor gaps around pagination and sorting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so page, search, status, site_id, per_page and priority are all documented in the schema. The description repeats status/priority filtering without adding syntax or combinability details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (work requests), with a helpful scope note that these are submitted by requesters. It doesn't explicitly differentiate from get_work_request or list_work_orders, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the two filtering use cases (by status or priority), which implies when to reach for it, but there is no when-not guidance and no reference to alternatives like get_work_request for a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_assetAInspect
Update an existing asset by ID. Requires assets:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs. Same for systems: list_system_classes → list_system_groups → list_systems.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID | |
| name | No | Asset name | |
| model | No | Model name/number | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Custom asset identifier (unique per tenant) | |
| quantity | No | Quantity | |
| image_url | No | Image URL | |
| status_id | No | Status identifier | |
| system_id | No | System ID - resolve last via list_systems filtered by system_group_id | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| risk_factor | No | Risk factor (CRITICAL, HIGH, MEDIUM, LOW) | |
| asset_type_id | No | Asset type ID (from asset_types) | |
| purchase_cost | No | Purchase cost | |
| purchase_date | No | Purchase date (ISO 8601) | |
| safety_impact | No | Safety impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| salvage_value | No | Salvage value | |
| serial_number | No | Serial number | |
| cost_per_sq_ft | No | Cost per square foot | |
| service_impact | No | Service impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| condition_score | No | Condition score (0-100) | |
| manufacturer_id | No | Manufacturer ID (from manufacturers) | |
| system_class_id | No | System class ID - resolve first via list_system_classes | |
| system_group_id | No | System group ID - resolve second via list_system_groups filtered by system_class_id | |
| unit_of_measure | No | Unit of measure | |
| regulatory_impact | No | Regulatory impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| replacement_value | No | Cost to replace this asset today, in current dollars. Distinct from purchase_cost, which is what was paid and is the depreciation basis. | |
| reputation_impact | No | Reputation impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| environmental_impact | No | Environmental impact level (LOW, MEDIUM, HIGH, CRITICAL) | |
| current_meter_reading | No | Current meter/odometer reading | |
| last_maintenance_date | No | Last maintenance date (ISO 8601) | |
| unit_replacement_value | No | Unit replacement value | |
| expected_lifetime_years | No | Expected lifetime in years | |
| salvage_value_percentage | No | Salvage value percentage (0-100) | |
| likelihood_of_failure_score | No | Likelihood of failure score | |
| consequence_of_failure_score | No | Consequence of failure score | |
| replacement_value_reviewed_on | No | Date replacement_value was last confirmed (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the required auth scope, which is genuinely useful. However, it never states whether this is a partial/patch update (are unmentioned fields preserved?), what happens on invalid IDs, or what is returned, leaving significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose then auth then the two resolution workflows; every sentence adds operational information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 39-parameter mutation with no annotations and no output schema, the description adequately covers scoping and parent resolution but omits update semantics (partial vs full replacement) and error/response behavior. It is workable but has clear gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents resolve-first/second/last for each hierarchy ID. The description adds the chain-level constraint 'provide all three IDs', which is real value, but says nothing about the other ~35 parameters such as name, model, or the impact scores.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing asset by ID'), so the agent knows precisely what is mutated and what identifies the record. It does not distinguish itself from near-siblings such as update_infrastructure_asset or bulk_update, which an agent in this very large toolset would benefit from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions (assets:write scope) and a concrete resolution workflow for location and system hierarchies, including the instruction to supply all three IDs. It stops short of naming when to prefer bulk_update or update_infrastructure_asset instead, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_bettermentAInspect
Update a betterment by ID. The asset it belongs to cannot be changed - delete and re-create to move one. The row must still add either capital or life after the update. Requires asset_betterments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Betterment ID | |
| description | No | What was actually done | |
| occurred_on | No | Date the work went into service, YYYY-MM-DD | |
| added_life_years | No | Extra service life the work bought, in years | |
| capitalized_amount | No | Amount added to the asset value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers real behavioral facts: an immutable field (asset), a post-update business invariant, and the required authorization scope (asset_betterments:write). It stops short of describing merge vs replace semantics or failure behavior for the invariant, which would be the remaining disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the identity and identifier, then the two invariants. No filler, no repetition of the schema, every sentence carries a distinct constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and no output schema, the description covers identity, immutability, the write scope, and the key data invariant. What is missing is whether omitted fields are cleared (partial vs full update) and what a successful response contains, though the latter is less critical without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds a genuine cross-field constraint that JSON Schema does not express: at least one of capitalized_amount or added_life_years must remain populated after the update. That is meaningful semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a betterment by ID') and is immediately distinguishable from the sibling create/get/delete/list_asset_betterment tools. The follow-on sentences sharpen the scope further rather than restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from an unsupported operation: the parent asset cannot be reassigned, and the stated alternative is delete + re-create. It also states an ongoing validity condition ('must still add either capital or life'), which guides correct invocation. It does not, however, contrast itself with any other update tool or state prerequisites beyond scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_commentAInspect
Update an existing asset comment by ID. Requires asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset comment ID | |
| comment | No | Comment text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required authorization scope (asset_comments:write), which is genuine context beyond the schema. But it does not say whether this is a full replacement or partial update, what happens if the optional comment field is omitted, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action is front-loaded and the scope requirement follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no annotations and no output schema, the description covers the essentials (what it does, key, required scope) but leaves update semantics ambiguous — notably whether an omitted comment means 'no change'. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id, comment) are already documented in the schema; per calibration this sets a baseline of 3. The phrase 'by ID' reinforces the id semantics but adds no format, constraint, or behavioral detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update), resource (asset comment), and lookup key (by ID), which clearly sets it apart from create_asset_comment and delete_asset_comment siblings. It stops short of naming alternatives explicitly, so it does not quite reach the sibling-differentiation level of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'update an existing ... by ID', which signals this is for modifying a comment that already exists rather than creating one. However, there is no explicit when-to-use/when-not guidance and no mention of the sibling tools (create/delete/get/list_asset_comments) an agent should choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_condition_assessmentAInspect
Update an existing asset condition assessment by ID. Requires asset_condition_assessments:write scope. Note: the purchase-cost writeback is create-only and cannot be triggered by an update.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Assessment ID | |
| notes | No | Free-form notes | |
| method | No | Assessment method | |
| defects | No | Structured defect findings (JSON) | |
| assessed_on | No | Assessment date (YYYY-MM-DD, today or earlier) | |
| assessor_id | No | Assessor user ID | |
| condition_score | No | Condition score (0-100) | |
| replacement_cost | No | Current replacement value / CRV |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two non-obvious traits: the required write scope and the fact that the purchase-cost writeback is create-only and cannot be triggered by an update. It still omits update semantics (whether unspecified fields are preserved or cleared, partial vs full replace), which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, the core action front-loaded, followed by the auth requirement and the caveat. No filler; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a standard CRUD update with 8 fully-documented params and no output schema, the description covers the auth requirement and a meaningful behavioral caveat. The remaining gap is the absence of partial-update semantics, which would be helpful for a mutation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 8 parameters is already documented in the schema, including the id format and the method enum. The description adds no parameter-level meaning beyond 'by ID', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Update an existing asset condition assessment by ID'), which cleanly identifies the operation. It does not differentiate itself from the surrounding update_* family or from create/delete/get_asset_condition_assessment beyond the verb, so it stops short of the sibling-aware 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By ID' plus the explicit write-scope requirement implies when the tool is callable, but there is no explicit guidance on when to use this versus create_asset_condition_assessment or delete_asset_condition_assessment, nor any exclusion conditions. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_costBInspect
Update an existing asset cost entry by ID - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset cost ID | |
| amount | No | Cost amount | |
| site_id | No | Site ID | |
| asset_id | No | Asset ID | |
| category | No | Cost category | |
| cost_date | No | Cost date (ISO 8601) | |
| po_number | No | Purchase order number (free text) | |
| building_id | No | Building ID | |
| description | No | Description | |
| work_order_id | No | Work order ID | |
| invoice_number | No | Invoice number (free text) | |
| purchase_order_id | No | Purchase order that paid this cost - resolve via list_purchase_orders. Counts against the order's remaining balance unless the cost belongs to a work order; null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully discloses the required auth scope (asset_costs:write), which is genuine value. But for a mutation tool it omits partial-update semantics (merge vs replace), whether omitted fields are preserved, and any reversibility/permission caveats beyond the scope hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the verb+resource front-loaded and no filler. The dash-clause adds a useful disambiguation anchor without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations and no output schema, the description is thin. It covers purpose, scope, and a record-type hint but leaves partial-update behavior and the relationship to sibling update tools unexplained, which an agent would likely need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters, including the enum category and the null-clears behavior for purchase_order_id. The description adds nothing parameter-level beyond 'by ID', so the baseline 3 for schema-covered params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing asset cost entry by ID') and adds a context anchor tying the record to the AssetLab 'Expenses' page. This helps distinguish it from the many other update_* siblings, though it never explicitly names the closest alternatives like update_expense or update_infrastructure_asset_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'existing ... entry by ID' signals a modification of a pre-existing record, and the Expenses-page reference hints at the domain. However, there is no explicit when-to-use/when-not guidance and no routing to or away from the numerous overlapping update siblings (update_expense, update_infrastructure_asset_cost).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_documentCInspect
Update an asset document by ID. Requires asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset document ID | |
| name | No | Document name | |
| user_id | No | Uploader user ID | |
| asset_id | No | Asset ID | |
| category | No | Document category | |
| file_path | No | Storage path | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only discloses the required scope (asset_documents:write). It does not state whether the update is partial or full, what happens to omitted fields, whether the operation is reversible, or any rate-limit/conflict behavior for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences, front-loaded with the action and then the scope requirement. Nothing is wasted, though it is on the sparse side rather than optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description is too thin. It omits partial-update semantics and any preconditions beyond scope, leaving significant gaps for an agent invoking a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all 9 parameters (including the enum on category) are documented in the schema. The description adds no additional meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (update) and resource (asset document) and scopes it by ID. It is clear what the tool does, but it does not distinguish itself from near-identical siblings such as update_infrastructure_asset_document, so an agent still has to rely on the name alone to pick the right one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no reference to alternatives like bulk_update or the infrastructure-asset variant. The agent is left to infer the appropriate context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_lifecycle_eventAInspect
Update a facility lifecycle strategy event by ID. Editing re-confirms the cost (cost_reviewed_on is server-set). Set is_active false to disable an event without deleting it - projections recompute immediately. Requires asset_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID | |
| name | No | Event name | |
| is_active | No | Disable/enable the event | |
| fixed_cost | No | Fixed cost per application (current dollars, never indexed) | |
| sort_order | No | Evaluation order within the strategy | |
| cost_source | No | Provenance of the cost ("Engineering 2026", a tender reference) | |
| event_class | No | Event type - preventative maintenance or rehabilitation | |
| impact_method | No | Effect: add years of life, or reset condition to a value | |
| impact_reset_to | No | Condition after the event (required when impact_method is reset_condition) | |
| work_generation | No | What a due application of this event becomes when created from the interventions list: none (plan only, default), work_order, or project. Nothing is created on a schedule. | |
| impact_add_years | No | Years added (required when impact_method is add_years) | |
| max_applications | No | How many times the event may fire over an asset's life (default 1) | |
| min_years_between | No | Minimum years between firings of a recurring event (default 1) | |
| trigger_condition_max | No | Upper bound of the trigger window - the event fires when projected condition falls to this | |
| trigger_condition_min | No | Lower bound of the trigger window (default 0); an asset already below it has missed the event | |
| work_generation_priority | No | Priority for generated work orders. Ignored unless work_generation is work_order. | |
| work_generation_category_id | No | Work category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningfully: it discloses a required scope (asset_lifecycle_events:write), a side effect (editing re-confirms cost and cost_reviewed_on is server-set), and downstream behavior (projections recompute immediately on disable). Return format and handling of unmentioned fields remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler; each adds a distinct fact (action, cost re-confirmation, disable mechanism, scope). Slightly dense but appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, annotation-free mutation tool, the description covers scope, key side effects, and the disable mechanism, which is substantial. It does not explain what happens to omitted parameters or the response, but no output schema exists to absorb that. Reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 17 parameters (including the enum-constrained fields) are documented in the schema. The description only adds context for is_active; the baseline of 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a facility lifecycle strategy event by ID'), which clearly separates it from create/delete/get siblings. It does not name a competing sibling within the update family, but the action and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated. The note that setting is_active false disables an event 'without deleting it' hints at an alternative to delete_asset_lifecycle_event, but there is no explicit when-to-use/when-not guidance or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_partBInspect
Update the quantity of an asset-part association by ID. Requires asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset-part association ID | |
| quantity | No | New quantity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required auth scope (asset_parts:write) and that only the quantity field is modified, but says nothing about conflict handling, whether quantity can be set to zero, or what the response contains. It adds some value beyond a bare name but leaves notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste: the first states the action and resource, the second states the prerequisite. Both are front-loaded and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-parameter mutation with no output schema and no annotations, the description covers what is updated, the identifier, and the required scope. It is nearly complete; only minor behavioral detail (e.g., effect of quantity=0) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already names and types both parameters (id and quantity). The description merely echoes 'quantity' and 'by ID' without adding format, range, or edge-case semantics beyond the schema, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and a specific resource ('quantity of an asset-part association') and notes identification by ID, which clearly separates it from get_asset_part, create_asset_part, and delete_asset_part. However, it does not explicitly distinguish itself from update_infrastructure_asset_part, the closest sibling, leaving a small ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a required scope ('asset_parts:write'), which is a prerequisite rather than a when-to-use instruction. There is no statement of when this tool is appropriate versus alternatives such as bulk_update or update_infrastructure_asset_part, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_placementBInspect
Move an asset placement to new coordinates or a different floorplan. Requires asset_placements:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New x coordinate | |
| y | No | New y coordinate | |
| id | Yes | Asset placement ID | |
| region_id | No | New region (set to null to clear) | |
| floorplan_id | No | Move to a different floorplan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the scope requirement (asset_placements:write), which is valuable, but doesn't disclose other behavioral traits: whether the operation is idempotent, what happens to existing coordinates, permissions beyond scope, or whether the move is reversible. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste. The purpose is front-loaded, followed by the required scope. It could be slightly more structured by including usage context, but it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a mutation operation, the description is incomplete: it lacks behavioral details like permissions beyond scope, side effects, or return information. The schema covers parameters well, but the description doesn't compensate for the missing annotation context. It's adequate but has clear gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters including ranges for x/y and the ability to clear region_id. The description adds minimal value beyond the schema, mentioning coordinates and floorplan but not adding format details or constraints. Baseline 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Move an asset placement to new coordinates or a different floorplan.' This clearly distinguishes it from generic update_asset and create_asset_placement siblings. However, it doesn't explicitly name the update_asset_placement sibling or clarify that this is an update operation, but the verb 'move' is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for relocating placements, but provides no explicit when-to-use guidance or alternatives. It does state a prerequisite scope requirement, which is helpful, but doesn't say when to choose this over other update methods or what conditions might prevent movement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_replacement_planCInspect
Update an existing asset replacement plan by ID. Requires asset_replacement_plans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset replacement plan ID | |
| notes | No | Notes | |
| status | No | Status | |
| asset_id | No | Asset ID | |
| priority | No | Priority | |
| estimated_cost | No | Estimated replacement cost | |
| funding_source | No | Funding source | |
| planned_replacement_year | No | Planned replacement year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses the required authorization scope (asset_replacement_plans:write), which is genuine added context, but omits whether the update is partial or full-replace, how unmentioned fields behave, and whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the core action front-loaded and the scope constraint second. No padding or redundancy, though nothing about structure elevates it beyond efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a CRUD update with no annotations and no output schema, the description identifies the target and auth scope but leaves update semantics (partial vs full, effects on omitted fields) unspecified. Adequate minimum viable coverage given the complete schema, but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including enums, ranges and formats is already documented in the schema. The description adds nothing about parameter meaning beyond the schema, so the baseline 3 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (asset replacement plan) with the addressing key (by ID), so the agent knows exactly what the call operates on. It does not differentiate itself from the large set of sibling update_* tools or from list/get/delete_asset_replacement_plan, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no alternatives (e.g. create_asset_replacement_plan or get_asset_replacement_plan), and no prerequisites beyond the scope requirement. It is a bare statement of purpose with no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_statusBInspect
Update an existing asset status by ID. Requires asset_statuses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset status ID | |
| name | No | Status name | |
| module | No | Move the status to a workspace: facilities, infrastructure, or shared (both). | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one concrete fact beyond the schema: the required 'asset_statuses:write scope'. However, it omits key mutation semantics — whether unspecified fields are cleared or preserved (partial vs full replace), and reversibility — which matters for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste, and the core action is front-loaded ahead of the scope requirement. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no annotations and no output schema, the description covers the target and auth scope but leaves update semantics (partial vs full replacement) unexplained. Adequate but with a notable gap for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, name, module, and description. The description adds no parameter-specific meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Update an existing asset status by ID.' An agent can distinguish this from create_asset_status, delete_asset_status, and get_asset_status without ambiguity. It does not explicitly name a sibling, but the update verb plus ID target makes intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites beyond the scope note, and no mention of alternatives or exclusions. The agent is left to infer that this is the mutation path for an existing status versus create/delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_typeBInspect
Update an existing asset type by ID. Requires asset_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset type ID | |
| name | No | Asset type name | |
| group_id | No | Group ID | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the required auth scope ('asset_types:write'), which is genuine behavioral value beyond the schema. However, it omits update semantics that matter for a mutation tool: whether this is a partial or full replacement, what happens to fields not supplied, and how conflicts or invalid IDs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action front-loaded ahead of the scope requirement. It is lean, though arguably under-sized for a mutation tool with four parameters rather than optimally sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents inputs and there is no output schema to explain, so the remaining burden is mutation semantics. The description covers targeting and authorization but leaves partial-update behavior and error handling unspecified, which is the minimum viable level for a write tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema and the baseline is 3. The description only adds 'by ID', which merely restates that the id parameter is the target; it adds no format, defaulting, or clearing semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing asset type') plus the targeting mechanism ('by ID'), which implicitly separates it from the close sibling update_asset_type_group. It does not, however, explicitly name any alternative or clarify scope relative to bulk_update/update_asset_type_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus the many sibling update_* tools, no prerequisites beyond the scope string, and no conditions or exclusions. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_asset_type_groupAInspect
Update an existing asset type group by ID. Requires asset_type_groups:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset type group ID | |
| name | No | Group name | |
| color | No | Color hex code (e.g., #6366f1) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses the required write scope, which is genuine behavioral context. However, it omits whether this is a partial or full-replace update, what happens to omitted fields, and whether changes are reversible — meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded and the prerequisite following. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation with no annotations and no output schema, the description covers the auth prerequisite but leaves update semantics (partial vs full) and response behavior unaddressed. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, name, color, and description fully; baseline is 3. The description adds only 'by ID' and no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (asset type group), and clarifies the identifier-based addressing with 'by ID'. The word 'existing' implicitly separates it from create_asset_type_group, but no sibling is named explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope prerequisite ('Requires asset_type_groups:write scope') gives a real gating condition, but there is no when-to-use/when-not guidance and no mention of alternatives such as delete_asset_type_group or list_asset_type_groups. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_attachmentAInspect
Update an attachment by ID. Requires attachments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Attachment ID | |
| file_url | No | File URL / storage path | |
| file_name | No | File name | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| description | No | Description | |
| uploaded_by | No | Uploader user ID | |
| work_order_id | No | Work order ID | |
| pm_schedule_id | No | PM schedule ID | |
| pm_template_id | No | PM template ID | |
| work_request_id | No | Work request ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required auth scope, which an agent cannot infer from the schema. However, it omits key mutation behavior: whether updates are partial or full-replace (important with 10 optional fields), reversibility, and what happens to unmentioned fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no redundancy. The identifier-based operation comes first and the auth prerequisite follows; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no annotations and no output schema, the description is thin. The schema fully documents fields, but the description should clarify partial-update semantics and the result of the operation, which are the two things an agent calling this tool most needs to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 11 parameters, so the schema already documents every field including id, file_url, file_name, and the linkage IDs. The description adds no meaning beyond what the schema provides, making the 3 baseline appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an attachment by ID'), so the agent immediately knows the operation and that it targets an existing record by identifier. It does not differentiate itself from siblings like create_attachment or update_attachment-adjacent tools, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite ('Requires attachments:write scope'), which is real usage guidance, but says nothing about when to use this versus create_attachment, delete_attachment, or list_attachments, nor about whether the ID must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_budgetBInspect
Update an existing budget by ID. Requires budgets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Budget ID | |
| year | No | Budget year | |
| module | No | Workspace; null for organization-wide | |
| site_id | No | Site ID. Not read by the Budget tab. | |
| building_id | No | Building ID. Not read by the Budget tab. | |
| funding_source | No | 'O&M' or 'Capital' | |
| budgeted_amount | No | Budgeted amount | |
| allocated_amount | No | Allocated amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one genuinely useful fact not present in the schema: the required budgets:write scope. It omits everything else about mutation semantics — whether the update is partial or full replacement, how null values (the nullable 'module' field) are treated, and whether omitted fields are preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and immediately followed by the permission requirement. Nothing is wasted, though the content is so spartan that brevity reflects missing information rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description is under-specified: it never says which fields are updatable, whether a partial payload is allowed, or that 'site_id'/'building_id' are ignored by the Budget tab (a schema-only caveat). Only the auth scope is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 8 parameters, so the schema already documents each field, including the enum values and the null-means-organization-wide semantics for 'module'. The description adds nothing beyond 'by ID', so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (budget) plus the required identifier, so the operation is unambiguous. However, it does nothing to distinguish itself from siblings like update_project_budget_item, create_budget, or delete_budget, leaving sibling disambiguation entirely to the reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Update an existing budget' implies the record must already exist, but there is no explicit when-to-use guidance, no when-not-to-use conditions, and no named alternative (e.g. update_project_budget_item). An agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_buildingAInspect
Update an existing building by ID. Requires buildings:write scope. latitude and longitude must be sent together; send both as null to clear the building position.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Building ID | |
| name | No | Building name | |
| type | No | Building type label | |
| floors | No | Number of floors | |
| site_id | No | Site ID | |
| latitude | No | WGS 84 latitude of the building, in decimal degrees. Must be sent together with longitude. | |
| area_sqft | No | Area in square feet | |
| longitude | No | WGS 84 longitude of the building, in decimal degrees. Must be sent together with latitude. | |
| year_built | No | Year the building was constructed | |
| building_type_id | No | Building type ID (from building_types) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does add real value by naming the required authorization scope (buildings:write) and the null-clearing semantics for position, which go beyond the schema. It does not say whether this is a partial update (what happens to omitted fields) or whether changes are reversible, leaving notable gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: purpose first, then the auth prerequisite, then the one non-obvious parameter interaction. Every sentence earns its place and the ordering is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation with no annotations and no output schema, the description covers the auth scope and the trickiest cross-field rule but omits partial-update semantics and error behavior. Adequate but with clear gaps given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, including the latitude/longitude pairing constraint. The description restates that constraint rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing building by ID'), so the operation is unmistakable. It doesn't explicitly differentiate from sibling update_* tools or from create_building/delete_building, but the verb+resource pairing makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one concrete usage rule – latitude and longitude must be sent together, and both null clears the position – which is genuinely helpful invocation guidance. It stops short of when-to-use guidance relative to alternatives (e.g., bulk_update or update_site for related resources).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_building_typeBInspect
Update an existing building type by ID. Requires building_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Building type ID | |
| name | No | Building type name | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add one genuinely useful behavior: the required 'building_types:write' scope. However, it omits mutation semantics that matter here — whether this is a full replace or a partial update, and what happens to name/description if they are omitted. That gap keeps it at adequate rather than strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and the selection key, with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition covers identity and auth scope but leaves partial-update semantics and failure modes (e.g. invalid ID) unstated. Adequate but with a clear gap the agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, name, and description are already documented in the schema with types and length constraints. The description adds no format or semantic detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing building type') plus the identifier used to select it ('by ID'). This is unambiguous and distinguishes it from create_building_type, list_building_types, and delete_building_type, though it doesn't differentiate from the mass of other update_* tools beyond the resource name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus siblings such as create_building_type or the bulk_update tool, and no prerequisites or exclusions are stated. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_change_orderBInspect
Update an existing change order by ID. Requires change_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Change order ID | |
| notes | No | Notes | |
| amount | No | Amount (negative for credits) | |
| reason | No | Reason | |
| status | No | Status | |
| co_number | No | Change order number | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| approved_at | No | Approval date (ISO 8601) | |
| approved_by | No | Approved by (user ID) | |
| category_id | No | Cost category ID | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and only discloses the required change_orders:write scope. It does not say whether this is a partial or full replace update, how unspecified fields are handled, or what side effects changing status/approved_by/approved_at may trigger on a 12-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and identifier, then the prerequisite scope. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations and no output schema, the description is thin: it omits partial-vs-full update semantics and side effects, which are the details most likely to cause an incorrect call. The schema covers fields, but the operational contract remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters (including the status enum and negative-credit semantics of amount) are already documented in the schema. The description adds no parameter meaning beyond restating the ID, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update), resource (change order), and identifier (by ID), so the operation is unambiguous. It doesn't distinguish itself from near-neighbors like bulk_update or update_change_order variants, but the create/get/delete siblings make the intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by ID' phrasing implies this targets one existing record, and the required write scope is stated, giving usable context. However, there is no explicit when-to-use versus alternatives such as bulk_update or no exclusions, so 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.
update_compliance_itemAInspect
Update an existing compliance item by ID. Requires compliance:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance item ID | |
| name | No | Compliance item name | |
| status | No | Status | |
| system_id | No | Associated system ID | |
| description | No | Description | |
| regulation_reference | No | Regulation or code reference | |
| compliance_period_months | No | Compliance period in months |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the write-permission requirement, which is real behavioral context, but says nothing about partial-update semantics (whether omitted optional fields are preserved or cleared), reversibility, or failure modes on an unknown ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both of which earn their place: the first establishes the operation and target, the second the authorization prerequisite. Nothing is padded and the operation is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the operation and the permission requirement but omits partial-update semantics and result behavior. The 100%-covered schema compensates for field documentation, leaving the description adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 7 parameters, so the schema already documents id, name, status, system_id, description, regulation_reference and compliance_period_months. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing compliance item') plus the identifying key ('by ID'), which separates it cleanly from create_compliance_item, get_compliance_item and delete_compliance_item. It stops short of naming those siblings explicitly, so it is clear rather than exemplary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires compliance:write scope' sentence tells the agent a prerequisite for calling it, which is genuine usage guidance. However, there is no when-to-use vs when-not guidance, no pointer to bulk_update for multi-item edits, and no note on how to locate the ID (e.g. via list_compliance_items).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_compliance_pm_scheduleAInspect
Change the required frequency or weight of a compliance item to PM schedule link. Requires compliance:write scope. To point a link at a different item or schedule, delete it and create a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Link ID - resolve via list_compliance_pm_schedules | |
| weight | No | Relative weight | |
| required_frequency_days | No | Required frequency in days |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses the authorization requirement (compliance:write) and the immutability of the link's endpoints, which is a non-obvious constraint. It stops short of describing what happens to unspecified fields or the response shape, but the key behavioral facts are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each doing distinct work: what changes, what auth is needed, and the delete-and-recreate workaround. Front-loaded with the action and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no annotations and no output schema, the description supplies scope, the mutability boundary, and the fallback workflow — enough to call it correctly. Only minor gaps remain, such as whether id is the only required field and how partial updates are treated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, weight, and required_frequency_days are already fully documented with formats and bounds. The description repeats that frequency and weight are the changeable fields but adds no syntax or constraint detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Change) and a precise resource — the link between a compliance item and a PM schedule — plus the two mutable attributes (frequency, weight). This clearly separates it from create_compliance_pm_schedule, delete_compliance_pm_schedule, and the adjacent update_compliance_item/update_pm_schedule tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the required scope (compliance:write) and, critically, an explicit when-not/alternative: to repoint a link at a different item or schedule you must delete and recreate rather than update. That is exactly the kind of routing guidance an agent needs to avoid an impossible call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_compliance_recordBInspect
Update an existing compliance record by ID. Requires compliance_records:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Compliance record ID | |
| completed_at | No | Completion date-time (ISO 8601) | |
| completed_by | No | User ID who completed | |
| required_frequency_days | No | Required frequency in days | |
| days_since_last_completion | No | Days since last completion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the required write scope and that the target is selected by ID, but does not explain whether the update is partial or full-replacement, what happens to omitted fields, whether the operation is idempotent, or how errors like a missing ID are handled. For a mutation tool with zero annotation coverage, this leaves critical behavior unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action is front-loaded, and the auth requirement follows immediately as supporting information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and no output schema, the description is too thin. It omits update semantics, error behavior, side effects, and confirmation of what changes occur, leaving an agent without enough information to invoke it safely beyond basic identification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (id, completed_at, completed_by, required_frequency_days, days_since_last_completion) are already documented in the schema. The description only echoes the ID lookup and adds no syntax or constraint details beyond what the schema provides, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update an existing compliance record by ID.' This clearly distinguishes it from create, delete, get, and list variants of the same resource. However, it does not differentiate it from close siblings like update_compliance_item or update_compliance_pm_schedule beyond the tool name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a concrete prerequisite ('Requires compliance_records:write scope'), which is useful for knowing when the call will succeed. It gives no guidance on when to use this tool versus alternatives such as update_compliance_item, bulk_update, or update_compliance_pm_schedule, leaving that to be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contractBInspect
Update an existing contract by ID. Requires contracts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contract ID | |
| title | No | Contract title | |
| category | No | Contract category | |
| end_date | No | End date (ISO 8601) | |
| company_id | No | Vendor ID | |
| extendable | No | Whether contract is extendable | |
| start_date | No | Start date (ISO 8601) | |
| annual_cost | No | Annual cost | |
| description | No | Description | |
| quality_score | No | Quality score (1-10) | |
| purchase_order | No | Purchase order reference |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required authorization scope (contracts:write), which is genuine behavioral context. However it is silent on whether omitted fields remain unchanged (PATCH semantics), whether updates are reversible or validated, and what happens on a nonexistent ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the auth requirement second; nothing is padded. It could be slightly tighter, but there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no annotations and no output schema, this is thin. Key facts an agent needs — partial vs. full update semantics, behavior on invalid or missing IDs, and confirmation of what is returned — are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 11 parameters are already documented in the schema, and the description adds no constraints, formats, or field-level meaning beyond it. Baseline 3 applies when the schema does the heavy lifting and the description contributes nothing extra.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (contract) plus the lookup key (by ID), which cleanly distinguishes it from create_contract, delete_contract, and list_contracts. It does not, however, differentiate from sibling update tools at a semantic level beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of alternatives (e.g., create_contract, update_contract_document), and no clarification of whether this is a full or partial update — critical for a tool where only `id` is required. Usage is only weakly implied by the word 'existing'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contract_documentBInspect
Update a contract document by ID. Requires contract_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contract document ID | |
| file_name | No | File name | |
| file_path | No | Storage path | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| contract_id | No | Contract ID | |
| uploaded_by | No | Uploader user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the whole behavioral burden. It does add one genuinely useful fact beyond the schema: the required contract_documents:write scope, telling the agent about an authorization prerequisite. It says nothing about whether omitted fields are preserved, whether the update is reversible, or what happens when the ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler; the identity and scope of the operation plus the permission requirement are front-loaded. Nothing is repeated from the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter mutation with no annotations and no output schema, the definition covers the essentials (what, keyed by what, required scope) but omits mutation semantics that matter here: whether this is a partial patch over six optional fields, and any consequence of removing or overwriting a document. Adequate but with a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (id, file_name, file_path, file_size, file_type, contract_id, uploaded_by) are already documented in the schema. The description adds no extra semantics such as which fields are mutable or that the six non-required fields default to unchanged, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (contract document) plus the keying field (by ID), which distinguishes it from siblings like update_contract and update_project_document. It does not, however, explicitly contrast itself with those near-neighbors, leaving the agent to infer the boundary from the resource noun alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no indication of when update_contract or update_asset_document would be the right sibling instead, and no note on prerequisites or partial-vs-full update behavior. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cost_categoryAInspect
Update an existing cost category by ID. Requires cost_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cost category ID | |
| name | No | Cost category name | |
| is_active | No | Whether the category is active | |
| parent_id | No | Parent cost category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the write operation and the required auth scope, which is meaningful behavioral context. However, it omits partial-update semantics (are omitted fields left unchanged or reset?), reversibility, and error behavior for a nonexistent ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with no waste, and the core purpose is front-loaded ahead of the scope requirement. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description covers purpose, target, and auth. It is adequate but leaves the important patch-vs-replace question unanswered, which matters for an update tool with optional fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (id, name, is_active, parent_id) are already documented in the schema. The description adds only 'by ID', which restates the required id field rather than adding new meaning; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing cost category by ID'), clearly distinguishing it from create/delete/list siblings on the cost_category resource. It lacks any explicit sibling routing language, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one useful precondition ('Requires cost_categories:write scope') but gives no when-to-use vs alternatives guidance and no exclusions. Usage is only implied by the 'by ID' phrasing and the write-scope caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_criticality_modifierAInspect
Update a criticality modifier override by ID. Below 1 tightens the targets of facilities in that tier, above 1 relaxes them. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Criticality modifier ID | |
| modifier | No | Multiplier from 0.1 to 1.9; below 1 tightens, above 1 relaxes | |
| criticality | No | Criticality tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a real behavioral trait missing from the schema: the required los_targets:write scope. However, for a mutation tool it says nothing about reversibility, what happens to unspecified fields, or the result of the update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero padding: purpose, the one piece of semantics an agent needs, then the permission requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no annotations and no output schema, the description covers purpose, key semantics, and authorization. It is nearly sufficient; only mutation side effects/return behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, modifier (including the below-1/above-1 semantics), and the criticality enum. The description mostly restates the modifier semantics, adding only that id is the lookup key. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update), a specific resource (criticality modifier override), and the lookup key (by ID), which cleanly separates it from the create_/delete_/get_/list_criticality_modifier siblings. It stops short of an explicit contrast statement, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not guidance or alternative routing, but the sentence explaining that values below 1 tighten and above 1 relax facility targets gives the agent enough context to use the tool correctly. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_field_definitionBInspect
Update an existing custom field definition by ID. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field definition ID | |
| field_name | No | Field name / key | |
| field_type | No | Field data type | |
| entity_type | No | Entity type | |
| field_label | No | Display label | |
| is_required | No | Whether the field is required | |
| display_order | No | Display order | |
| field_options | No | Options for select-type fields |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required custom_fields:write scope, which is real behavioral context, but it does not say whether unspecified fields are preserved or cleared (partial vs full update), whether the change is reversible, or how conflicts are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, then the scope requirement. No wasted words and appropriately sized for the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the action and auth scope but omits update semantics (partial vs full, effect on unlisted fields). The rich schema compensates on parameters, but the behavioral side is thin for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters (including the field_type enum and field_options) are already documented in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update), resource (custom field definition), and lookup key (by ID), which cleanly separates it from create/get/list/delete siblings of the same resource. It does not explicitly name any sibling, but the verb alone disambiguates the CRUD role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the auth prerequisite (custom_fields:write scope). There is no indication of when to prefer this over update_custom_field_value, whether it is a full or partial update, or any conditions/exclusions. Usage is left entirely to inference from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_field_valueAInspect
Update an existing custom field value by ID. Set whichever typed column matches the definition's field_type (value_text / value_number / value_date / value_boolean), or pass a single value and the server will dispatch it. Requires custom_fields:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Custom field value ID | |
| value | No | Legacy single-value shim - server dispatches based on field_type | |
| entity_id | No | Entity ID | |
| value_date | No | Date value, ISO YYYY-MM-DD | |
| value_text | No | Text value | |
| value_number | No | Numeric value | |
| value_boolean | No | Boolean value | |
| field_definition_id | No | Custom field definition ID - required when using the `value` fallback if you want to avoid the server fetching it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add genuinely useful behavioral context (the custom_fields:write scope requirement and the server-side dispatch behavior of the `value` shim), but says nothing about partial-update semantics, reversibility, or what happens to unset typed columns for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the identity of the resource, then the two invocation modes, then the auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no annotations and no output schema, the description covers the key operational facts (ID lookup, typed-column vs shim, scope). It leaves minor gaps around partial updates and error/permission behavior, but is largely complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description meaningfully clarifies the mutual exclusivity of the typed columns and the legacy `value` dispatch path — behavior that the schema lists but does not explain as a decision. It does not cover entity_id or field_definition_id's optional role beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (update a custom field value) plus the lookup key (by ID). Cleanly distinguishes it from siblings like create_custom_field_value and update_custom_field_definition, and an agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two invocation modes: set the typed column matching field_type, or pass a single `value` for server dispatch. This is real when/how guidance for parameter selection, though it doesn't name sibling alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_expenseBInspect
Update an existing expense by ID. Requires expenses:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Expense ID | |
| notes | No | Notes | |
| amount | No | Expense amount | |
| project_id | No | Project ID | |
| category_id | No | Cost category ID | |
| description | No | Expense description | |
| receipt_url | No | Receipt URL | |
| expense_date | No | Expense date (ISO 8601) | |
| work_order_id | No | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the write scope, but does not disclose partial update semantics (merge vs replace), reversibility, or what happens to omitted fields for a 9-parameter mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the primary purpose is front-loaded and the authorization requirement follows efficiently. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nine parameters, no annotations, and no output schema, the description omits critical context such as partial update behavior, error handling, and whether the ID field is immutable. It states what and the required scope, but leaves significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema. The description adds only the ID targeting concept, which the schema also conveys, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing expense') and identifies the targeting key ('by ID'). Clear enough to distinguish from create_expense and list_expenses, though it does not explicitly differentiate from other update_* siblings beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an authorization prerequisite ('Requires expenses:write scope'), which gives useful context. However, it does not say when to use this tool versus bulk_update or create_expense, nor does it mention any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_floorplanBInspect
Update floorplan metadata (rename floor, reorder, set status). Requires floorplans:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan ID | |
| status | No | Detection status | |
| floor_label | No | New floor label | |
| floor_order | No | New sort order | |
| detection_error | No | Error message if status=failed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one meaningful behavioral fact: the required floorplans:write scope. However, it doesn't say whether this is a full replace or partial update, whether omitted fields are preserved, or what happens to detection state when status is set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the operation and its fields front-loaded, followed by the permission requirement. Nothing is wasted and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and no output schema, the definition covers intent and authorization but is silent on update semantics (partial vs. full), on the detection_error field, and on any returned result. Adequate to call correctly with the schema open, but not self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters with types and constraints; that sets the baseline at 3. The description's parenthetical maps loosely to three of five fields (floor_label, floor_order, status) but omits detection_error and adds no format or validation detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Update floorplan metadata') and enumerates the mutable fields (rename, reorder, status), which distinguishes it from update_floorplan_region by implication. It does not explicitly contrast with its closest sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use/when-not guidance and no named alternative. The description only supplies a permission prerequisite ('Requires floorplans:write scope'), which is a precondition rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_floorplan_regionAInspect
Update a floorplan region - rename, reshape polygon, link to a Location, or mark as reviewed. Requires floorplan_regions:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floorplan region ID | |
| label | No | New label | |
| polygon | No | Polygon outline as an array of [x, y] points in normalized 0-1 coordinates (origin top-left). At least 3 points. | |
| reviewed | No | Mark region as reviewed by admin | |
| confidence | No | ||
| location_id | No | Linked Location ID (set to null to unlink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add a genuine behavioral fact the schema cannot: the required floorplan_regions:write scope. However, for a mutation tool it omits key traits such as whether this is a partial update (unset fields left untouched vs cleared), whether replacing the polygon is destructive/irreversible, and whether linking a Location can fail on conflicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the operation list is front-loaded and the scope requirement is appended as a distinct, actionable clause. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations and no output schema, the description covers the operations and the auth scope but leaves the partial-vs-full update semantics and the 'confidence' parameter unexplained. Adequate but with clear gaps an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents id, label, polygon, reviewed, and location_id in detail; baseline 3 applies. The description adds only the high-level mapping of the operations to those fields and says nothing about the undocumented 'confidence' parameter, so it does not meaningfully exceed the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) plus resource (floorplan region) and enumerates the four supported mutations: rename (label), reshape polygon, link to a Location, mark reviewed. This clearly separates it from create_floorplan_region, delete_floorplan_region, and update_floorplan. It stops short of explicitly naming siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated operations imply when the tool is appropriate, but there is no explicit when-to-use vs alternatives guidance, no prerequisite (e.g. region must already exist and be fetched via get_floorplan_region), and no note about batching via bulk_update. Usage is implied only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_templateBInspect
Update an existing form template by ID. Requires form_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template ID | |
| name | No | Form template name | |
| module | No | Move the form to a workspace: facilities, infrastructure, or shared (both). | |
| status | No | Publication status (draft, published, or archived) | |
| description | No | Description | |
| work_category_id | No | Work category ID (look up with list_work_categories) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add one genuinely useful fact: the write scope needed to invoke it. However, it omits key mutation behavior — whether omitted fields are left unchanged (partial update) or cleared, whether status transitions are validated, and what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the action and the scope requirement front-loaded in that order. Nothing is padded or restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six parameters are fully documented in the schema and the auth scope is given, which covers the minimum. The gap is the partial-vs-full update semantics for a mutation tool with no annotations and no output schema, which the description should clarify.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents every parameter including the module enum semantics ('Move the form to a workspace') and the work_category_id lookup hint. The description adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing form template by ID'), which cleanly separates it from create_form_template, get_form_template, delete_form_template, and update_form_template_item. It does not explicitly name or contrast with those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is an authorization requirement ('Requires form_templates:write scope'), which is a precondition rather than a when-to-use rule. It never says when to choose this over update_form_template_item or when not to call it (e.g., archived templates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_template_itemAInspect
Update an existing form template item by ID. template_id and item_key are immutable and cannot be changed. Requires form_template_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Form template item ID | |
| label | No | Question label / prompt | |
| config | No | Per-type configuration (e.g. { min, max, unit, multiline }) | |
| options | No | Choices for single_select / multi_select items | |
| required | No | Whether an answer is required | |
| help_text | No | Help text shown under the label | |
| item_type | No | Item type (section, checkbox, single_select, multi_select, number, text, photo) | |
| sort_order | No | Display order within the template | |
| visible_when | No | Conditional-visibility rule referencing another item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It helpfully discloses that template_id and item_key are immutable and that form_template_items:write scope is required, but says nothing about partial-update semantics — whether omitted fields are preserved or cleared — which matters for a 9-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the mutation and its immutable fields front-loaded before the auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers safety-relevant immutability and authorization but omits update semantics (replace vs. merge), error behavior, and the relationship to update_form_template, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 9 parameters; baseline is 3. The description only touches 'id' and mentions template_id/item_key, which are not even input-schema properties, so it adds little parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('form template item') with the addressing key ('by ID'), which cleanly separates it from create_form_template_item and delete_form_template_item. It does not explicitly name a sibling alternative, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (modify an existing item) and adds a real precondition via the write-scope requirement, but it never states when to use this versus update_form_template or bulk_update, nor any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_assetAInspect
Update an existing infrastructure asset (feature) by ID. To change geometry, provide a new GeoJSON Point/LineString matching the existing feature_type. Computed columns (length_m, slope_pct, risk_score) cannot be set. Requires infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure asset ID | |
| name | No | ||
| lanes | No | ||
| model | No | ||
| depth_m | No | ||
| qr_code | No | ||
| site_id | No | ||
| width_m | No | ||
| geometry | No | Replacement GeoJSON geometry | |
| material | No | ||
| quantity | No | ||
| image_url | No | ||
| status_id | No | ||
| system_id | No | ||
| to_street | No | ||
| road_class | No | O. Reg. 239/02 road class 1-6 (1-2 arterial, 3-4 collector, 5-6 local) | |
| building_id | No | ||
| data_source | No | ||
| description | No | ||
| diameter_mm | No | ||
| from_street | No | ||
| location_id | No | ||
| risk_factor | No | ||
| to_invert_m | No | ||
| external_ids | No | ||
| feature_code | No | ||
| install_date | No | ||
| asset_type_id | No | ||
| from_invert_m | No | ||
| purchase_cost | No | ||
| purchase_date | No | ||
| safety_impact | No | ||
| salvage_value | No | ||
| serial_number | No | ||
| to_feature_id | No | ||
| flow_direction | No | ||
| service_impact | No | ||
| condition_score | No | ||
| from_feature_id | No | ||
| manufacturer_id | No | ||
| system_class_id | No | ||
| system_group_id | No | ||
| unit_of_measure | No | ||
| financial_impact | No | ||
| regulatory_impact | No | ||
| reputation_impact | No | ||
| environmental_impact | No | ||
| last_maintenance_date | No | ||
| unit_replacement_value | No | ||
| expected_lifetime_years | No | ||
| salvage_value_percentage | No | ||
| positional_accuracy_class | No | ||
| likelihood_of_failure_score | No | ||
| consequence_of_failure_score | No | ||
| purchase_cost_calculation_method | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful traits: a required infrastructure_assets:write scope, the immutability of computed columns (length_m, slope_pct, risk_score), and the constraint that replacement geometry must match the existing feature_type. It omits whether this is a partial patch (unspecified fields preserved) versus a full replacement, which matters for a 55-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each front-loaded with its most important constraint (update by ID, geometry rule, computed-column rule, auth scope). No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 55-parameter mutation tool with no annotations and no output schema, the description covers geometry and immutability but leaves partial-update semantics, field-level expectations, and failure behavior unexplained. It is adequate to attempt a call but not to predict its effects precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 5% across 55 parameters, so the description should compensate heavily and it does not. It clarifies only the geometry parameter and the exclusion of three computed columns; the other ~50 fields (lanes, material, condition_score, positional_accuracy_class, etc.) are left entirely to bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource+identifier: 'Update an existing infrastructure asset (feature) by ID.' This clearly separates it from create_infrastructure_asset, delete_infrastructure_asset, and get_infrastructure_asset, as well as from the generic update_asset family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage context (updating an existing record, replacing geometry only when feature_type matches) but never names alternatives or states when to prefer bulk_update or update_infrastructure_asset_* sub-resource tools. The reader must infer that this is the single-record edit path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_asset_commentBInspect
Update an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment ID | |
| comment | No | Comment text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required auth scope (infrastructure_asset_comments:write), a genuine behavioral trait not in the schema, but says nothing about partial-update semantics, whether omitted fields are cleared, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the identity and auth requirement come first. It is efficient, though it verges on too sparse given the gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the sole carrier of behavioral context, and it covers only identity and scope. For a mutation tool it should say more about what the update does to the comment and the effect of omitting the comment field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are documented in the schema and the baseline is 3. The description only restates the id-based lookup and adds no format, constraint, or meaning beyond what the schema already gives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an infrastructure asset comment') plus the lookup key ('by ID'), which cleanly separates it from create/delete/get siblings. It stops short of naming any sibling explicitly, so it doesn't reach the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this instead of update_asset_comment, delete_infrastructure_asset_comment, or list_infrastructure_asset_comments. Usage is only implied by the verb, and no exclusions or prerequisites (beyond the scope) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_asset_costAInspect
Update an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cost ID | |
| amount | No | Cost amount | |
| category | No | Cost category | |
| cost_date | No | Cost date (YYYY-MM-DD) | |
| po_number | No | PO number | |
| work_order_id | No | Linked work order ID | |
| invoice_number | No | Invoice number | |
| purchase_order_id | No | Purchase order that paid this cost - resolve via list_purchase_orders. Counts against the order's remaining balance unless the cost belongs to a work order; null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and it does disclose the required `infrastructure_asset_costs:write` scope, a genuine behavioral fact. However, it is silent on mutation semantics that matter for an update tool: whether omitted fields are left unchanged or cleared, reversibility, and any error or conflict behavior when the ID is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the authorization requirement second. No filler, no restatement of the tool name beyond what is needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers identity and authorization but omits partial-update semantics and the shape of the result. Adequate as a minimum viable definition, but it leaves real gaps an agent would have to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters (including the enum `category` and the null-clearing semantics of `purchase_order_id`) are already documented in the schema. The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') plus resource ('infrastructure asset cost') and an addressing key ('by ID'), matching the required `id` parameter. It distinguishes itself from the sibling `update_asset_cost` mainly through the resource name itself, but the description adds no explicit differentiation between the two similarly named tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'by ID' and names the required write scope, which is useful context. It does not state when to prefer this over `update_asset_cost`, `create_infrastructure_asset_cost`, or `bulk_update`, nor whether this is a partial or full-replacement update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_asset_documentAInspect
Update infrastructure asset document metadata by ID. Requires infrastructure_asset_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document ID | |
| name | No | Document name | |
| category | No | Document category | |
| file_path | No | Storage path | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one key trait: the required infrastructure_asset_documents:write scope. It stops there, leaving the critical update semantics unexplained – whether omitted fields are preserved (PATCH) or cleared (PUT), and what happens to the document on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler: the operation and key first, then the authorization prerequisite. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully specified by the schema and no output schema exists, so return values need not be described. But for a mutation tool with no annotations, the absence of partial-vs-full update semantics and any irreversible-effect disclosure leaves a meaningful gap for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters including id, name, category, and file metadata are already self-documented. The description adds only the fact that id is the lookup key, which the schema's required array already conveys, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update), resource (infrastructure asset document metadata), and selection key (by ID), making the operation unambiguous and distinguishable from the many siblings by its entity name. It does not explicitly contrast with near neighbors like update_asset_document or update_infrastructure_asset, so it stops short of categorically distinguishing itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The ring-fencing of 'by ID' implies this is the single-record update path versus bulk_update, and the scope statement signals a precondition. However there is no explicit when-to-use guidance, no exclusion criteria, and no routing to the update_asset_document / update_project_document variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_asset_inspectionBInspect
Update an existing infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Inspection ID | |
| notes | No | Notes | |
| method | No | Inspection method | |
| defects | No | Defect observations | |
| attachments | No | Attachment URLs/paths | |
| inspector_id | No | Inspector user ID | |
| condition_score | No | Condition score | |
| inspection_date | No | Inspection date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose a real behavioral trait beyond the schema — the required infrastructure_asset_inspections:write scope — which is genuine added value. However, it is silent on whether this is a partial (PATCH-style) update, what happens to omitted fields, and whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action and identifier are front-loaded ahead of the scope prerequisite. It is efficient, though it errs toward minimalism rather than fully leveraging the space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with a nested defects object, no annotations, and no output schema, the description leaves significant gaps: update semantics (partial vs. full), defect object expectations, and condition_score/inspection_date validation context are all unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters including the nested defects object. The description adds only that the record is addressed by id, meeting the baseline of 3 without contributing extra parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (infrastructure asset inspection) plus the addressing key (by ID), so it is clearly distinguishable from the create/get/delete/update sibling families. It stops short of naming the closest alternative (e.g. bulk_update or update_infrastructure_asset), so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for modifying an already-existing record addressed by ID, but gives no explicit when-to-use/when-not guidance, no conditions for choosing bulk_update over this, and no note on partial vs. full replacement updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_asset_partCInspect
Update an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Association ID | |
| part_id | No | Part ID | |
| quantity | No | Design/installed quantity | |
| feature_id | No | Infrastructure feature ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add one valuable fact, the required infrastructure_asset_parts:write scope, but says nothing about whether this is a partial or full update, what happens to omitted fields, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. Efficient, though it is arguably too terse given the gaps it leaves in behavior and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description is thin. It covers the auth scope but omits update semantics (partial vs replace), which is critical context an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (id, part_id, quantity, feature_id) are already documented in the schema. The description adds no parameter-level meaning beyond that, which is the baseline expectation when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (infrastructure asset part association) and identifies lookup by ID. An agent can distinguish it from the many sibling update_* tools by the resource name, though the description does not explicitly differentiate it from the closest sibling update_asset_part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only states the required scope, with no guidance on when to use this versus update_asset_part or the list/get counterparts, and no prerequisites or exclusions. Usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_feature_classAInspect
Update a tenant-defined infrastructure feature class (addressed by code). The code, category, and is_builtin fields are immutable; attempts to change them on a builtin class return 409. Requires infrastructure_feature_classes:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Asset class code (lowercase snake_case, 1-50 chars) | |
| icon | No | Icon name | |
| label | No | Display name | |
| color_hex | No | Display colour as hex, e.g. #3B82F6 | |
| sort_order | No | Sort order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behaviors: immutable fields, a 409 error for builtin classes, and the required OAuth scope. It still omits whether updates are partial or full, and does not describe side effects or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loading the resource and scope. No filler; each clause adds actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema and no annotations, the description covers authorization, immutability, and a specific error case. It could better clarify how omitted fields are treated (e.g., partial update) and list updatable fields more directly, but is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning by clarifying that 'code' is an immutable identifier (addressed by code) and warns about immutable category/is_builtin fields, though the latter are not present in the schema and could be mildly confusing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('tenant-defined infrastructure feature class') and clarifies the addressing key ('by code'). It does not explicitly differentiate from sibling update tools (e.g., update_system_class), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit usage constraints (requires write scope, builtin classes cannot be modified) but does not state when to prefer this tool over alternatives or describe any prerequisites beyond the scope. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_lifecycle_eventAInspect
Update a lifecycle strategy event by ID. Editing re-confirms the cost (cost_reviewed_on is server-set). Set is_active false to disable an event without deleting it - projections recompute immediately. Requires infrastructure_lifecycle_events:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Lifecycle event ID | |
| name | No | Event name | |
| is_active | No | Disable/enable the event | |
| unit_cost | No | Cost per unit (current dollars, never indexed) | |
| fixed_cost | No | Fixed cost (current dollars) | |
| sort_order | No | Evaluation order within the strategy | |
| cost_method | No | Costing: per unit (uses the feature's measured quantity and unit) or a fixed amount (default per_unit) | |
| cost_source | No | Provenance of the cost ("Engineering 2026", a tender reference) | |
| event_class | No | Event type - preventative maintenance or rehabilitation | |
| impact_method | No | Effect: add years of life, or reset condition to a value | |
| impact_reset_to | No | Condition after the event (required when impact_method is reset_condition) | |
| work_generation | No | What a due application of this event becomes when created from the interventions list: none (plan only, default), work_order, or project. Nothing is created on a schedule. | |
| impact_add_years | No | Years added (required when impact_method is add_years) | |
| max_applications | No | How many times the event may fire over a feature's life (default 1) | |
| min_years_between | No | Minimum years between firings of a recurring event (default 1) | |
| trigger_condition_max | No | Upper bound of the trigger window - the event fires when projected condition falls to this | |
| trigger_condition_min | No | Lower bound of the trigger window (default 0); a feature already below it has missed the event | |
| work_generation_priority | No | Priority for generated work orders. Ignored unless work_generation is work_order. | |
| work_generation_category_id | No | Work category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that editing re-confirms cost, that cost_reviewed_on is server-set, that disabling via is_active recalculates projections immediately, and that write scope is required. It still omits partial-update semantics and return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly packed sentences, front-loaded with the core action, followed by the most important behavioral caveats and the required scope. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter update tool with no annotations and no output schema, the description covers key behavioral traits and the schema covers every parameter in detail. It is nearly complete, though it would benefit from stating whether omitted fields are left unchanged.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that cost_reviewed_on is server-set and that is_active false disables without deletion and triggers immediate recomputation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (lifecycle strategy event by ID). It does not, however, explicitly distinguish itself from the sibling update_asset_lifecycle_event tool, which is the main missing element for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Update ... by ID' and there is a note that setting is_active false disables without deleting. But there is no explicit guidance on when to choose this tool over create, delete, or the asset-level sibling update tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_los_targetBInspect
Update an infrastructure LoS target by ID. base_target stays on 0-100. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure LoS target ID | |
| active | No | Whether the target is scored | |
| metric | No | Metric the target tracks | |
| base_target | No | Base target, 0-100 | |
| feature_class | No | Feature class code - resolve first via list_infrastructure_feature_classes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses the required los_targets:write scope and restates the base_target range, but says nothing about whether this is a partial or full replacement update, how omitted optional fields (active, metric, feature_class) are treated, or whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler: the action, the constraint note, and the auth requirement. Slightly wasteful to single out base_target's range while ignoring the other four params, but overall tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the auth requirement but omits update semantics (partial vs full), side effects, and what the response contains. It is minimally adequate rather than complete for a five-parameter write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, and the enum/range constraints are fully specified in the schema. The description only echoes the base_target 0-100 constraint without adding format or interaction meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Update an infrastructure LoS target by ID' tells the agent exactly what entity is mutated and that it operates on an existing record by identifier. It does not distinguish itself from near-name siblings like update_system_los_target or update_los_proposed_target, which an agent must infer from the entity prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use, when-not-to-use, or alternative routing guidance. With dozens of update_* siblings including other LoS target variants, an agent gets no signal about when this tool is the right choice versus update_system_los_target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_networkBInspect
Update an existing infrastructure network by ID. Requires infrastructure_networks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Infrastructure network ID | |
| name | No | Network name | |
| metadata | No | Free-form JSON metadata | |
| criticality | No | How strictly the network is held to its feature class's Level of Service targets: critical, high, medium or low. Unset is treated as medium; send null on update to clear it | |
| description | No | Description | |
| color_scheme | No | Display color scheme | |
| feature_class | No | Asset class code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does add one meaningful behavioral fact: the required 'infrastructure_networks:write' scope. However, it omits core mutation semantics an agent needs — whether unspecified fields are preserved or cleared, whether the update is idempotent, and what happens if the ID does not exist. The 'by ID' phrasing implies the target must pre-exist, but this is only implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and its target front-loaded and the permission constraint following. Nothing in it is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is the minimum viable. It names the resource, the identifier requirement and the required scope, but leaves the update's partial-vs-full semantics unexplained even though the schema shows only 'id' as required — a gap an agent calling this tool could easily get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters, including the null-to-clear behavior on 'criticality'. The description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing infrastructure network by ID'), which is immediately distinguishable from create_infrastructure_network, delete_infrastructure_network and get_infrastructure_network. It stops short of explicitly distinguishing itself from bulk_update or listing which fields are mutatable, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance: it does not say whether this is a partial (PATCH) or full-replace update, when to prefer bulk_update over this single-record tool, or what preconditions (e.g. prior get/list) exist. The only contextual cue is a scope name, which is a permission fact rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infrastructure_zoneBInspect
Update an infrastructure zone by ID. Pass boundary as a GeoJSON Polygon or MultiPolygon to replace the geometry. Requires infrastructure_zones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Zone ID | |
| code | No | Optional short code | |
| kind | No | Zone kind | |
| name | No | Zone name | |
| notes | No | Free-form notes | |
| boundary | No | GeoJSON Polygon or MultiPolygon (EPSG:4326). Each ring is closed; coordinates are [lon, lat]. Use MultiPolygon for a boundary in separate pieces - an area split by a rail corridor, or one containing an island. | |
| network_id | No | Infrastructure network ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses two behavioral facts beyond the schema: the boundary is replaced (not merged) and the call requires the infrastructure_zones:write scope. It does not clarify whether other unspecified fields are cleared, partial vs full-update semantics, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and the required scope pushed to the end. No filler; each clause conveys something useful, though it is terse enough to leave behavioral questions open.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param mutation with no annotations and no output schema, the description covers the most unusual parameter (boundary replacement) and the auth scope. It is adequate but leaves the critical partial-update behavior and return/confirmation semantics unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 params including kind's enum and boundary's shape. The description adds marginal value by noting boundary accepts Polygon or MultiPolygon and that it replaces the geometry, but adds nothing for id/code/name/notes/network_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Update an infrastructure zone by ID.' This clearly distinguishes it from create/delete/get infra-zone siblings, though it does not explicitly name or differentiate against update_* siblings in the broader catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use vs when-not-to-use guidance and no alternatives. It implies the caller must have the zone ID and write scope, but never states conditions under which another tool (e.g., bulk_update) is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_invoiceBInspect
Update an existing invoice by ID. Requires invoices:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Invoice ID | |
| notes | No | Notes | |
| amount | No | Invoice amount | |
| status | No | Invoice status | |
| due_date | No | Due date (ISO 8601) | |
| paid_date | No | Paid date (ISO 8601) | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| tax_amount | No | Tax amount | |
| category_id | No | Cost category ID | |
| description | No | Description | |
| invoice_date | No | Invoice date (ISO 8601) | |
| work_order_id | No | Work order ID | |
| invoice_number | No | Invoice number | |
| purchase_order_id | No | Purchase order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required "invoices:write" scope, but omits critical mutation behavior: whether omitted fields are left unchanged or cleared, whether status transitions are validated, and whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, with the scope requirement following. No filler, though it is so terse that it omits information an agent on a 15-parameter mutation would need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation with no annotations and no output schema, the description should clarify partial-update semantics and result behavior. It covers only the ID and the auth scope, leaving the most consequential question — what happens to unspecified fields — unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters (including the status enum and UUID formats) are already documented in the schema. The description adds nothing about parameter semantics beyond identifying the required id, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing invoice") plus the identifying key ("by ID"), so the agent knows exactly what the tool does. It does not explicitly name siblings like create_invoice or delete_invoice, but the word "existing" implicitly separates it from creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Update an existing invoice by ID" implies the usage context, and the required "invoices:write" scope gives an actionable precondition. However, there is no explicit guidance on when to prefer this over get_invoice/create_invoice, and no statement of 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.
update_locationBInspect
Update an existing location by ID. Requires locations:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Location ID | |
| area | No | Area (sq ft or sq m) | |
| name | No | Location name | |
| type | No | Location type label | |
| floor | No | Floor identifier | |
| building_id | No | Building ID | |
| location_type_id | No | Location type ID (from location_types) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does add one genuinely useful behavioral fact: the required locations:write scope. However, it says nothing about whether updates are partial or full replacement, whether omitted fields are preserved, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the operation front-loaded and the permission requirement second; nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no annotations and no output schema, the description is minimal but the schema fills in parameter detail. It still omits partial-vs-full update semantics and expected outcome, which an agent would want before calling a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters with types, formats, and constraints. The description adds only that the target is identified 'by ID,' which is redundant with the schema's required id field, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (location) and the targeting key (by ID), which an agent can act on immediately. It does not distinguish itself from sibling mutators like bulk_update or create_location, but the verb+resource pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: no statement that this is for modifying an existing location versus bulk_update, create_location, or delete_location, and no indication of prerequisites beyond implicit existence of the ID. The agent must infer routing entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_location_typeAInspect
Update an existing location type by ID. Requires location_types:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Location type ID | |
| name | No | Location type name | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required write scope, which an agent needs for auth planning, but says nothing about partial-update semantics (are omitted fields preserved?) or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action and prerequisite, with zero filler. Front-loaded with the operation before the scope constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small mutation tool with full schema coverage and no output schema, the description covers identity and authorization but leaves the partial-vs-full update behavior undefined, which is the main ambiguity an agent would face when calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (id, name, description) are already documented in the schema. The description adds only the notion that id identifies the record; baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Update an existing location type by ID.' Clear enough to distinguish from create_location_type, delete_location_type, and list_location_types, though it does not differentiate from the conceptually close sibling update_location.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (you must have an existing location type with a known ID) and names the required scope, but offers no explicit when/when-not guidance or mention of alternatives like bulk_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_los_consequenceAInspect
Update a LoS consequence by ID. Changing scope_type to global clears scope_ref; changing it to anything else needs a scope_ref that fits the new type. Advisory only: no notification is sent. Requires los_consequences:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS consequence ID | |
| active | No | Whether the consequence is shown | |
| metric | No | Limit to one metric; null matches any metric | |
| severity | No | Minimum severity shown | |
| scope_ref | No | What the scope points at: null for global; critical, high, medium or low for criticality_tier; a system ID (resolve first via list_systems) for system; a feature class code (resolve first via list_infrastructure_feature_classes) for feature_class | |
| statement | No | The consequence, as a statement | |
| scope_type | No | What the consequence applies to | |
| notify_roles | No | Roles named as owning the consequence. Recorded only; nothing is sent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it discloses a destructive side effect (changing scope_type to global clears scope_ref), the notification semantics ('advisory only: no notification is sent' — reinforced by the notify_roles schema note), and the required auth scope los_consequences:write. It stops short of saying whether omitted fields are preserved or nulled, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, zero filler. The identifier, the scope invariant, the side-effect warning, and the auth requirement are all front-loaded in that order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no annotations and no output schema, the description covers the highest-risk unknowns: the scope_type/scope_ref coupling, the absence of notifications, and the permission requirement. The one meaningful omission is partial-update semantics (are unset fields left alone?), which an agent doing a PATCH-style update would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents all eight parameters. The description adds cross-parameter semantics not present in the schema — the dependency between scope_type and scope_ref — which is genuine added value, but it leaves the other six parameters to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a LoS consequence by ID'), which distinguishes it from create_los_consequence and delete_los_consequence in the sibling list. It does not name alternatives, but the CRUD-naming convention makes the family obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance relative to siblings like update_los_measure or update_los_proposed_target. However, the conditional rules for scope_type vs scope_ref ('global clears scope_ref; anything else needs a matching scope_ref') do tell the agent how to invoke the tool correctly, which is partial usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_los_measureCInspect
Update an existing LoS measure by ID. Requires los_measures:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measure ID | |
| name | No | Measure name | |
| type | No | Measure type | |
| unit | No | Unit of measurement | |
| weight | No | Weight for composite score calculation | |
| category | No | Measure category | |
| is_active | No | Active status | |
| sort_order | No | Sort order | |
| data_source | No | Data source type | |
| description | No | Description | |
| stretch_goal | No | Stretch goal value | |
| target_value | No | Target value | |
| trend_direction | No | Which direction is better | |
| data_source_config | No | Data source configuration (JSONB) | |
| minimum_acceptable | No | Minimum acceptable value | |
| community_statement | No | Community-facing statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it only discloses the write-scope requirement. For a 16-parameter mutation it does not explain whether the update is partial or full-replace, what happens to omitted fields, whether changes are reversible, or any validation/rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the mutation and its prerequisite are stated first. It is efficiently sized, though the terseness borders on under-specification for a tool this complex.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with a nested object, four enums, no output schema, and no annotations, the description is too sparse. It omits the critical partial-vs-full update semantics and any return/error behavior an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, and the description adds no additional meaning beyond implying the 'id' key. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing LoS measure') plus the identifying key ('by ID'), so it is easily distinguished from get_los_measure and delete_los_measure. It does not explicitly name those siblings, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the required scope ('los_measures:write'), which is a prerequisite rather than usage direction. It never says when to update vs create/delete, nor what conditions select this tool over update_infrastructure_los_target or update_los_proposed_target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_los_measurementAInspect
Update an existing LoS measurement by ID. Requires los_measurements:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS measurement ID | |
| notes | No | Notes or context | |
| is_auto | No | Whether this is auto-calculated | |
| period_end | No | Period end date (ISO 8601) | |
| period_type | No | Period type | |
| actual_value | No | Measured value | |
| period_start | No | Period start date (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it does disclose the required authorization scope (los_measurements:write) — useful context an agent needs before calling. It omits other key traits for a mutation tool: whether the update is partial or full replacement, whether omitted fields are cleared, and whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and target, with the permission requirement trailing. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers identity and authorization but leaves the update contract unclear — most notably whether fields are optional partial updates or full replacement, and what the caller receives on success. Adequate but with meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all seven properties (id, notes, is_auto, period_* , actual_value) documented in the schema, so the baseline of 3 applies. The description adds only that id identifies an existing record and adds no semantics for the updateable fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (update an existing LoS measurement) and clarifies the addressing mode (by ID), which separates it from create_los_measurement, get_los_measurement, and list_los_measurements. It does not, however, differentiate itself from nearby mutation siblings such as update_los_measure or bulk_update, nor does it explain what an LoS measurement is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer it should call this when modifying an existing measurement, and the stated los_measurements:write scope acts as a precondition. There is no explicit guidance on when to prefer this over bulk_update or update_los_measure, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_los_proposed_targetCInspect
Update an existing LoS proposed target by ID. Requires los_proposed_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LoS proposed target ID | |
| year | No | Target year, 2000-2200 | |
| target_value | No | Proposed value for a technical measure, in the measure's own unit | |
| target_statement | No | Proposed level of service for a community measure, as a statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the required write scope, which is useful, but says nothing about partial-update semantics, whether omitted fields are preserved, or reversibility of the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and identifier, then the scope requirement. No filler, though a little more substance would have been welcome given the mutation context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description is minimally adequate: it names the operation and auth scope, and the schema covers parameters. It omits update semantics and return behavior, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (id, year, target_value, target_statement) are already documented in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Update an existing LoS proposed target by ID') clearly states what the tool does and how the target is identified. However, it does not distinguish itself from close siblings such as update_infrastructure_los_target, update_system_los_target, or update_los_consequence, leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance, no prerequisites beyond the scope line, and never points to alternatives. An agent has no help deciding between this and the several other LoS/update_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_manufacturerBInspect
Update an existing manufacturer by ID. Requires manufacturers:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Manufacturer ID | |
| name | No | Manufacturer name | |
| notes | No | Notes | |
| website | No | Website URL | |
| contact_name | No | Primary contact name | |
| contact_email | No | Contact email address | |
| contact_phone | No | Contact phone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers only the auth requirement ('manufacturers:write scope'). It does not state whether this is a partial or full-replace update, what happens to omitted fields, whether the operation is reversible, or anything about the response for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the core action is front-loaded and the permission requirement follows. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no annotations and no output schema, the schema covers field-level semantics well, but the description leaves out update-mode semantics (partial vs full replace) and any result information. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 7 parameters (id, name, notes, website, contact_*) is already documented in the schema. The description only echoes 'by ID' and adds no format, constraint, or optionality 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing manufacturer by ID'), which cleanly separates it from create_manufacturer, delete_manufacturer, get_manufacturer and list_manufacturers. It stops short of explicitly naming a sibling or contrasting behavior, so it is clear but not maximally distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g. bulk_update for multiple manufacturers), and no statement of prerequisites beyond the scope requirement. The scope line is a permission gate rather than usage selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_partBInspect
Update an existing part/inventory item by ID. Requires parts:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part ID | |
| cost | No | Unit cost | |
| name | No | Part name | |
| site_id | No | Site ID | |
| category | No | Category label | |
| quantity | No | Current stock quantity | |
| supplier | No | DEPRECATED - legacy free-text supplier name. Use supplier_id instead. | |
| building_id | No | Building ID | |
| location_id | No | Location ID | |
| part_number | No | Part number / SKU | |
| supplier_id | No | Vendor ID (resolve via list_vendors) | |
| desired_quantity | No | Target / reorder quantity | |
| specific_location | No | Storage location description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it usefully discloses the required authorization ('Requires parts:write scope'). However, it says nothing about update semantics — whether omitted fields are preserved (PATCH) or cleared (PUT), and whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operation is front-loaded and the permission requirement follows immediately. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation with no annotations and no output schema, the description is thin: it never clarifies partial vs full update behavior, and it does not flag the deprecated supplier/supplier_id distinction even though that is a real invocation hazard. The complete parameter documentation offsets this somewhat, keeping it at a minimal-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 13 parameters, including the deprecated supplier field's replacement guidance, so the schema already carries the semantics. The description adds only the notion of targeting by ID and adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Update an existing part/inventory item') plus the identifying key (by ID), so the agent knows exactly what the call does. It does not distinguish itself from nearest siblings such as update_asset_part or bulk_update, which leaves some ambiguity about which update path to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no mention of alternatives like bulk_update or update_asset_part. The phrase 'by ID' weakly implies the record must already exist, 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.
update_part_categoryBInspect
Update an existing part category by ID. Requires part_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Part category ID | |
| name | No | Part category name | |
| module | No | Move the category to a workspace: facilities, infrastructure, or shared (both). | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully names the required part_categories:write scope, which is real behavioral context beyond the schema, but omits partial-update semantics (are unset fields preserved?), reversibility, and whether the module change has cross-workspace side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loading the action and following with the permission requirement. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter mutation tool with no annotations and no output schema, the description covers the essentials (action, keying, auth) but leaves partial-update behavior and result expectations unstated. Adequate but with recognizable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself documents all four parameters, including the module enum's workspace-move meaning. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (part category) with the keying parameter (by ID), so it is clearly distinct from create_part_category, delete_part_category, and get_part_category. It does not, however, explicitly contrast itself against update_part, the closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternatives (e.g., create vs update vs bulk_update). The only routing signal is the auth scope, which is a permission requirement rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pm_scheduleAInspect
Update an existing PM schedule by ID. Requires pm_schedules:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | PM schedule ID | |
| tasks | No | Checklist of tasks for this PM schedule | |
| title | No | PM schedule title | |
| status | No | Schedule status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset ID | |
| floating | No | Floating schedule (due date based on completion) | |
| next_due | No | Next due date (ISO 8601) | |
| asset_ids | No | Assets this schedule covers - use instead of asset_id when there is more than one. | |
| frequency | No | Frequency | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| start_date | No | Start date (ISO 8601) | |
| system_ids | No | Systems this schedule covers. Systems have no singular field; this array is the only way to associate them. | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| meter_based | No | Whether this PM triggers at meter intervals | |
| location_ids | No | Locations this schedule covers - use instead of location_id when there is more than one. Sending location_id alone replaces this with that single id. | |
| schedule_type | No | Schedule type | |
| work_category | No | Work category label | |
| estimated_cost | No | Estimated cost | |
| lead_time_days | No | Lead time in days | |
| meter_interval | No | Meter interval - trigger every N units | |
| estimated_hours | No | Estimated hours | |
| auto_generate_wo | No | Auto-generate work orders | |
| form_template_id | No | Form template ID to attach to every work order this generates - resolve via list_form_templates. Use a PUBLISHED template: generation resolves the current published version of the form, so a draft attaches nothing until it is published. | |
| grace_period_days | No | Grace period in days | |
| safety_requirements | No | Safety requirements | |
| custom_interval_weeks | No | Custom interval in weeks (when frequency is CUSTOM) | |
| infrastructure_asset_ids | No | Infrastructure features this schedule covers - resolve via list_infrastructure_assets. One schedule over several features generates one work order per cycle covering all of them. Mutually exclusive with asset/location/system targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required write scope and the ID-resolution order for location changes, but says nothing about partial-vs-full update semantics (e.g. whether omitted fields are cleared) or side effects like work-order generation — significant gaps for a 30-param mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the purpose front-loaded, followed by the permission requirement, then the workflow edge case. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 30 parameters, no annotations, and no output schema, the description covers purpose, auth, and one resolution workflow, but omits update semantics and interactions among the many overlapping target fields (asset_id vs asset_ids, singular vs plural location, infrastructure_asset_ids exclusivity). It is adequate but leaves meaningful complexity unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter, including the per-field resolution hints for site_id/building_id/location_id. The description restates the location-resolution chain but adds no syntax or constraint detail beyond what the schema already provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing PM schedule by ID"), which distinguishes it from update_pm_template and update_compliance_pm_schedule among the siblings. It does not explicitly name those alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context (requires pm_schedules:write scope) and a concrete workflow for the location-change case (list_sites → list_buildings → list_locations). It offers no guidance on when to prefer this tool over the template or compliance-PM siblings, so it lacks explicit exclusions/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pm_templateCInspect
Update an existing PM template by ID. Requires pm_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | PM template ID | |
| tasks | No | Checklist of tasks baked into this template | |
| title | No | PM template title | |
| asset_ids | No | Default asset IDs | |
| documents | No | Document references | |
| frequency | No | Suggested maintenance frequency | |
| resources | No | Resource references (parts, tools, materials, equipment) | |
| description | No | Description | |
| location_ids | No | Default location IDs | |
| work_category | No | Work category label (free text) | |
| estimated_cost | No | Estimated cost | |
| estimated_hours | No | Estimated hours | |
| form_template_id | No | Form template ID to attach to every work order this generates - resolve via list_form_templates. Use a PUBLISHED template: generation resolves the current published version of the form, so a draft attaches nothing until it is published. | |
| work_category_id | No | Work category ID | |
| safety_requirements | No | Safety requirements | |
| custom_interval_weeks | No | Custom interval in weeks (when frequency is CUSTOM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important behavioral fact: the pm_templates:write scope requirement. However, it says nothing about update semantics for a mutation tool — whether omitted fields are preserved, whether passing a tasks array replaces the entire checklist, or whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. The operation and its prerequisite are stated immediately, and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter mutation tool with no annotations and no output schema, the description is too thin. It omits update semantics for nested arrays (tasks, resources), the effect on unspecified fields, and any confirmation of return behavior, leaving the agent to infer how a partial update actually behaves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 16 parameters in detail (including the helpful note on form_template_id and PUBLISHED templates). The description adds no parameter-level meaning beyond 'by ID', so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Update an existing PM template by ID'), so an agent can tell what the tool does without opening the schema. It does not explicitly differentiate itself from the create/delete/list PM-template siblings, but the resource name already separates it from the PM-schedule tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus create_pm_template, update_pm_schedule, or bulk_update, and no exclusions or edge-case guidance. The only conditional information is a permission requirement, which is more of a behavioral constraint than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectCInspect
Update an existing project by ID. Requires projects:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project ID | |
| name | No | Project name | |
| budget | No | Total budget | |
| status | No | Project status | |
| end_date | No | End date (ISO 8601) | |
| image_url | No | Image URL | |
| start_date | No | Start date (ISO 8601) | |
| description | No | Description | |
| project_code | No | Project code | |
| project_type | No | Project type | |
| budget_status | No | Budget status | |
| current_phase | No | Current phase | |
| health_status | No | Health status | |
| progress_status | No | Progress status | |
| project_manager | No | Project manager name | |
| progress_percentage | No | Progress percentage (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, and it discloses only the required OAuth scope. It does not say whether this is a partial patch (unmentioned fields preserved) or a full replace, what happens on an unknown ID, or whether the update is auditable/reversible – all material for a 16-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the identifier constraint and auth requirement are stated first. It is efficient, though its brevity is partly the cause of the missing behavioral detail rather than a sign of disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 16 optional-ish parameters, no annotations, and no output schema, the description leaves the most consequential question unanswered: whether omitted fields are left untouched or cleared. That ambiguity can cause real data loss or no-op calls, so the definition is not complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enums documented inline (project_type, budget_status, health_status, progress_status), so the schema already does the semantic work. The description adds nothing about parameter handling, which is the expected baseline 3 when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing project') and identifies the keying mechanism ('by ID'), which cleanly separates it from unrelated siblings in a very large tool list. It does not, however, differentiate against the neighbouring project-mutation tools (update_project_update, update_project_phase, etc.), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a prerequisite ('Requires projects:write scope'). There is no statement of when to choose this over update_project_update or the bulk_update alternative, nor any note that the record must already exist or which fields may be changed. Prerequisite disclosure alone is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_budget_itemBInspect
Update an existing project budget item by ID. Requires project_budget_items:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project budget item ID | |
| category | No | Budget category | |
| project_id | No | Project ID | |
| description | No | Description | |
| actual_amount | No | Actual amount | |
| planned_amount | No | Planned amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the required authorization scope, but it does not explain whether omitted fields are left unchanged or cleared, how partial updates are handled, or what happens if the ID is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The purpose is front-loaded, followed by the authorization requirement, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich (100% parameter descriptions, enum, required fields) and the description adds the needed auth scope. However, with no annotations and no output schema, the description should say more about update semantics and return behavior to be complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including the UUID format for id. The description only reinforces that the update is performed by ID, adding minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Update) and resource (existing project budget item) with the required identifier (by ID), making clear what the tool does. It does not explicitly differentiate itself from sibling tools such as create_project_budget_item or delete_project_budget_item, so it falls short of the top level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a permission prerequisite (project_budget_items:write scope) but offers no guidance on when to use this tool versus alternatives like bulk_update or update_project. It does not mention exclusions or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_commentBInspect
Update an existing project comment by ID. Requires project_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project comment ID | |
| content | No | Comment content | |
| parent_id | No | Parent comment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does usefully disclose the required auth scope (project_comments:write), which is genuine behavioral context. However, it says nothing about partial vs. full update semantics, whether omitted fields are preserved, or reversibility of the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core action front-loaded and the scope requirement secondary. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition covers identity and auth scope but omits update semantics (which fields are settable, whether the update is partial, what happens to parent_id). Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, content, and parent_id. The description adds only the phrase 'by ID', which maps to the required parameter but adds no meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ('Update an existing project comment') and adds the ID-based identity, which distinguishes it from list_project_comments and get_project_comment. It does not, however, explicitly differentiate itself from update_project_update or the many other update_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of prerequisites beyond the scope, and no pointer to alternatives. The agent must infer that this is the write counterpart to get_project_comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_documentBInspect
Update a project document by ID. Requires project_documents:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project document ID | |
| name | No | Document name | |
| file_path | No | Storage path | |
| file_size | No | File size in bytes | |
| file_type | No | MIME type | |
| folder_id | No | Folder ID | |
| project_id | No | Project ID | |
| description | No | Description | |
| uploaded_by | No | Uploader user ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a real behavioral fact beyond the schema: the required project_documents:write scope. However, it says nothing about whether omitted fields are left untouched or cleared (patch vs replace), whether the change is reversible, or what a successful update returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the identity of the resource is front-loaded ahead of the auth requirement. Nothing needs to be cut, though it is arguably under-specified rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation tool with one required field and no annotations or output schema, the central unknown is update semantics (partial vs full replacement, clearing fields, error on unknown folder_id/project_id). The description covers only identity and auth, leaving the most consequential behavior for the caller to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema and the baseline is 3. The description adds nothing about which fields are updatable or how the single required id relates to the optional fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a project document by ID'), which cleanly separates it from create_project_document, get_project_document and delete_project_document. It does not distinguish itself from the many other update_* siblings beyond the name, but the name plus resource is unambiguous enough for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of get_project_document, update_project_document_folder_template, or the sibling update_* tools, and no mention of prerequisites beyond the scope string. The agent gets a scope requirement but no routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_document_folder_templateBInspect
Update a project document folder template by ID. Requires project_document_folder_templates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Template ID | |
| name | No | Template name | |
| structure | No | Folder hierarchy as JSON array | |
| is_default | No | Whether this is the default template | |
| description | No | Template description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose that the operation is a mutation requiring 'project_document_folder_templates:write' scope, which is useful auth context. However, it says nothing about reversibility, partial-update semantics, or side effects on linked documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler, and the operation and its required scope are front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 5-parameter CRUD update with full schema coverage and no output schema, the description covers the minimum: identity of the operation and the auth scope. It is adequate but thin, omitting update semantics (partial vs full) and any note that the other four fields are optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (id, name, structure, is_default, description) are already documented in the schema. The description only restates the 'by ID' lookup, adding no syntax or semantic detail beyond the structured data, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a project document folder template') plus the lookup key ('by ID'). It clearly separates this from the create/delete/get/list siblings that share the resource name, though it does not differentiate from update_project_document specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, no prerequisites beyond the scope note, and no statement of which fields are updatable or whether it is a partial or full update. The verb alone implies the usage but nothing is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_infrastructure_assetAInspect
Update a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Link ID | |
| notes | No | Free-form notes | |
| feature_id | No | Infrastructure feature ID | |
| project_id | No | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add genuine value by disclosing the required permission scope (project_infrastructure_assets:write), but it says nothing about whether the update is a partial patch, what happens to fields not supplied, or whether the link operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the action front-loaded and the permission requirement placed second. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations and no output schema, the description covers identity and authorization but omits update semantics (partial vs full replace) and failure behavior. The fully documented schema compensates for parameter-level gaps, leaving it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all four parameters documented, so the schema already carries the semantics. The description's 'by ID' only confirms that id is the identifier and adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Update') and a precise resource ('project ↔ infrastructure feature link'), which separates it from update_infrastructure_asset and update_project in the sibling list. It does not explicitly name alternatives, but the resource phrasing is distinctive enough that an agent can route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The required write scope is stated, which is a useful precondition, but there is no when-to-use guidance, no mention of when not to use it, and no pointers to sibling tools like update_infrastructure_asset for editing the feature itself. Usage is only implied by the verb and resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_milestoneAInspect
Update an existing project milestone by ID. Requires project_milestones:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project milestone ID | |
| name | No | Milestone name | |
| status | No | Milestone status | |
| due_date | No | Due date (ISO 8601) | |
| project_id | No | Project ID | |
| description | No | Description | |
| completed_date | No | Completed date (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required 'project_milestones:write' scope and confirms this mutates an existing milestone, but it omits partial-update semantics, field mutability, idempotency, and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the scope requirement. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is fully documented, and the description adds the required write scope. However, for a mutation tool with no annotations or output schema, it should say more about update behavior, such as whether fields are optional or replaced. It is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds no parameter meaning beyond echoing that the milestone is identified by ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Update an existing project milestone by ID.' This clearly distinguishes the operation from create/delete/get/list milestone tools without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no guidance about when to use this tool versus alternatives such as create_project_milestone, delete_project_milestone, or list_project_milestones. The only usage condition is implied by 'existing' and the required write scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_phaseBInspect
Update an existing project phase by ID. Requires project_phases:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project phase ID | |
| name | No | Phase name | |
| status | No | Phase status | |
| end_date | No | End date (ISO 8601) | |
| project_id | No | Project ID | |
| start_date | No | Start date (ISO 8601) | |
| description | No | Description | |
| sequence_order | No | Order within the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the required scope ('project_phases:write'), a useful trait beyond the schema, but omits critical mutation semantics such as whether the update is partial or full replacement, what happens to omitted fields, and whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and lookup key, followed by the scope requirement. Every sentence earns its place; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with eight parameters, no output schema, and no annotations, the description is not complete enough. It adds the scope requirement but omits update semantics (partial vs full), which fields are modifiable, and any return or side-effect behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are already documented in the schema. The description adds no parameter meaning beyond 'by ID', which merely echoes the required id field. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update'), resource ('project phase'), and lookup key ('by ID'). Clear on its own, but does not differentiate itself from sibling update tools such as update_project_milestone or update_project_task, nor does it name any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no alternatives, and no exclusions. The only contextual remark is an auth prerequisite ('Requires project_phases:write scope'), which is not usage guidance. An agent must infer suitability from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_phase_categoryBInspect
Update an existing project phase category by ID. Requires project_phase_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project phase category ID | |
| name | No | Phase name | |
| sort_order | No | Display order (lower = first) | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it usefully discloses the required authorization scope (project_phase_categories:write). However, it does not state whether the update is partial or full-replace, what happens to omitted fields, or how errors/conflicts are surfaced for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the operation and the permission scope front-loaded; nothing is redundant or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters and the auth requirement are covered, and no output schema exists so return values need not be explained. Still, for a mutation tool with zero annotation coverage, the partial-vs-full update semantics and the failure/reversibility profile are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters self-documented (id, name, sort_order, description), so the baseline is 3. The description adds no additional parameter meaning beyond pointing at 'by ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('project phase category') with the identification method ('by ID'), which is enough to distinguish it from create/delete/list siblings. It does not, however, differentiate itself from update_project_phase or bulk_update beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no statement of prerequisites or alternatives (e.g., bulk_update for multiple categories), and no indication of when this should be preferred over a create or delete. Usage is only implied by the verb 'Update'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_riskAInspect
Update an existing project risk by ID. Requires project_risks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project risk ID | |
| title | No | Risk title | |
| impact | No | Impact level | |
| status | No | Risk status | |
| category | No | Risk category | |
| due_date | No | Due date (ISO 8601) | |
| owner_id | No | Risk owner (Clerk user ID) | |
| project_id | No | Project ID | |
| description | No | Risk description | |
| probability | No | Probability level | |
| mitigation_plan | No | Mitigation plan | |
| contingency_plan | No | Contingency plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full behavioral burden. It adds the required write scope, which is a useful constraint, but it omits partial vs. full update semantics, whether omitted fields are cleared, reversibility, and side effects, leaving gaps for a 12-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and both the target and prerequisite are front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The full schema documents all 12 parameters, including enums and the required ID, and the description supplies the auth scope. However, for a mutation tool with no annotations and no output schema, it omits update semantics (patch vs. replace) and response expectations; the schema's required-id-only shape mitigates this, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is documented in the schema with types, enums, and descriptions. The description adds no syntax or format details beyond naming the ID as the target, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Update) and resource (project risk) scoped to an existing record by ID. It does not explicitly contrast with sibling update_project_* tools, but the resource name is distinctive enough for an agent to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides the required authorization scope (project_risks:write) but no explicit when-to-use or when-not-to-use guidance or alternatives. The prerequisite is useful, but the agent is left to infer that this is for modifying existing risks rather than creating or reading them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_taskCInspect
Update an existing project task by ID. Requires project_tasks:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project task ID | |
| title | No | Task title | |
| status | No | Task status | |
| due_date | No | Due date (ISO 8601) | |
| phase_id | No | Phase ID | |
| priority | No | Priority | |
| project_id | No | Project ID | |
| start_date | No | Start date (ISO 8601) | |
| assigned_to | No | Assigned user | |
| description | No | Description | |
| estimated_cost | No | Estimated cost | |
| estimated_hours | No | Estimated hours |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required OAuth scope ('project_tasks:write'), but a mutation tool should also say whether the update is partial or full, what happens to unspecified fields, and whether it is idempotent – none of which are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste, and the purpose is front-loaded before the scope prerequisite. It is tight, though for a 12-parameter mutation tool a slightly richer sentence could be justified without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, no annotations, and no output schema, the description is too thin for a mutation tool. It omits update semantics, failure modes, and field-level behavior that an agent would need to call it correctly, despite the schema documenting parameter names and types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters, including enums, formats, and constraints. The description adds nothing beyond 'by ID', so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Update') and resource ('project task') plus an identifier, clearly distinguishing it from create_project_task, delete_project_task, and update_project_task_dependency. However, it does not explicitly name any sibling or alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance or alternatives. It only states a prerequisite (scope requirement). There is no mention of when to choose this over bulk_update or when to edit a task dependency instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_team_memberBInspect
Update a project team member by ID. Requires project_team_members:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project team member ID | |
| role | No | Role on the project | |
| user_id | No | Clerk user ID | |
| end_date | No | End date (ISO 8601) | |
| is_active | No | Whether member is currently active | |
| project_id | No | Project ID | |
| start_date | No | Start date (ISO 8601) | |
| responsibilities | No | Description of responsibilities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a genuinely useful behavioral trait — the required project_team_members:write scope — which the schema does not encode. However, it says nothing about partial-vs-full update semantics, whether omitted fields are preserved, or error behavior, which matters for an 8-field mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and the ID requirement front-loaded and the auth requirement immediately after. Nothing in the text is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is fully documented and there is no output schema to explain, so the description is close to sufficient. The gap is that a mutation tool with no annotations should clarify update semantics (patch-style vs replacement) and confirm success behavior; those omissions leave an agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 8 parameters (id, role, user_id, start_date, end_date, is_active, project_id, responsibilities) is already documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (project team member) plus the lookup key (by ID), which cleanly separates it from the create/get/delete/list_project_team_member siblings. It is clear but does not go out of its way to distinguish itself from the many other update_project_* tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the scope string, and never mentions alternatives such as update_project (to change project-level fields) or the create/delete counterparts. The agent must infer usage purely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_time_entryBInspect
Update an existing project time entry by ID. Requires project_time_entries:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project time entry ID | |
| task_id | No | Task ID | |
| user_id | No | User ID | |
| end_time | No | End time (ISO 8601 datetime) | |
| user_name | No | Display name of the user | |
| project_id | No | Project ID | |
| start_time | No | Start time (ISO 8601 datetime) | |
| description | No | Description | |
| is_billable | No | Whether the time is billable | |
| duration_minutes | No | Duration worked, in minutes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the required write scope, which is useful auth context, but does not explain whether this is a partial or full update, how omitted fields are handled, or any side effects. For a mutation tool with ten parameters and zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste. The core action is front-loaded, followed immediately by the prerequisite. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with ten parameters, no annotations, and no output schema. While the schema richly documents parameters, the description fails to explain critical update semantics: whether the call is a partial update (only supplied fields changed) or a full replacement, and what happens to unspecified fields. This leaves an agent uncertain about correct invocation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning every parameter is already documented in the input schema. The description only says the entry is identified by ID, adding no additional meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (project time entry) plus the identifier constraint (by ID). This clearly distinguishes it from create_project_time_entry and delete_project_time_entry. However, it does not explicitly differentiate from sibling update tools beyond the resource name in the tool name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires project_time_entries:write scope'), which is useful context for when the tool can be called. But it offers no guidance on alternatives, such as using bulk_update for multiple entries or get_project_time_entry to retrieve before updating. Usage is implied by the verb and resource but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_updateCInspect
Update an existing project update by ID. Requires project_updates:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project update ID | |
| title | No | Optional custom title | |
| content | No | Update content | |
| author_id | No | Author Clerk user ID | |
| timeframe | No | Update timeframe | |
| project_id | No | Project ID | |
| period_year | No | Year for this update period | |
| period_value | No | Period value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses the required write scope, but says nothing about partial-vs-full update semantics, what happens to unspecified fields, reversibility, or conflict handling for an 8-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the authorization requirement trailing. No padding, though the brevity leans toward under-specification rather than optimized density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter write tool with no annotations and no output schema, the description omits the most decision-relevant behavior: whether this is a PATCH-style partial update, which fields are optional in practice despite only id being required, and what a successful call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every one of the 8 parameters is documented in the schema, so the baseline is 3. The description adds no parameter detail beyond the ID, which the schema already labels 'Project update ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (an existing project update), plus the identifying key (by ID). That is enough to separate it from create_project_update, delete_project_update, and get_project_update, though the crowded update_* family means the resource distinction carries the work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_project_update/list_project_updates, no mention of prerequisites beyond scope, and no note about which fields may be omitted. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_purchase_orderBInspect
Update an existing purchase order by ID. Requires purchase_orders:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order ID | |
| notes | No | Notes | |
| amount | No | PO amount | |
| status | No | PO status | |
| po_number | No | PO number | |
| vendor_id | No | Vendor ID | |
| project_id | No | Project ID | |
| category_id | No | Cost category ID | |
| description | No | Description | |
| issued_date | No | Issued date (ISO 8601) | |
| expected_date | No | Expected delivery date (ISO 8601) | |
| work_order_id | No | Work order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add one valuable behavioral fact — the required purchase_orders:write scope — but says nothing about whether unspecified fields are cleared (partial vs. full replace), reversibility, or side effects on linked lines, which matter for a 12-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the operation and the scope requirement are both front-loaded and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation with no annotations and no output schema, the description is thin. The scope note helps, but the critical semantic of partial-vs-full update behavior on the optional fields is unaddressed, leaving a real gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the status enum and ID formats. The description adds no additional parameter semantics, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('existing purchase order') and pins the identifier ('by ID'), so the operation is immediately clear. It does not explicitly distinguish itself from siblings like update_purchase_order_line, though the resource in the name carries that distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisite timing, and no named alternatives (e.g., create_purchase_order, update_purchase_order_line). The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_purchase_order_lineAInspect
Update a purchase order line item. Requires purchase_orders:write scope. To receive goods, set quantity_received; for a line with a part, the change is added to (or taken from) that part's stock. A line with stock received cannot change its part.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Purchase order line ID | |
| part_id | No | Part from inventory | |
| quantity | No | Quantity ordered | |
| unit_cost | No | Price per unit, in the organization currency | |
| description | No | What is being ordered | |
| line_number | No | Position on the order | |
| quantity_received | No | Quantity received so far, 0 to quantity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a required write scope, a non-obvious side effect (quantity changes propagate to the linked part's stock), and a state constraint ('A line with stock received cannot change its part'). It doesn't cover reversibility or what happens if quantity drops below quantity_received, so it's not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each front-loaded with a distinct concern: action, permission prerequisite, and receiving/stock semantics. No filler and no repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the actions, permission requirement, key side effect, and the main business constraint. Minor gaps remain around partial-update semantics and error/return behavior, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains that quantity_received is the mechanism for receiving goods and that part_id interacts with already-received stock. That extra semantics on two key parameters justifies a step above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a purchase order line item'), which is clearly distinct from update_purchase_order or update_purchase_order_line siblings by naming the line-item granularity. It stops short of explicitly routing against a sibling, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete precondition ('Requires purchase_orders:write scope') and a specific when-to-use trigger ('To receive goods, set quantity_received'). It does not name alternatives or state exclusions, but the operational context is clearly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_service_areaBInspect
Update an existing service area by ID. Requires service_areas:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Service area ID | |
| icon | No | Icon name | |
| name | No | Service area name | |
| color | No | Hex color code | |
| is_active | No | Active status | |
| sort_order | No | Sort order | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the required write scope, but says nothing about partial-update semantics (are omitted fields left unchanged?), reversibility, or error behavior when the ID is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core action front-loaded and the auth requirement second. No filler, though it is arguably terse for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no annotations and no output schema, the description covers purpose and auth but omits update semantics and return/error behavior. The rich schema compensates for parameter documentation, making this minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (id, icon, name, color, is_active, sort_order, description) are already documented in the schema. The description adds nothing beyond confirming the ID identifies the target; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing service area by ID"), which clearly identifies the operation. It does not differentiate from sibling update tools (e.g., update_site, update_service_area_site), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a prerequisite ("Requires service_areas:write scope") which is useful context, but offers no when-to-use vs alternative guidance and no exclusions. The 'by ID' phrasing implies a targeted update, but this 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.
update_siteBInspect
Update an existing site by ID. Requires sites:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Site ID | |
| city | No | City | |
| name | No | Site name | |
| address | No | Street address | |
| country | No | Country | |
| province | No | Province/state | |
| year_built | No | Year built | |
| description | No | Description | |
| postal_code | No | Postal/zip code | |
| contact_name | No | Primary contact name | |
| contact_email | No | Contact email | |
| contact_phone | No | Contact phone | |
| cost_per_sqft | No | Base cost per square foot | |
| lease_details | No | Free-text lease details / notes | |
| lease_end_date | No | Lease end date (YYYY-MM-DD) | |
| owner_landlord | No | Property owner or landlord | |
| ownership_type | No | Ownership type | |
| renewal_option | No | Lease renewal option details | |
| square_footage | No | Square footage | |
| lease_start_date | No | Lease start date (YYYY-MM-DD) | |
| insurance_provider | No | Insurance provider name | |
| insurance_policy_number | No | Insurance policy number | |
| additional_cost_per_sqft | No | Additional cost per square foot | |
| property_manager_company | No | Property management company name | |
| operational_cost_per_sqft | No | Operational cost per square foot | |
| property_manager_contact_name | No | Property management contact name | |
| property_manager_contact_email | No | Property management contact email | |
| property_manager_contact_phone | No | Property management contact phone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the required authorization scope (sites:write), which is real behavioral context, but for a 28-parameter mutation it says nothing about partial vs. full update semantics, whether omitted fields are cleared, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action and the prerequisite front-loaded; nothing is wasted. It is terse to the point of being under-specified, but there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 28 optional parameters, no annotations, and no output schema, the description is far too thin. An agent cannot tell whether sending a subset of fields is safe, whether the call is idempotent, or what happens to fields left out, which are the key unknowns at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 28 properties, so the schema already documents every field including the enum on ownership_type and the date formats. The description adds nothing beyond the ID lookup, which is the correct baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing site by ID'), which is unambiguous against the many update_* and create_site siblings. It does not, however, differentiate itself from siblings such as bulk_update or update_building beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'an existing site' implies this is for modifying a record that already exists rather than creating one, and the scope requirement is stated. But there is no explicit when-to-use guidance, no mention of bulk_update as an alternative for multiple sites, and no note that only the provided fields are changed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_systemBInspect
Update an existing system by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System ID | |
| name | No | System name | |
| description | No | Description | |
| crv_multiplier | No | CRV multiplier | |
| system_group_id | No | System group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required write scope, but omits key behavior for an update tool: whether it is a partial update or full replacement, and what happens to unspecified fields. That's a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the core operation is front-loaded before the scope requirement. Efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations, so the description must stand alone. It covers the basics (resource, ID, scope) but leaves update semantics (partial vs. full replacement, field-clearing behavior) unexplained, which an agent needs to call a mutation correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (id, name, description, crv_multiplier, system_group_id) is already documented in the schema. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing system by ID'), clearly identifying both the operation and target. It doesn't differentiate itself from siblings like update_system_class or update_system_group, but the resource name is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies the required scope ('systems:write'), which helps an agent confirm authorization, but gives no guidance on when to use this versus sibling update tools or prerequisites. Usage is only implied by the clear naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_system_classBInspect
Update an existing system class by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System class ID | |
| name | No | System class name | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the required systems:write scope, which is real context. However it says nothing about partial vs full update semantics, reversibility, or what happens to omitted fields, leaving the mutation profile largely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core operation, with zero filler. Every clause carries information (operation, target, identifier, permission scope).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with full schema coverage and no output schema, the description covers purpose and permissions adequately. It omits the update semantics an agent would want (partial vs replace), so it is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only 'by ID', which merely restates what the schema already documents for the id parameter, and gives no additional meaning for name or description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing system class') and clarifies the operation is keyed by ID. This is clearly distinguishable from update_system (a different resource) and create_system_class, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only states the ID requirement and scope; there is no when-to-use guidance, no mention of alternatives such as update_system_group, and no note on when the tool is or isn't appropriate. The prerequisite line is a requirement, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_system_groupBInspect
Update an existing system group by ID. Requires systems:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System group ID | |
| name | No | System group name | |
| description | No | Description | |
| system_class_id | No | Parent system class ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required auth scope, but says nothing about mutation semantics: whether this is a partial or full-replace update, whether omitted fields are cleared, or what happens if the ID is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the action and lookup key front-loaded before the scope requirement. It is tight but arguably terse for a mutation tool with four parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition covers the action and auth requirement but leaves the partial-update behavior and failure modes unstated. Adequate to invoke, incomplete for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (id, name, description, system_class_id) including formats and length limits. The description adds only the 'by ID' lookup hint, which is baseline-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing system group') plus the lookup key ('by ID'), which is enough to distinguish it from the similarly named update_system and update_system_class siblings. It does not explicitly contrast those siblings, but the resource name is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ('Requires systems:write scope') but no guidance on when to use this versus update_system, update_system_class, or list_system_groups. Usage is implied by the name rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_system_los_targetAInspect
Update a system LoS target by ID. base_target must sit on the scale of the metric in force (0-100, or 0-25 for risk_score_avg), so send a new base_target when changing to a metric with a smaller scale. Direction follows the metric automatically. Requires los_targets:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | System LoS target ID | |
| active | No | Whether the target is scored | |
| metric | No | Metric the target tracks | |
| system_id | No | System ID - resolve first via list_systems | |
| base_target | No | Base target on the metric's scale: fci, asset_condition_avg and asset_past_useful_life_pct run 0-100; risk_score_avg runs 0-25 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the required los_targets:write scope, the 0-100 vs 0-25 scale rule tied to the metric, and that direction is derived automatically from the metric. It stops short of explaining partial-update behavior (are omitted fields untouched?) or validation failure handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the action and followed by the two non-obvious rules. Every clause carries information; nothing is redundant with the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter update with no output schema and no annotations, the description covers the risky parts (scale mismatch on metric change, auth scope). It omits partial-update semantics and whether system_id is mutable, both of which matter for a PATCH-style tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning the schema does not: why base_target must be resubmitted when the metric changes scale, and that direction is not a settable field. The id and system_id parameters remain purely schema-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update a system LoS target by ID"), which distinguishes it from the bulk_update and update_* siblings. It does not, however, contrast itself against the near-identical update_infrastructure_los_target or update_los_proposed_target, so an agent must infer the distinction from the entity name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage constraints (matching base_target to the metric's scale, resending base_target when switching to a smaller-scale metric) but never states when to choose this tool over its close siblings or what preconditions must hold beyond the write scope. Usage is implied through constraints rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vendorAInspect
Update an existing vendor by ID. Requires vendors:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vendor ID | |
| city | No | City | |
| name | No | Vendor name | |
| state | No | State/province | |
| status | No | Vendor status | |
| address | No | Street address | |
| country | No | Country | |
| website | No | Website URL (protocol and www prefix are stripped automatically) | |
| categories | No | Vendor categories (e.g. ["HVAC", "Plumbing"]) | |
| description | No | Description | |
| contact_name | No | Contact person name | |
| contact_email | No | Contact email | |
| contact_phone | No | Contact phone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose an auth requirement (vendors:write scope), which is genuine behavioral value. However, it omits critical mutation semantics: whether omitted fields are preserved or cleared, idempotency, and whether a read-back response is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, front-loading the action and the ID requirement before the permission note. Nothing is padded and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations and no output schema, the description is thin. The schema covers field-level detail well, but patch-vs-replace behavior across 12 optional fields is left entirely unexplained, and there is no indication of what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every one of the 13 fields is individually documented (including the note that website protocols/www are stripped). The description adds nothing beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing vendor by ID'), which cleanly separates it from create_vendor, delete_vendor, and update_vendor_site_assignment. It does not, however, explicitly differentiate itself from bulk_update or other vendor-adjacent mutators, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a real prerequisite ('Requires vendors:write scope'), which is useful guidance. But it gives no when-to-use framing: nothing tells the agent how this differs from bulk_update, or when to prefer this over other vendor operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_categoryBInspect
Update an existing work category by ID. Requires work_categories:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work category ID | |
| name | No | Work category name | |
| module | No | Move the category to a workspace: facilities, infrastructure, or shared (both). | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the required auth scope (work_categories:write), which is genuine added value. However, it does not say whether omitted fields are left unchanged or cleared (partial vs full replace) or whether the change is reversible, which matters for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding, with the operation and its required scope front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description omits the two things an agent most needs: whether updates are partial or full-replacement, and what the result looks like. The scope requirement helps, but the behavioral picture is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, name, module and description are all documented in the schema, including the module enum semantics. The description only confirms the ID is the lookup key and adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing work category') and the keying mechanism ('by ID'). It distinguishes the action from create_work_category/delete_work_category implicitly through the verb, though it does not call out any sibling by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus bulk_update for multiple categories, or versus create/delete. The phrase 'existing ... by ID' implies a prerequisite but does not state it as a rule, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_orderAInspect
Update an existing work order by ID. Requires work_orders:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs. To complete a work order, set status COMPLETED and say what was done in completion_notes; completed_at is stamped automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order ID | |
| type | No | Work order type | |
| title | No | Work order title | |
| status | No | Status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset this work order is for - resolve via list_assets. The server mirrors it into asset_ids. | |
| due_date | No | Due date (ISO 8601) | |
| priority | No | Priority level | |
| asset_ids | No | Assets this work order covers - use instead of asset_id when there is more than one. | |
| assignees | No | Array of assigned user IDs (alternative to assigned_to for multiple assignees) | |
| image_url | No | Image storage path (upload via create_upload_url with bucket "attachments", then set this to the returned path) | |
| meter_unit | No | Meter unit (km, miles, hours, cycles) | |
| start_date | No | Start date (ISO 8601) | |
| system_ids | No | Systems this work order covers - resolve via list_systems. Systems have no singular field; this array is the only way to associate them. | |
| assigned_to | No | Assigned user ID (mapped to assignees array) | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Detailed description | |
| location_id | No | Location this work order is for - resolve last via list_locations filtered by building_id. The server mirrors it into location_ids, so send this OR location_ids, not a conflicting pair. | |
| location_ids | No | Locations this work order covers - use instead of location_id when there is more than one. Sending location_id alone replaces this with that single id. | |
| meter_reading | No | Meter/odometer reading at time of service | |
| estimated_cost | No | Estimated cost | |
| estimated_time | No | Estimated time in hours | |
| completion_notes | No | What was done, recorded on the work order when it is completed | |
| work_category_id | No | Work category ID | |
| purchase_order_id | No | Purchase order that paid this work order's actual cost - resolve via list_purchase_orders. Counts against the order's remaining balance; null clears it. | |
| infrastructure_asset_ids | No | Infrastructure features this work order covers - resolve via list_infrastructure_assets. Use this when one job covers several features (a round of hydrant flushing); the whole selection is one work order with one completion and one cost, split across the features. Mutually exclusive with asset/location/system targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose non-obvious traits: work_orders:write authorization and the fact that completed_at is auto-stamped on completion. It still leaves the partial-vs-full update contract unstated, though the schema (only id required, additionalProperties false) implies a partial update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four tight sentences, front-loaded with the purpose, then scope, then conditional workflows. Every sentence carries actionable content for a 26-parameter tool with no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 26 params, no annotations, and no output schema, the description covers the essentials: purpose, auth scope, location resolution, and completion behavior. It omits edge-case constraints present in the schema (e.g. infrastructure_asset_ids mutual exclusivity, asset_id mirroring), but those are adequately documented in the schema fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by consolidating the location-resolution workflow and the completion recipe (status=COMPLETED plus completion_notes) that spans multiple fields. Some overlap with the per-field schema descriptions keeps it from being a clear 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing work order by ID"), which cleanly separates it from create_/delete_/get_work_order and from the field-scoped update_work_order_comment / update_work_order_schedule siblings. It is clear but relies mostly on the name to establish the update semantics rather than explicitly contrasting siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional guidance: which scope is required, the exact resolution chain when changing location (list_sites → list_buildings → list_locations, all three IDs), and the procedure for completing an order (set COMPLETED + completion_notes). It stops short of explicit when-not-to-use or naming alternative tools for editing other entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_order_commentBInspect
Update an existing work order comment by ID. Requires work_order_comments:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order comment ID | |
| comment | No | Comment text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It usefully discloses the required permission ('Requires work_order_comments:write scope'), which is real added value beyond the schema, but it omits mutation semantics such as whether this is a partial or full update, what happens if 'comment' is omitted, and whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero filler; the action and the permission requirement are both front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity two-parameter update tool with full schema coverage and no output schema, the description covers purpose and auth adequately. It still leaves gaps around update semantics (partial vs. full, optional-field behavior) that matter for a mutation with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'id' and 'comment' are already documented in the schema. The description only restates that lookup is 'by ID' and adds no format, syntax, or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Update an existing work order comment') and even names the lookup key ('by ID'), so the agent knows exactly what the tool operates on. It does not, however, differentiate itself from sibling tools like create/delete/get_work_order_comment, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no reference to alternatives such as create_work_order_comment or update_work_order. The only contextual clue is the implicit 'existing ... by ID', which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_order_scheduleBInspect
Update a work order schedule entry by ID (date, times, stop_order, notes). work_order_id is immutable. Requires work_order_schedules:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work order schedule ID | |
| stop_order | No | 1-based stop position in the day plan | |
| technician_id | No | Technician Clerk user ID | |
| scheduled_date | No | Date (YYYY-MM-DD) | |
| duration_minutes | No | Planned duration in minutes | |
| scheduling_notes | No | Scheduling notes | |
| scheduled_end_time | No | End time (HH:MM) | |
| travel_time_minutes | No | Travel time from previous stop | |
| scheduled_start_time | No | Start time (HH:MM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It usefully discloses that the parent work order reference is immutable and names the required write scope, but says nothing about partial-update semantics (what happens to omitted fields), error behavior for an unknown ID, or reversibility. Useful additions, meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the immutability constraint and scope requirement front-loaded; no filler, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation tool with no annotations and no output schema, the description covers the essentials (what it edits, immutability, write scope) but omits partial-update behavior and failure modes, leaving the agent to guess at invocation semantics. Adequate, not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented, establishing a baseline of 3. The description lists a subset of updatable fields (date, times, stop_order, notes) that roughly matches the schema but adds no format or constraint detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Update a work order schedule entry by ID') and enumerates which fields are updatable (date, times, stop_order, notes). It does not distinguish itself from neighboring tools such as update_work_order or create_work_order_schedule, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. It does not tell the agent how to obtain the ID (e.g., via list_work_order_schedules) or contrast this with update_work_order, so the agent must infer context entirely. The scope note is a prerequisite, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_requestAInspect
Update an existing work request by ID. Requires work_requests:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work request ID | |
| title | No | Work request title | |
| status | No | Status | |
| site_id | No | Site ID - resolve first via list_sites | |
| asset_id | No | Asset ID | |
| priority | No | Priority level | |
| system_id | No | System ID | |
| building_id | No | Building ID - resolve second via list_buildings filtered by site_id | |
| description | No | Description | |
| location_id | No | Location ID - resolve last via list_locations filtered by building_id | |
| work_category_id | No | Work category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the required write scope, but never states whether the update is partial or full-replacement, what happens to unspecified fields, or whether the operation is reversible. For a mutation tool with 11 parameters this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation and its scope requirement, then the conditional workflow. Every sentence carries information; only minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope and the trickiest workflow (location resolution), which is good given no annotations and no output schema. However, with 11 parameters and one required field, the description never clarifies partial-update semantics or what the caller gets back, leaving an agent to infer too much about a mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter, including the site/building/location resolution hints. The description's added value is the ordering constraint ('resolve top-down... Provide all three IDs'), which is real but largely duplicates what the schema text already says, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing work request by ID'), which cleanly separates it from the many sibling update_* and create_work_order/create_work_request tools. It does not explicitly differentiate itself from update_work_order, but the resource distinction is unambiguous in the name and first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition ('Requires work_requests:write scope') and an explicit multi-step resolution path with named sibling tools (list_sites -> list_buildings -> list_locations) for the location-change case. It does not state when NOT to use this tool or how it differs from bulk_update, 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.
upload_fileAInspect
Upload a file to AssetLab storage by sending its bytes inline (base64). The AssetLab backend performs the storage upload server-side - use this tool when the client cannot PUT directly to Supabase Storage (e.g. Claude integrations whose outbound network blocks arbitrary supabase.co hosts). Returns { path, bucket, file_size, content_type }. After uploading, pass path to the appropriate record tool (update_asset image_url, create_asset_document file_path, update_work_order image_url, create_attachment file_path, create_project_document file_path, create_contract_document file_path). Server limit is ~10 MB decoded; MCP arg ceiling effectively caps file size around 700 KB-1 MB. For larger files, use create_upload_url instead. Requires upload_urls:write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | Storage bucket (required). Use "asset-images" for asset photos, "attachments" for work-order/PM attachments. | |
| file_name | Yes | File name including extension (required) | |
| content_type | No | MIME type (e.g. image/jpeg, application/pdf). Defaults to application/octet-stream. | |
| content_base64 | Yes | File contents base64-encoded (required). Data URI prefixes like "data:image/png;base64," are stripped automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses server-side upload semantics, the ~10 MB decoded server limit, the effective ~700 KB-1 MB MCP arg ceiling, the required upload_urls:write scope, and the exact return shape { path, bucket, file_size, content_type }.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and mechanism are front-loaded, then return shape, then the downstream routing list, then limits and the alternative. Every sentence supplies actionable information and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description supplies the return shape, and it covers scope requirements, size constraints, failure-avoidance routing, and post-upload workflow. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning by tying content_base64 to the inline mechanism and the practical size ceiling that governs whether this tool is viable. It does not restate bucket/name/MIME semantics that the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Upload a file to AssetLab storage by sending its bytes inline (base64)') and immediately explains the mechanism that makes it distinct from a direct PUT. It is trivially separable from the sibling create_upload_url because the description names it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the exact condition for use ('when the client cannot PUT directly to Supabase Storage (e.g. Claude integrations whose outbound network blocks arbitrary supabase.co hosts)'), names the alternative for large files (create_upload_url), and prescribes the follow-up step (pass path to the appropriate record tool with the specific targets listed).
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.
480 tool updates
- First observed
bulk_create - First observed
bulk_update - First observed
create_asset - First observed
create_asset_betterment - First observed
create_asset_comment - First observed
create_asset_condition_assessment - First observed
create_asset_cost - First observed
create_asset_document - First observed
create_asset_lifecycle_event - First observed
create_asset_part - First observed
create_asset_placement - First observed
create_asset_replacement_plan - First observed
create_asset_status - First observed
create_asset_type - First observed
create_asset_type_group - First observed
create_attachment - First observed
create_budget - First observed
create_building - First observed
create_building_type - First observed
create_change_order - First observed
create_compliance_item - First observed
create_compliance_pm_schedule - First observed
create_compliance_record - First observed
create_contract - First observed
create_contract_document - First observed
create_contract_site - First observed
create_cost_category - First observed
create_criticality_modifier - First observed
create_custom_field_definition - First observed
create_custom_field_value - First observed
create_expense - First observed
create_floorplan - First observed
create_floorplan_region - First observed
create_form_response - First observed
create_form_template - First observed
create_form_template_item - First observed
create_infrastructure_asset - First observed
create_infrastructure_asset_comment - First observed
create_infrastructure_asset_cost - First observed
create_infrastructure_asset_document - First observed
create_infrastructure_asset_inspection - First observed
create_infrastructure_asset_part - First observed
create_infrastructure_feature_class - First observed
create_infrastructure_lifecycle_event - First observed
create_infrastructure_los_target - First observed
create_infrastructure_network - First observed
create_infrastructure_zone - First observed
create_invoice - First observed
create_location - First observed
create_location_type - First observed
create_los_consequence - First observed
create_los_measure - First observed
create_los_measurement - First observed
create_los_proposed_target - First observed
create_manufacturer - First observed
create_part - First observed
create_part_category - First observed
create_pm_schedule - First observed
create_pm_template - First observed
create_project - First observed
create_project_asset - First observed
create_project_budget_item - First observed
create_project_building - First observed
create_project_comment - First observed
create_project_cost_snapshot - First observed
create_project_document - First observed
create_project_document_folder_template - First observed
create_project_infrastructure_asset - First observed
create_project_location - First observed
create_project_milestone - First observed
create_project_phase - First observed
create_project_phase_category - First observed
create_project_risk - First observed
create_project_site - First observed
create_project_system - First observed
create_project_system_class - First observed
create_project_system_group - First observed
create_project_task - First observed
create_project_task_dependency - First observed
create_project_team_member - First observed
create_project_time_entry - First observed
create_project_update - First observed
create_purchase_order - First observed
create_purchase_order_line - First observed
create_purchase_order_link - First observed
create_service_area - First observed
create_service_area_site - First observed
create_service_area_system_class - First observed
create_site - First observed
create_system - First observed
create_system_class - First observed
create_system_group - First observed
create_system_los_target - First observed
create_upload_url - First observed
create_vendor - First observed
create_vendor_site_assignment - First observed
create_work_category - First observed
create_work_order - First observed
create_work_order_comment - First observed
create_work_order_schedule - First observed
create_work_request - First observed
delete_asset - First observed
delete_asset_betterment - First observed
delete_asset_comment - First observed
delete_asset_condition_assessment - First observed
delete_asset_cost - First observed
delete_asset_document - First observed
delete_asset_lifecycle_event - First observed
delete_asset_part - First observed
delete_asset_placement - First observed
delete_asset_replacement_plan - First observed
delete_asset_status - First observed
delete_asset_type - First observed
delete_asset_type_group - First observed
delete_attachment - First observed
delete_budget - First observed
delete_building - First observed
delete_building_type - First observed
delete_change_order - First observed
delete_compliance_item - First observed
delete_compliance_pm_schedule - First observed
delete_compliance_record - First observed
delete_contract - First observed
delete_contract_document - First observed
delete_contract_site - First observed
delete_cost_category - First observed
delete_criticality_modifier - First observed
delete_custom_field_definition - First observed
delete_custom_field_value - First observed
delete_expense - First observed
delete_floorplan - First observed
delete_floorplan_region - First observed
delete_form_response - First observed
delete_form_template - First observed
delete_form_template_item - First observed
delete_infrastructure_asset - First observed
delete_infrastructure_asset_comment - First observed
delete_infrastructure_asset_cost - First observed
delete_infrastructure_asset_document - First observed
delete_infrastructure_asset_inspection - First observed
delete_infrastructure_asset_part - First observed
delete_infrastructure_feature_class - First observed
delete_infrastructure_lifecycle_event - First observed
delete_infrastructure_los_target - First observed
delete_infrastructure_network - First observed
delete_infrastructure_zone - First observed
delete_invoice - First observed
delete_location - First observed
delete_location_type - First observed
delete_los_consequence - First observed
delete_los_measure - First observed
delete_los_measurement - First observed
delete_los_proposed_target - First observed
delete_manufacturer - First observed
delete_part - First observed
delete_part_category - First observed
delete_pm_schedule - First observed
delete_pm_template - First observed
delete_project - First observed
delete_project_asset - First observed
delete_project_budget_item - First observed
delete_project_building - First observed
delete_project_comment - First observed
delete_project_cost_snapshot - First observed
delete_project_document - First observed
delete_project_document_folder_template - First observed
delete_project_infrastructure_asset - First observed
delete_project_location - First observed
delete_project_milestone - First observed
delete_project_phase - First observed
delete_project_phase_category - First observed
delete_project_risk - First observed
delete_project_site - First observed
delete_project_system - First observed
delete_project_system_class - First observed
delete_project_system_group - First observed
delete_project_task - First observed
delete_project_task_dependency - First observed
delete_project_team_member - First observed
delete_project_time_entry - First observed
delete_project_update - First observed
delete_purchase_order - First observed
delete_purchase_order_line - First observed
delete_purchase_order_link - First observed
delete_service_area - First observed
delete_service_area_site - First observed
delete_service_area_system_class - First observed
delete_site - First observed
delete_system - First observed
delete_system_class - First observed
delete_system_group - First observed
delete_system_los_target - First observed
delete_vendor - First observed
delete_vendor_site_assignment - First observed
delete_work_category - First observed
delete_work_order - First observed
delete_work_order_comment - First observed
delete_work_order_schedule - First observed
delete_work_request - First observed
get_asset - First observed
get_asset_betterment - First observed
get_asset_comment - First observed
get_asset_condition_assessment - First observed
get_asset_cost - First observed
get_asset_document - First observed
get_asset_lifecycle_event - First observed
get_asset_part - First observed
get_asset_placement - First observed
get_asset_replacement_plan - First observed
get_asset_risk_history_entry - First observed
get_asset_status - First observed
get_attachment - First observed
get_budget - First observed
get_change_order - First observed
get_compliance_item - First observed
get_compliance_pm_schedule - First observed
get_compliance_record - First observed
get_contract_document - First observed
get_criticality_modifier - First observed
get_custom_field_definition - First observed
get_custom_field_value - First observed
get_dashboard_snapshot - First observed
get_dashboard_summary - First observed
get_expense - First observed
get_floorplan - First observed
get_floorplan_region - First observed
get_form_response - First observed
get_form_response_answer - First observed
get_form_template - First observed
get_form_template_item - First observed
get_infrastructure_asset - First observed
get_infrastructure_asset_comment - First observed
get_infrastructure_asset_cost - First observed
get_infrastructure_asset_document - First observed
get_infrastructure_asset_inspection - First observed
get_infrastructure_asset_part - First observed
get_infrastructure_asset_risk_history_entry - First observed
get_infrastructure_feature_class - First observed
get_infrastructure_lifecycle_event - First observed
get_infrastructure_los_target - First observed
get_infrastructure_network - First observed
get_infrastructure_zone - First observed
get_invoice - First observed
get_los_consequence - First observed
get_los_measure - First observed
get_los_measurement - First observed
get_los_proposed_target - First observed
get_los_status_snapshot - First observed
get_los_targets_history_entry - First observed
get_manufacturer - First observed
get_organization_settings - First observed
get_part - First observed
get_part_category - First observed
get_pm_schedule - First observed
get_project - First observed
get_project_asset - First observed
get_project_budget_item - First observed
get_project_building - First observed
get_project_comment - First observed
get_project_cost_snapshot - First observed
get_project_document - First observed
get_project_document_folder_template - First observed
get_project_infrastructure_asset - First observed
get_project_location - First observed
get_project_milestone - First observed
get_project_phase - First observed
get_project_risk - First observed
get_project_site - First observed
get_project_system - First observed
get_project_system_class - First observed
get_project_system_group - First observed
get_project_task - First observed
get_project_task_dependency - First observed
get_project_team_member - First observed
get_project_time_entry - First observed
get_project_update - First observed
get_purchase_order - First observed
get_purchase_order_line - First observed
get_purchase_order_link - First observed
get_service_area - First observed
get_site - First observed
get_site_fci_history_entry - First observed
get_system_los_target - First observed
get_user - First observed
get_vendor - First observed
get_vendor_site_assignment - First observed
get_work_order - First observed
get_work_order_comment - First observed
get_work_order_schedule - First observed
get_work_request - First observed
list_asset_betterments - First observed
list_asset_comments - First observed
list_asset_condition_assessments - First observed
list_asset_costs - First observed
list_asset_documents - First observed
list_asset_lifecycle_events - First observed
list_asset_parts - First observed
list_asset_placements - First observed
list_asset_replacement_plans - First observed
list_asset_risk_history - First observed
list_asset_statuses - First observed
list_asset_type_groups - First observed
list_asset_types - First observed
list_assets - First observed
list_attachments - First observed
list_budgets - First observed
list_building_types - First observed
list_buildings - First observed
list_change_orders - First observed
list_compliance_items - First observed
list_compliance_pm_schedules - First observed
list_compliance_records - First observed
list_contract_documents - First observed
list_contract_sites - First observed
list_contracts - First observed
list_cost_categories - First observed
list_criticality_modifiers - First observed
list_custom_field_definitions - First observed
list_custom_field_values - First observed
list_dashboard_snapshots - First observed
list_expenses - First observed
list_floorplan_regions - First observed
list_floorplans - First observed
list_form_response_answers - First observed
list_form_responses - First observed
list_form_template_items - First observed
list_form_templates - First observed
list_infrastructure_asset_comments - First observed
list_infrastructure_asset_costs - First observed
list_infrastructure_asset_documents - First observed
list_infrastructure_asset_inspections - First observed
list_infrastructure_asset_parts - First observed
list_infrastructure_asset_risk_history - First observed
list_infrastructure_assets - First observed
list_infrastructure_feature_classes - First observed
list_infrastructure_lifecycle_events - First observed
list_infrastructure_los_targets - First observed
list_infrastructure_networks - First observed
list_infrastructure_zones - First observed
list_invoices - First observed
list_location_types - First observed
list_locations - First observed
list_los_consequences - First observed
list_los_measurements - First observed
list_los_measures - First observed
list_los_proposed_targets - First observed
list_los_status_snapshots - First observed
list_los_targets_history - First observed
list_manufacturers - First observed
list_part_categories - First observed
list_parts - First observed
list_pm_schedules - First observed
list_pm_templates - First observed
list_project_assets - First observed
list_project_budget_items - First observed
list_project_buildings - First observed
list_project_comments - First observed
list_project_cost_snapshots - First observed
list_project_document_folder_templates - First observed
list_project_documents - First observed
list_project_infrastructure_assets - First observed
list_project_locations - First observed
list_project_milestones - First observed
list_project_phase_categories - First observed
list_project_phases - First observed
list_project_risks - First observed
list_project_sites - First observed
list_project_system_classes - First observed
list_project_system_groups - First observed
list_project_systems - First observed
list_project_task_dependencies - First observed
list_project_tasks - First observed
list_project_team_members - First observed
list_project_time_entries - First observed
list_project_updates - First observed
list_projects - First observed
list_purchase_order_lines - First observed
list_purchase_order_links - First observed
list_purchase_orders - First observed
list_service_area_sites - First observed
list_service_area_system_classes - First observed
list_service_areas - First observed
list_site_fci_history - First observed
list_sites - First observed
list_system_classes - First observed
list_system_groups - First observed
list_system_los_targets - First observed
list_systems - First observed
list_users - First observed
list_vendor_site_assignments - First observed
list_vendors - First observed
list_work_categories - First observed
list_work_order_comments - First observed
list_work_order_schedules - First observed
list_work_orders - First observed
list_work_requests - First observed
update_asset - First observed
update_asset_betterment - First observed
update_asset_comment - First observed
update_asset_condition_assessment - First observed
update_asset_cost - First observed
update_asset_document - First observed
update_asset_lifecycle_event - First observed
update_asset_part - First observed
update_asset_placement - First observed
update_asset_replacement_plan - First observed
update_asset_status - First observed
update_asset_type - First observed
update_asset_type_group - First observed
update_attachment - First observed
update_budget - First observed
update_building - First observed
update_building_type - First observed
update_change_order - First observed
update_compliance_item - First observed
update_compliance_pm_schedule - First observed
update_compliance_record - First observed
update_contract - First observed
update_contract_document - First observed
update_cost_category - First observed
update_criticality_modifier - First observed
update_custom_field_definition - First observed
update_custom_field_value - First observed
update_expense - First observed
update_floorplan - First observed
update_floorplan_region - First observed
update_form_template - First observed
update_form_template_item - First observed
update_infrastructure_asset - First observed
update_infrastructure_asset_comment - First observed
update_infrastructure_asset_cost - First observed
update_infrastructure_asset_document - First observed
update_infrastructure_asset_inspection - First observed
update_infrastructure_asset_part - First observed
update_infrastructure_feature_class - First observed
update_infrastructure_lifecycle_event - First observed
update_infrastructure_los_target - First observed
update_infrastructure_network - First observed
update_infrastructure_zone - First observed
update_invoice - First observed
update_location - First observed
update_location_type - First observed
update_los_consequence - First observed
update_los_measure - First observed
update_los_measurement - First observed
update_los_proposed_target - First observed
update_manufacturer - First observed
update_part - First observed
update_part_category - First observed
update_pm_schedule - First observed
update_pm_template - First observed
update_project - First observed
update_project_budget_item - First observed
update_project_comment - First observed
update_project_document - First observed
update_project_document_folder_template - First observed
update_project_infrastructure_asset - First observed
update_project_milestone - First observed
update_project_phase - First observed
update_project_phase_category - First observed
update_project_risk - First observed
update_project_task - First observed
update_project_team_member - First observed
update_project_time_entry - First observed
update_project_update - First observed
update_purchase_order - First observed
update_purchase_order_line - First observed
update_service_area - First observed
update_site - First observed
update_system - First observed
update_system_class - First observed
update_system_group - First observed
update_system_los_target - First observed
update_vendor - First observed
update_work_category - First observed
update_work_order - First observed
update_work_order_comment - First observed
update_work_order_schedule - First observed
update_work_request - First observed
upload_file
Publisher details
- Operator
- AssetLab CMMS Software Inc. · Publisher source
- Operator website
- https://assetlab.ca
- Vendor relationship
- First-party
- Documentation
- https://app.assetlab.ca/docs/ai
- Trust center
- https://assetlab.ca/trust
- Restrictions
- Requires an AssetLab Enterprise plan. Authentication uses an AssetLab API key created in Settings > API Keys, sent as a Bearer token or exchanged through the OAuth flow; the key's scopes limit which tools are available. Customer data is stored in Canada, but the MCP endpoint runs on Cloudflare's global edge, generally outside Canada.
Related MCP Connectors
Equipment maintenance log: assets, service entries with costs, and a due report from stored dates.
Track tools, equipment and assets: inventory and asset management, assign, report, set up by chat.
Job orders for trades and field work: parts, labour, status, completion report, invoice payload.
AI-ready GIS, geofencing, DataSynch, CRM, inventory, routing, APIs, telemetry and workflows.
Related MCP Servers
- AlicenseAqualityBmaintenanceLets users track equipment maintenance with service entries, costs, and automatically computed due and overdue schedules.8MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to query and manage Atlas CMMS work orders, procedure tasks, evidence notes, and assets through the Atlas REST API over Streamable HTTP, with automatic service-account JWT authentication and human-readable output. Supports filtering, status changes, assignments, and weekly executive reporting.13 npmApache 2.0
- AlicenseBqualityAmaintenance66 tools generated from the same OpenAPI spec as our SDKs — CI fails on drift, so REST and MCP never disagree. Underneath: a deterministic field operations scheduling engine — skills, territories, live availability, sub-3-second cascade rescheduling — drivable end-to-end from Claude or ChatGPT. Schedule changes preview before they commit; LLMs never inside the math.53223 npm3MIT
- AlicenseBqualityDmaintenanceIntegrates with MES, CMMS, and IoT systems to manage manufacturing operations, maintenance tasks, and asset tracking. It enables users to query production orders, create maintenance records, and monitor real-time sensor data and alerts.12MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.