Skip to main content
Glama

AssetLab

Server Details

Work orders, PM schedules, assets, capital plans and infrastructure in AssetLab CMMS/EAM.

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

TDQS

B3.2/5.0

Scored across 480 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count1/5

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.

Completeness4/5

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 tools
bulk_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of objects to create (max 100). Each object uses the same fields as the single-create endpoint for that resource.
resourceYesResource type (e.g. "assets", "work-orders")

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of objects to update (max 100). Each must include an "id" field (UUID) plus fields to change.
resourceYesResource type (e.g. "assets", "work-orders")

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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

States a specific verb and resource ('Update 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAsset name (required)
modelNoModel name/number
site_idNoSite ID - resolve first via list_sites
asset_idNoCustom asset identifier (unique per tenant)
quantityNoQuantity
image_urlNoImage URL
status_idNoStatus identifier
system_idNoSystem ID - resolve last via list_systems filtered by system_group_id
meter_unitNoMeter unit (km, miles, hours, cycles)
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
risk_factorNoRisk factor (CRITICAL, HIGH, MEDIUM, LOW)
asset_type_idNoAsset type ID (from asset_types)
purchase_costNoPurchase cost
purchase_dateNoPurchase date (ISO 8601)
safety_impactNoSafety impact level (LOW, MEDIUM, HIGH, CRITICAL)
salvage_valueNoSalvage value
serial_numberNoSerial number
cost_per_sq_ftNoCost per square foot
service_impactNoService impact level (LOW, MEDIUM, HIGH, CRITICAL)
condition_scoreNoCondition score (0-100)
manufacturer_idNoManufacturer ID (from manufacturers)
system_class_idNoSystem class ID - resolve first via list_system_classes
system_group_idNoSystem group ID - resolve second via list_system_groups filtered by system_class_id
unit_of_measureNoUnit of measure
regulatory_impactNoRegulatory impact level (LOW, MEDIUM, HIGH, CRITICAL)
replacement_valueNoCost to replace this asset today, in current dollars. Distinct from purchase_cost, which is what was paid and is the depreciation basis.
reputation_impactNoReputation impact level (LOW, MEDIUM, HIGH, CRITICAL)
environmental_impactNoEnvironmental impact level (LOW, MEDIUM, HIGH, CRITICAL)
current_meter_readingNoCurrent meter/odometer reading
last_maintenance_dateNoLast maintenance date (ISO 8601)
unit_replacement_valueNoUnit replacement value
expected_lifetime_yearsNoExpected lifetime in years
salvage_value_percentageNoSalvage value percentage (0-100)
likelihood_of_failure_scoreNoLikelihood of failure score
consequence_of_failure_scoreNoConsequence of failure score
replacement_value_reviewed_onNoDate replacement_value was last confirmed (ISO 8601)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset the capital work was performed on (required)
project_idNoThe project that delivered it
descriptionNoWhat was actually done
occurred_onYesDate the work went into service, YYYY-MM-DD (required). Not the invoice date - this is the date its value begins depreciating from.
asset_cost_idNoThe asset cost row holding the spend, so the money is not double-entered
work_order_idNoThe work order that delivered it
added_life_yearsNoExtra service life the work bought, in years. Required unless capitalized_amount is given.
capitalized_amountNoAmount 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_idNoThe lifecycle strategy event this executed, if any

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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

For a mutation tool with no 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.

Parameters4/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesComment text (required)
asset_idYesAsset ID (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-form notes
methodNoAssessment method
defectsNoStructured defect findings (JSON)
asset_idYesAsset ID (required)
assessed_onYesAssessment date (YYYY-MM-DD, required; today or earlier)
assessor_idNoAssessor user ID
condition_scoreNoCondition score (0-100)
replacement_costNoCurrent replacement value / CRV at assessment time
update_purchase_costNoDefault 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

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesCost amount (required)
site_idNoSite ID
asset_idNoAsset ID
categoryYesCost category (required)
cost_dateYesCost date (ISO 8601, required)
po_numberNoPurchase order number (free text)
building_idNoBuilding ID
descriptionNoDescription
work_order_idNoWork order ID
invoice_numberNoInvoice number (free text)
purchase_order_idNoPurchase 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

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name (required)
user_idNoUploader user ID
asset_idYesAsset ID this document belongs to (required)
categoryNoDocument category
file_pathYesStorage path from upload URL response (required)
file_sizeNoFile size in bytes
file_typeNoMIME type
descriptionNoDescription

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

For an 8-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name (required, e.g. "Roof recoat")
fixed_costNoFixed cost per application (current dollars, never indexed)
sort_orderNoEvaluation order within the strategy
cost_sourceNoProvenance of the cost ("Engineering 2026", a tender reference)
event_classYesEvent type - preventative maintenance or rehabilitation
asset_type_idNoAsset type the strategy scope applies to (exactly one of the two scope ids)
impact_methodYesEffect: add years of life, or reset condition to a value
impact_reset_toNoCondition after the event (required when impact_method is reset_condition)
work_generationNoWhat 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_yearsNoYears added (required when impact_method is add_years)
max_applicationsNoHow many times the event may fire over an asset's life (default 1)
min_years_betweenNoMinimum years between firings of a recurring event (default 1)
asset_type_group_idNoAsset type group the scope applies to (exactly one of the two scope ids)
trigger_condition_maxYesUpper bound of the trigger window - the event fires when projected condition falls to this
trigger_condition_minNoLower bound of the trigger window (default 0); an asset already below it has missed the event
work_generation_priorityNoPriority for generated work orders. Ignored unless work_generation is work_order.
work_generation_category_idNoWork category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb+resource ("Create a 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
part_idYesPart ID (required)
asset_idYesAsset ID (required)
quantityNoQuantity of this part on the asset

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesNormalized x coordinate (0=left, 1=right)
yYesNormalized y coordinate (0=top, 1=bottom)
sourceNo"manual" (default) or "ai" for AI-placed
asset_idYesAsset to place (resolve via list_assets)
region_idNoOptional region the pin sits inside (usually auto-inferred)
floorplan_idYesTarget floorplan (resolve via list_floorplans)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes
statusNoStatus
asset_idYesAsset ID (required)
priorityNoPriority
estimated_costNoEstimated replacement cost
funding_sourceNoFunding source
planned_replacement_yearYesPlanned replacement year (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStatus name (required)
moduleNoWorkspace the status is offered in: facilities (assets), infrastructure (features), or shared (both). Defaults to shared.
descriptionNoDescription

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines3/5

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

The description implies the tool is 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAsset type name (required)
group_idNoGroup ID
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name (required)
colorNoColor hex code (e.g., #6366f1)
descriptionNoDescription

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_urlYesFile URL / storage path (required)
file_nameYesFile name (required)
file_sizeNoFile size in bytes
file_typeNoMIME type
descriptionNoDescription
uploaded_byNoUploader user ID
work_order_idNoWork order ID (exactly one parent required)
pm_schedule_idNoPM schedule ID (exactly one parent required)
pm_template_idNoPM template ID (exactly one parent required)
work_request_idNoWork request ID (exactly one parent required)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a 10-parameter mutation 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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesBudget year (required)
moduleNoWorkspace the budget belongs to. Omit for an organization-wide budget; set it when the organization budgets facilities and infrastructure separately.
site_idNoSite ID. Not read by the Budget tab.
building_idNoBuilding ID. Not read by the Budget tab.
funding_sourceYes'O&M' (operations and maintenance) or 'Capital' (required)
budgeted_amountNoBudgeted amount
allocated_amountNoAllocated amount

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesBuilding name (required)
typeNoBuilding type label
floorsNoNumber of floors
site_idYesSite ID (required)
latitudeNoWGS 84 latitude of the building, in decimal degrees. Must be sent together with longitude.
area_sqftNoArea in square feet
longitudeNoWGS 84 longitude of the building, in decimal degrees. Must be sent together with latitude.
year_builtNoYear the building was constructed
building_type_idNoBuilding type ID (from building_types)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesBuilding type name (required)
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional notes
amountYesAmount (required, negative for credits)
reasonNoReason for the change order
statusNoStatus
co_numberYesChange order number (required)
vendor_idNoVendor ID
project_idNoProject ID
category_idNoCost category ID
descriptionYesDescription (required)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a 9-parameter mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompliance item name (required)
statusNoStatus
system_idNoAssociated system ID
descriptionNoDescription
regulation_referenceNoRegulation or code reference
compliance_period_monthsNoCompliance period in months

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
weightNoRelative weight of this schedule in the item score. Default 1.
pm_schedule_idYesPM schedule ID (required)
compliance_item_idYesCompliance item ID (required)
required_frequency_daysYesHow often, in days, the schedule must be completed for the item to stay compliant (required), e.g. 365 for annual

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
completed_atYesCompletion date-time (ISO 8601, required)
completed_byNoUser ID who completed
work_order_idYesWork order ID (required)
pm_schedule_idYesPM schedule ID (required)
compliance_item_idYesCompliance item ID (required)
required_frequency_daysYesRequired frequency in days (required)
days_since_last_completionNoDays since last completion

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesContract title (required)
categoryYesContract category (required)
end_dateYesEnd date (ISO 8601, required)
company_idNoVendor ID
extendableNoWhether contract is extendable
start_dateYesStart date (ISO 8601, required)
annual_costNoAnnual cost
descriptionNoDescription
quality_scoreNoQuality score (1-10)
purchase_orderNoPurchase order reference

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYesFile name (required)
file_pathYesStorage path from upload URL response (required)
file_sizeNoFile size in bytes
file_typeNoMIME type
contract_idYesContract ID (required)
uploaded_byNoUploader user ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesSite ID (required)
contract_idYesContract ID (required)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The description implies when to use 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCost category name (required)
is_activeNoWhether the category is active
parent_idNoParent cost category ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modifierYesMultiplier from 0.1 to 1.9 (required); below 1 tightens, above 1 relaxes
criticalityYesCriticality tier (required)

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

For a two-parameter mutation with no output schema 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.

Parameters4/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_nameYesField name / key (required)
field_typeYesField data type (required)
entity_typeYesEntity type this field applies to (required)
field_labelNoDisplay label
is_requiredNoWhether the field is required
display_orderNoDisplay order
field_optionsNoOptions for select-type fields

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoLegacy 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_idYesEntity ID - e.g. asset.id, work_order.id (required)
value_dateNoDate value, ISO YYYY-MM-DD (use for field_type=date)
value_textNoText value (use for field_type=text or select)
value_numberNoNumeric value (use for field_type=number)
value_booleanNoBoolean value (use for field_type=boolean)
field_definition_idYesCustom field definition ID - resolve via list_custom_field_definitions (required)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes
amountYesExpense amount (required)
project_idYesProject ID (required)
category_idNoCost category ID
descriptionYesExpense description (required)
receipt_urlNoReceipt URL
expense_dateYesExpense date (ISO 8601, required)
work_order_idNoWork order ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoDetection status (default: pending)
site_idNoSite this plan belongs to (use for site-level / campus plans; omit if building-scoped)
building_idNoBuilding this floor belongs to (omit if site-scoped)
floor_labelYesHuman-readable label (e.g. "Ground Floor", "Mezzanine", "Site Plan")
floor_orderNoSort order within the scope (lowest first)
page_numberNo1-indexed page number within the PDF
pdf_filenameYesOriginal filename for display
page_width_ptNoPage width in PDF points (discovered client-side)
page_height_ptNoPage height in PDF points
pdf_storage_pathYesSupabase Storage path to the PDF file

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesRegion label (e.g. "Boiler Room 2B")
sourceNo"manual" (default) or "ai" for AI-detected
polygonYesPolygon outline as an array of [x, y] points in normalized 0-1 coordinates (origin top-left). At least 3 points.
reviewedNoTrue if an admin has reviewed this region (default: true for manual, false for ai)
confidenceNoAI confidence score (0-1), only set when source=ai
location_idNoLinked Location ID (resolved via list_locations)
floorplan_idYesFloorplan this region belongs to

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYesID of the record - resolve via the matching list tool (list_work_orders, list_pm_schedules, list_infrastructure_assets, list_compliance_records, list_sites)
template_idYesPublished 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_typeYesWhat kind of record the form is being attached to

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesForm template name (required)
moduleNoWorkspace the form is offered in: facilities, infrastructure (inspections of features), or shared (both). Defaults to shared.
statusNoPublication status - leave as draft (default) until all questions are added.
descriptionNoDescription
work_category_idNoWork 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

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesQuestion text / prompt shown to the user
configNoPer-type settings. number: { min, max, unit, integer, decimals }. text: { multiline, maxLength, placeholder }. multi_select: { minSelections, maxSelections }. photo: { minPhotos, maxPhotos }.
optionsNoREQUIRED 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_keyNoOptional 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".
requiredNoWhether an answer is required to complete the form (default false)
help_textNoOptional hint shown under the label
item_typeYesPick 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_orderYesDisplay order within the template (0-based; questions render in this order)
template_idYesForm template ID - resolve via list_form_templates
visible_whenNoOptional 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

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFeature name
lanesNoLane count
modelNoModel
depth_mNoDepth (m)
qr_codeNoQR code
site_idNoSite ID
width_mNoWidth (m)
geometryYesGeoJSON geometry - Point for nodes, LineString for segments
materialNoMaterial
quantityNoQuantity
image_urlNoImage URL
status_idNoAsset status ID
system_idNoSystem ID
to_streetNoTo street (segments)
network_idYesInfrastructure network ID (required)
road_classNoO. Reg. 239/02 road class 1-6 (1-2 arterial, 3-4 collector, 5-6 local)
building_idNoBuilding ID
data_sourceNoData source
descriptionNoDescription
diameter_mmNoDiameter (mm)
from_streetNoFrom street (segments)
location_idNoLocation ID
risk_factorNoRisk factor: CRITICAL, HIGH, MEDIUM, LOW
to_invert_mNoTo-invert elevation (m)
external_idsNoFree-form external ID map
feature_codeNoFeature ID - human-readable asset identifier, unique per tenant (typically the source GIS asset id)
feature_typeYes"segment" (LineString) or "node" (Point)
install_dateNoInstall date (YYYY-MM-DD)
asset_type_idNoAsset type ID
from_invert_mNoFrom-invert elevation (m)
purchase_costNoPurchase cost
purchase_dateNoPurchase date (YYYY-MM-DD)
safety_impactNoLOW, MEDIUM, HIGH, CRITICAL
salvage_valueNoSalvage value
serial_numberNoSerial number
to_feature_idNoTo-node feature ID (segments)
flow_directionNoFlow direction
service_impactNoLOW, MEDIUM, HIGH, CRITICAL
condition_scoreNoCondition score (0-100)
from_feature_idNoFrom-node feature ID (segments)
manufacturer_idNoManufacturer ID
system_class_idNoSystem class ID
system_group_idNoSystem group ID
unit_of_measureNoUnit of measure
financial_impactNoLOW, MEDIUM, HIGH, CRITICAL
regulatory_impactNoLOW, MEDIUM, HIGH, CRITICAL
reputation_impactNoLOW, MEDIUM, HIGH, CRITICAL
environmental_impactNoLOW, MEDIUM, HIGH, CRITICAL
last_maintenance_dateNoLast maintenance date (YYYY-MM-DD)
unit_replacement_valueNoUnit replacement value
expected_lifetime_yearsNoExpected lifetime (years)
salvage_value_percentageNo
positional_accuracy_classNoPositional accuracy class
likelihood_of_failure_scoreNo
consequence_of_failure_scoreNo
purchase_cost_calculation_methodNoCost calc method

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

States a specific verb and resource ('Create 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesComment text (required)
feature_idYesInfrastructure feature ID (required)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple two-parameter 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesCost amount (required)
categoryYesCost category (required)
cost_dateYesCost date (YYYY-MM-DD, required)
po_numberNoPO number
feature_idYesInfrastructure feature ID (required)
work_order_idNoLinked work order ID
invoice_numberNoInvoice number
purchase_order_idNoPurchase 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

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name (required)
categoryNoDocument category
file_pathYesStorage path from create_upload_url (required)
file_sizeNoFile size in bytes
file_typeNoMIME type
feature_idYesInfrastructure feature ID (required)
descriptionNoDescription

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-form notes
methodNoInspection method (e.g. CCTV, visual)
defectsNoDefect observations (JSON)
feature_idYesInfrastructure asset (feature) ID (required)
attachmentsNoAttachment URLs/paths
inspector_idNoInspector user ID
condition_scoreNoCondition score (0-100)
inspection_dateYesInspection date (YYYY-MM-DD, required)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For an 8-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is implied by the verb '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.

ParametersJSON Schema
NameRequiredDescriptionDefault
part_idYesPart ID (required; resolve via list_parts)
quantityNoDesign/installed quantity (default 1)
feature_idYesInfrastructure feature ID (required)

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAsset class code (lowercase snake_case, 1-50 chars)
iconNoIcon name
labelYesDisplay name (required)
categoryYesCategory - municipal service family (transportation, water, wastewater, stormwater, structures, electrical, telecom, gas, roadside, other)
color_hexNoDisplay colour as hex, e.g. #3B82F6
sort_orderNoSort order

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEvent name (required, e.g. "Crack Sealing")
materialNoMaterial the scope applies to, exactly as features carry it (e.g. "PVC")
unit_costNoCost per unit (current dollars, never indexed)
fixed_costNoFixed cost (current dollars)
sort_orderNoEvaluation order within the strategy
cost_methodNoCosting: per unit (uses the feature's measured quantity and unit) or a fixed amount (default per_unit)
cost_sourceNoProvenance of the cost ("Engineering 2026", a tender reference)
event_classYesEvent type - preventative maintenance or rehabilitation
feature_classNoFeature class code the strategy scope applies to (omit for a material-wide scope; at least one of feature_class/material is required)
impact_methodYesEffect: add years of life, or reset condition to a value
diameter_min_mmNoLower bound of a diameter band (requires material); bands ladder like rates
impact_reset_toNoCondition after the event (required when impact_method is reset_condition)
work_generationNoWhat 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_yearsNoYears added (required when impact_method is add_years)
max_applicationsNoHow many times the event may fire over a feature's life (default 1)
min_years_betweenNoMinimum years between firings of a recurring event (default 1)
trigger_condition_maxYesUpper bound of the trigger window - the event fires when projected condition falls to this
trigger_condition_minNoLower bound of the trigger window (default 0); a feature already below it has missed the event
work_generation_priorityNoPriority for generated work orders. Ignored unless work_generation is work_order.
work_generation_category_idNoWork category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, and the schema itself 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.

Purpose5/5

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

States a specific verb + resource ('Create a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoWhether the target is scored (default true)
metricYesMetric the target tracks (required)
base_targetYesBase target, 0-100 (required)
feature_classYesFeature class code (required) - must exist; resolve first via list_infrastructure_feature_classes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNetwork name (required)
metadataNoFree-form JSON metadata
criticalityNoHow 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
descriptionNoDescription
color_schemeNoDisplay color scheme
feature_classYesAsset class code (must exist; resolve via list_infrastructure_feature_classes)

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoOptional short code (e.g. "PZ-04")
kindYesZone kind (required)
nameYesZone name (required)
notesNoFree-form notes
boundaryYesGeoJSON 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_idYesInfrastructure network ID (required)

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes
amountYesInvoice amount (required)
statusNoInvoice status
due_dateNoDue date (ISO 8601)
paid_dateNoPaid date (ISO 8601)
vendor_idNoVendor ID
project_idNoProject ID
tax_amountNoTax amount
category_idNoCost category ID
descriptionNoDescription
invoice_dateYesInvoice date (ISO 8601, required)
work_order_idNoWork order ID
invoice_numberYesInvoice number (required)
purchase_order_idNoPurchase order ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNoArea (sq ft or sq m)
nameYesLocation name (required)
typeNoLocation type label
floorNoFloor identifier
building_idYesBuilding ID (required)
location_type_idNoLocation type ID (from location_types)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocation type name (required)
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoWhether the consequence is shown (default true)
metricNoLimit to one metric; omit or null to match any metric
severityYesMinimum severity shown (required)
scope_refNoWhat 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
statementYesThe consequence, as a statement (required)
scope_typeYesWhat the consequence applies to (required)
notify_rolesNoRoles named as owning the consequence. Recorded only; nothing is sent

TDQS

A4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesMeasure name (required, unique per service area)
typeYesMeasure type (required)
unitNoUnit of measurement (e.g., "%", "hours", "count")
weightNoWeight for composite score calculation (default: 1.0)
categoryYesMeasure category (required)
is_activeNoWhether the measure is active (default: true)
sort_orderNoSort order for display
data_sourceYesData source type (required). Use "manual" if values will be entered by hand.
descriptionNoDescription
stretch_goalNoStretch goal value
target_valueNoTarget value
service_area_idYesService area ID (required)
trend_directionNoWhich direction is better
data_source_configNoData source configuration (JSONB). E.g., {"threshold": 3} for pct_above/below, {"days_back": 90} for WO metrics.
minimum_acceptableNoMinimum acceptable value
community_statementNoCommunity-facing statement (for community type measures)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Create a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes or context for this measurement
is_autoNoWhether this is an auto-calculated value (default: false)
period_endYesPeriod end date (ISO 8601, required, e.g., "2026-03-31")
period_typeYesPeriod type (required)
actual_valueYesMeasured value (required)
period_startYesPeriod start date (ISO 8601, required, e.g., "2026-01-01")
los_measure_idYesLoS measure ID (required)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesTarget year, 2000-2200 (required)
target_valueNoProposed value for a technical measure, in the measure's own unit
los_measure_idYesLoS measure ID (required)
target_statementNoProposed level of service for a community measure, as a statement

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesManufacturer name (required)
notesNoNotes
websiteNoWebsite URL
contact_nameNoPrimary contact name
contact_emailNoContact email address
contact_phoneNoContact phone number

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
costNoUnit cost
nameYesPart name (required)
site_idNoSite ID
categoryNoCategory label
quantityNoCurrent stock quantity
supplierNoDEPRECATED - legacy free-text supplier name. Use supplier_id instead.
building_idNoBuilding ID
location_idNoLocation ID
part_numberNoPart number / SKU
supplier_idNoVendor ID (resolve via list_vendors)
desired_quantityNoTarget / reorder quantity
specific_locationNoStorage location description

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPart category name (required)
moduleNoWorkspace the category is offered in: facilities, infrastructure, or shared (both). Defaults to shared.
descriptionNoDescription

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoChecklist of tasks for this PM schedule
titleYesPM schedule title (required)
statusNoSchedule status
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset ID
floatingNoFloating schedule (due date based on completion)
next_dueNoNext due date (ISO 8601)
asset_idsNoAssets this schedule covers - use instead of asset_id when there is more than one.
frequencyNoFrequency
meter_unitNoMeter unit (km, miles, hours, cycles)
start_dateNoStart date (ISO 8601)
system_idsNoSystems this schedule covers. Systems have no singular field; this array is the only way to associate them.
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
meter_basedNoWhether this PM triggers at meter intervals (e.g. every 5000 km)
location_idsNoLocations 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_typeNoSchedule type
work_categoryNoWork category label
estimated_costNoEstimated cost
lead_time_daysNoLead time in days
meter_intervalNoMeter interval - trigger every N units
estimated_hoursNoEstimated hours
auto_generate_woNoAuto-generate work orders
form_template_idNoForm 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_daysNoGrace period in days
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)
infrastructure_asset_idsNoInfrastructure 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

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoChecklist of tasks baked into this template
titleYesPM template title (required, unique per tenant)
asset_idsNoDefault asset IDs to seed on derived schedules
documentsNoDocument references
frequencyNoSuggested maintenance frequency
resourcesNoResource references (parts, tools, materials, equipment)
descriptionNoDescription
location_idsNoDefault location IDs to seed on derived schedules
work_categoryNoWork category label (free text)
estimated_costNoEstimated cost
estimated_hoursNoEstimated hours
form_template_idNoForm 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_idNoWork category ID - resolve via list_work_categories
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb and resource ('Create a new 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name (required)
budgetNoTotal budget
statusYesProject status (required)
end_dateNoEnd date (ISO 8601)
image_urlNoImage URL
start_dateYesStart date (ISO 8601, required)
descriptionNoDescription
project_codeNoProject code
project_typeNoProject type
budget_statusNoBudget status
current_phaseNoCurrent phase
health_statusNoHealth status
progress_statusNoProgress status
project_managerNoProject manager name
progress_percentageNoProgress percentage (0-100)

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset ID (required)
project_idYesProject ID (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesBudget category (required)
project_idYesProject ID (required)
descriptionNoDescription
actual_amountNoActual amount
planned_amountNoPlanned amount

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (required)
building_idYesBuilding ID (required)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComment content (required)
parent_idNoParent comment ID (for threading)
project_idYesProject ID (required)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

The description states a specific verb and resource ("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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (required)
actual_costYesActual cost to date (required)
total_budgetYesTotal budget amount (required)
snapshot_dateYesSnapshot date (ISO 8601, required)
forecasted_costNoForecasted total cost
percent_completeNoCompletion percentage (0-100)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name (required)
file_pathYesStorage path from upload URL response (required)
file_sizeNoFile size in bytes
file_typeNoMIME type
folder_idNoFolder ID
project_idYesProject ID (required)
descriptionNoDescription
uploaded_byYesUploader user ID (required)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name (required)
structureNoFolder hierarchy as JSON array
is_defaultNoWhether this is the default template
descriptionNoTemplate description

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a project 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-form notes
feature_idYesInfrastructure feature ID (required)
project_idYesProject ID (required)

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose4/5

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

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

Usage Guidelines3/5

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

Usage is only implied by the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (required)
location_idYesLocation ID (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesMilestone name (required)
statusNoMilestone status
due_dateYesDue date (ISO 8601, required)
project_idYesProject ID (required)
descriptionNoDescription
completed_dateNoCompleted date (ISO 8601)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPhase name (required)
statusNoPhase status
end_dateNoEnd date (ISO 8601)
project_idYesProject ID (required)
start_dateNoStart date (ISO 8601)
descriptionNoDescription
sequence_orderNoOrder within the project

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPhase name (required), e.g. "Planning", "Design"
sort_orderNoDisplay order (lower = first)
descriptionNoDescription of the phase

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesRisk title (required)
impactNoImpact level
statusNoRisk status (default: identified)
categoryNoRisk category
due_dateNoDue date (ISO 8601)
owner_idNoRisk owner (Clerk user ID)
created_byNoCreator (Clerk user ID)
project_idYesProject ID (required)
descriptionNoRisk description
probabilityNoProbability level
mitigation_planNoMitigation plan
contingency_planNoContingency plan

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb+resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesSite ID (required)
project_idYesProject ID (required)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple two-parameter 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
system_idYesSystem ID (required)
project_idYesProject ID (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (required)
system_class_idYesSystem class ID (required)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (required)
system_group_idYesSystem group ID (required)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a two-parameter mutation with no 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.

Parameters3/5

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

Schema description coverage is 100%, with both parameters 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTask title (required)
statusNoTask status
due_dateNoDue date (ISO 8601)
phase_idNoPhase ID
priorityNoPriority
project_idYesProject ID (required)
start_dateNoStart date (ISO 8601)
assigned_toNoAssigned user
descriptionNoDescription
estimated_costNoEstimated cost
estimated_hoursNoEstimated hours

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (the dependent task, required)
dependency_typeNoDependency type (default: finish_to_start)
depends_on_task_idYesTask ID that must complete first (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole on the project (required)
user_idYesClerk user ID (required)
end_dateNoEnd date (ISO 8601)
is_activeNoWhether member is currently active
project_idYesProject ID (required)
start_dateNoStart date (ISO 8601)
responsibilitiesNoDescription of responsibilities

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (required)
user_idYesUser ID (required)
end_timeNoEnd time (ISO 8601 datetime)
user_nameNoDisplay name of the user
project_idYesProject ID (required)
start_timeYesStart time (ISO 8601 datetime, required)
descriptionNoDescription
is_billableNoWhether the time is billable
duration_minutesNoDuration worked, in minutes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a 9-parameter mutation tool with no output schema 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional custom title
contentYesUpdate content (required)
author_idYesAuthor Clerk user ID (required)
timeframeYesUpdate timeframe (required)
project_idYesProject ID (required)
period_yearYesYear for this update period (required)
period_valueYesPeriod value - 1-12 for monthly, 1-4 for quarterly, etc. (required)

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes
amountYesPO amount (required)
statusNoPO status
po_numberYesPO number (required)
vendor_idNoVendor ID
project_idNoProject ID
category_idNoCost category ID
descriptionNoDescription
issued_dateNoIssued date (ISO 8601)
expected_dateNoExpected delivery date (ISO 8601)
work_order_idNoWork order ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For an 11-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
part_idNoPart from inventory - resolve via list_parts
quantityYesQuantity ordered (required)
unit_costNoPrice per unit, in the organization currency
descriptionYesWhat is being ordered (required)
line_numberNoPosition on the order
purchase_order_idYesPurchase order ID (required) - resolve via list_purchase_orders
quantity_receivedNoQuantity received so far, 0 to quantity

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no 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.

Parameters4/5

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

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

Purpose4/5

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

States a specific verb and resource ('Add 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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNoIcon name (e.g., "droplets" for water)
nameYesService area name (required, unique per tenant)
colorNoHex color code (e.g., "#3B82F6")
is_activeNoWhether the service area is active (default: true)
sort_orderNoSort order for display
descriptionNoDescription

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesSite ID (required)
service_area_idYesService area ID (required)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple two-parameter 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.

Parameters4/5

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

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

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_area_idYesService area ID (required)
system_class_idYesSystem class ID (required)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity
nameYesSite name (required)
addressNoStreet address
countryNoCountry
provinceNoProvince/state
year_builtNoYear built
descriptionNoDescription
postal_codeNoPostal/zip code
contact_nameNoPrimary contact name
contact_emailNoContact email
contact_phoneNoContact phone
cost_per_sqftNoBase cost per square foot
lease_detailsNoFree-text lease details / notes
lease_end_dateNoLease end date (YYYY-MM-DD)
owner_landlordNoProperty owner or landlord
ownership_typeNoOwnership type
renewal_optionNoLease renewal option details
square_footageNoSquare footage
lease_start_dateNoLease start date (YYYY-MM-DD)
insurance_providerNoInsurance provider name
insurance_policy_numberNoInsurance policy number
additional_cost_per_sqftNoAdditional cost per square foot
property_manager_companyNoProperty management company name
operational_cost_per_sqftNoOperational cost per square foot
property_manager_contact_nameNoProperty management contact name
property_manager_contact_emailNoProperty management contact email
property_manager_contact_phoneNoProperty management contact phone

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem name (required)
descriptionNoDescription
crv_multiplierNoCRV multiplier
system_group_idNoSystem group ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem class name (required)
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem group name (required)
descriptionNoDescription
system_class_idNoParent system class ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoWhether the target is scored (default true)
metricYesMetric the target tracks (required)
system_idYesSystem ID (required) - resolve first via list_systems
base_targetYesBase 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

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb and resource ('Set 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesStorage bucket (required). Use "asset-images" for asset photos.
file_nameYesFile name including extension (required)

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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

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

Purpose5/5

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

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

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity
nameYesVendor name (required)
stateNoState/province
statusNoVendor status
addressNoStreet address
countryNoCountry
websiteNoWebsite URL (protocol and www prefix are stripped automatically)
categoriesNoVendor categories (e.g. ["HVAC", "Plumbing"])
descriptionNoDescription
contact_nameNoContact person name
contact_emailNoContact email
contact_phoneNoContact phone

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesSite ID (required)
vendor_idYesVendor ID (required)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWork category name (required)
moduleNoWorkspace the category is offered in: facilities, infrastructure, or shared (both). Defaults to shared.
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWork order type
titleYesWork order title (required)
statusNoStatus
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset this work order is for - resolve via list_assets. The server mirrors it into asset_ids.
due_dateNoDue date (ISO 8601)
priorityNoPriority level
asset_idsNoAssets this work order covers - use instead of asset_id when there is more than one.
assigneesNoArray of assigned user IDs (alternative to assigned_to for multiple assignees)
image_urlNoImage storage path (upload via create_upload_url with bucket "attachments", then set this to the returned path)
meter_unitNoMeter unit (km, miles, hours, cycles)
start_dateNoStart date (ISO 8601)
system_idsNoSystems this work order covers - resolve via list_systems. Systems have no singular field; this array is the only way to associate them.
assigned_toNoAssigned user ID (mapped to assignees array)
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDetailed description
location_idNoLocation 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_idsNoLocations 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_readingNoMeter/odometer reading at time of service
estimated_costNoEstimated cost
estimated_timeNoEstimated time in hours
work_category_idNoWork category ID
purchase_order_idNoPurchase order that paid this work order's actual cost - resolve via list_purchase_orders. Counts against the order's remaining balance.
infrastructure_asset_idsNoInfrastructure 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

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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

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

Purpose4/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesComment text (required)
work_order_idYesWork order ID (required)

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a mutation tool with no 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.

Parameters3/5

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

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

Purpose5/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_orderNo1-based stop position in the day plan
technician_idYesTechnician Clerk user ID (required)
work_order_idYesWork order ID (required)
scheduled_dateYesDate (YYYY-MM-DD, required)
duration_minutesNoPlanned duration in minutes
scheduling_notesNoScheduling notes
scheduled_end_timeNoEnd time (HH:MM)
travel_time_minutesNoTravel time from previous stop
scheduled_start_timeNoStart time (HH:MM)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesWork request title (required)
statusNoStatus
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset ID
priorityNoPriority level
system_idNoSystem ID
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
work_category_idNoWork category ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

For a 10-parameter mutation 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.

Parameters4/5

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

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

Purpose4/5

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

States a specific verb+resource ("Create a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBetterment ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset comment ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter, no-output-schema 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssessment ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset cost ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Delete an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset document ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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

The description states a specific verb and resource ("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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset-part association ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset placement ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter ('id', 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.

Purpose5/5

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.

Usage Guidelines3/5

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

Usage is implied by the name and the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset replacement plan ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset status ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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

The description gives no guidance on when to 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset type ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset type group ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is only implied by the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAttachment ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBudget ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBuilding ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBuilding type ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesChange order ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance item ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLink ID - resolve via list_compliance_pm_schedules

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance record ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContract ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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

Only one parameter with 100% schema description coverage ('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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContract document ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesSite ID (required)
contract_idYesContract ID (required)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

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

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCost category ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCriticality modifier ID

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field definition ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field value ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a one-parameter delete with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExpense ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is already 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.

Purpose4/5

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

States a specific verb and resource ("Delete an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan ID

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan region ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm response ID - resolve via list_form_responses filtered by subject_id

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template item ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% for the single 'id' parameter (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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCost ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInspection ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssociation ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the simple one-parameter schema and no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAsset class code (lowercase snake_case, 1-50 chars)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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

Only one parameter with 100% schema description coverage, so the schema already 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete 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.

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('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.

Purpose5/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure LoS target ID

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource: 'Delete an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure network ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a single-parameter destructive tool with no output schema and 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.

Parameters3/5

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

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

Purpose5/5

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

States a specific verb and resource ('Delete 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesZone ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter destructive 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

There is one parameter (id) with 100% schema description coverage, so the schema 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.

Purpose5/5

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

The description states a specific verb and resource ("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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLocation ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a one-parameter delete with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLocation type ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is already 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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS consequence ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a one-parameter delete with 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measure ID

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measurement ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource (delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS proposed target ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is already 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesManufacturer ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a destructive mutation with no 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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart category ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPM schedule ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPM template ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

The description states a specific verb and resource ("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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject asset ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Only one parameter and schema coverage is 100%, 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description never says when to 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject budget item ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

Schema description coverage is 100%, and the single parameter 'id' is 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.

Purpose5/5

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.

Usage Guidelines3/5

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

The description implies usage through the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject building ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject comment ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject cost snapshot ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject document ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLink ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject location ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject milestone ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject phase ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject phase category ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose5/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject risk ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject site ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete with 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system class ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Only one parameter with 100% schema description coverage ('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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system group ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Remove 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject task ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject task dependency ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject team member ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is implied by the verb '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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject time entry ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Single parameter with 100% schema description coverage, so the schema already 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.

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is implied by the verb: 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject update ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order line ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Delete a 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.

Usage Guidelines3/5

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_service_areaAInspect

Delete a service area by ID. WARNING: This also deletes all linked measures, measurements, and junction records. Requires service_areas:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService area ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose5/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService area site link ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService area system class link ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter delete 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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100% and the single parameter 'id' is documented 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Delete a 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem class ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem group ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem LoS target ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVendor ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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

No guidance is given about when to 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVendor-site assignment ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork category ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a single-parameter mutation with no output schema 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.

Parameters3/5

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

Schema description coverage is 100% and the single parameter is documented as 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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

With a single parameter at 100% schema coverage, the schema already documents '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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order comment ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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

States a specific verb and resource ('Delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order schedule ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter delete 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.

Parameters3/5

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

Schema coverage is 100% for the single 'id' parameter, so the schema already documents it fully. The description 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.

Purpose5/5

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.

Usage Guidelines3/5

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

Usage is implied by the name, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork request ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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

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

Purpose5/5

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

States a specific verb and resource (delete a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Get 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBetterment ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter read 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.

Parameters3/5

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

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

Purpose5/5

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

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

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset comment ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset condition assessment ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset cost ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

No output schema exists, so the description 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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset document ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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

Two tight sentences with zero waste; the core purpose is front-loaded 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.

Completeness3/5

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

There is no output schema, so the description 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.

Parameters3/5

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

There is a single parameter with 100% schema description coverage, 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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset-part association ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset placement ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReplacement plan ID

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRisk history entry ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset status ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no explicit guidance on when to use this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAttachment ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBudget ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesChange order ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is already 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.

Purpose4/5

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

States a specific verb and resource ("Get a 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.

Usage Guidelines3/5

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

Usage is implied rather than stated: the agent 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance item ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

Only one parameter with 100% schema description coverage ('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.

Purpose4/5

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

States a specific verb (get) and resource (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.

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLink ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple single-parameter read 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The phrase 'by its ID' implies the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance record ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContract document ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCriticality modifier ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no explicit guidance on when to use this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field definition ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It 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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field value ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDashboard snapshot ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document 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.

Purpose4/5

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

States a specific verb and resource ('Get 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExpense ID

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan region ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm response ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm response answer ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

There is a single parameter with 100% schema coverage; 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.

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template item ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a one-parameter read tool 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset (feature) ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

No output schema exists, so the description 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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is already 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.

Purpose5/5

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

States a specific verb and resource ('Get 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset comment ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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

Usage is only implied by the '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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset cost ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100% for the single 'id' parameter (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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset document ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It communicates the core 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.

Completeness3/5

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

There is no output schema, and the description 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.

Parameters3/5

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.

Purpose4/5

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

The description states a specific verb and resource: 'Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset inspection ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset part ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as list_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset risk history entry ID

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAsset class code (lowercase, snake_case)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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

Usage is only implied by the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure LoS target ID

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure network ID

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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

For a single-parameter read tool with no output schema 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.

Parameters2/5

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.

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure zone ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS consequence ID

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measure ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple single-record 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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is 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.

Purpose4/5

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

States a specific verb (get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measurement ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter read 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS proposed target ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS status snapshot ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

The description states a specific verb and resource: 'Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS targets history entry ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesManufacturer ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb 'Get' and resource '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.

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

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.

Conciseness4/5

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.

Completeness4/5

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

No output schema exists, so the description 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.

Parameters4/5

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.

Purpose5/5

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

States a specific verb and resource ("Get 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a one-parameter, read-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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart category ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a one-parameter read tool with full schema coverage and 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (get) and resource (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.

Usage Guidelines3/5

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

The phrase 'by ID' implies this is the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPM schedule ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description must 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.

Parameters3/5

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

Schema coverage is 100% and the single id parameter is 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject asset ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBudget item ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is already 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject building ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject comment ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject cost snapshot ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

The description states a specific verb and resource ('Get a single project 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject document ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a one-parameter read tool with full schema coverage and 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject infrastructure asset link ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject location ID

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. 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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description uses a specific verb ('Get'), 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject milestone ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

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

Purpose4/5

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

The description names a specific verb and resource ('Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject phase ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject risk ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject site ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (get) and resource (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.

Usage Guidelines2/5

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

There is no explicit guidance on when to use this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system class ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource: 'Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject system group ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100% and the single parameter is documented as 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject task ID

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject task dependency ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject team member ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTime entry ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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

The phrase 'by ID' weakly implies 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject update ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple one-parameter 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.

Parameters3/5

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

Only one parameter, and schema coverage is 100% (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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order line ID

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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

Schema coverage is 100% and the single id parameter is 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.

Purpose4/5

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.

Usage Guidelines3/5

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

No explicit guidance on when to use this 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_service_areaAInspect

Get a single service area by ID, including linked system classes and sites.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService area ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description must 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFCI history entry ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem LoS target ID

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser ID (Clerk user ID string)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a single-parameter read tool with no output schema, the description covers purpose, 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (get) and resource (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.

Usage Guidelines3/5

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

Usage is implied rather than stated: '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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVendor ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a single-parameter read tool with no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource (get a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVendor site assignment ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

For a simple single-record 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (Get) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, and the description 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Get 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.

Usage Guidelines4/5

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

The description gives clear context for 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order comment ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb ('Get') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order schedule ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('Get a single 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork request ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

No output schema exists, so the description must convey return content; 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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by the project that delivered it
work_order_idNoFilter by the work order that delivered it

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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

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

Purpose5/5

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

States a specific verb (List) and resource (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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple read-only list tool with no output schema, the description is 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
methodNoFilter by method (visual | detailed | vendor)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
assessor_idNoFilter by assessor user ID
condition_maxNoMaximum condition score (0-100)
condition_minNoMinimum condition score (0-100)
assessed_on_toNoFilter assessments on/before this date (YYYY-MM-DD)
assessed_on_fromNoFilter assessments on/after this date (YYYY-MM-DD)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
asset_idNoFilter by asset ID
categoryNoFilter by cost category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
work_order_idNoFilter by work order ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

No output schema exists, so the description 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.

Parameters3/5

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

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

Purpose5/5

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

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
asset_idNoFilter by asset ID
categoryNoFilter by document category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple list tool with 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource (list 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active ("true") vs disabled ("false") events
event_classNoFilter by event type
asset_type_idNoFilter by asset type ID
asset_type_group_idNoFilter by asset type group ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
part_idNoFilter by part ID
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
region_idNoFilter by region ID
floorplan_idNoFilter by floorplan ID

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a read-only list tool with no output schema and 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.

Parameters4/5

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

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

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
yearNoFilter by planned replacement year
statusNoFilter by plan status
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
priorityNoFilter by priority

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

No output schema exists, and the description compensates 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
trigger_eventNoFilter by trigger event type

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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

Usage is implied by the name and 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_idNoFilter by system ID
building_idNoFilter by building ID
system_class_idNoFilter by system class ID
system_group_idNoFilter by system group ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
moduleNoOnly records in this workspace; none = shared ones only
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
group_idNoFilter by asset type group ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
work_order_idNoFilter by work order ID
pm_schedule_idNoFilter by PM schedule ID
pm_template_idNoFilter by PM template ID
work_request_idNoFilter by work request ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
yearNoFilter by budget year (e.g. 2026)
moduleNoFilter by workspace; 'none' for organization-wide budgets
searchNoSearch by name
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
building_idNoFilter by building ID
funding_sourceNoFilter by funding source

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

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

Parameters3/5

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.

Purpose5/5

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

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: draft, submitted, approved, rejected
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
vendor_idNoFilter by vendor ID
project_idNoFilter by project ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: active, archived
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_idNoFilter by system ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (list) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pm_schedule_idNoPM schedule ID - resolve via list_pm_schedules
compliance_item_idNoCompliance item ID - resolve via list_compliance_items

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
work_order_idNoFilter by work order ID
compliance_item_idNoFilter by compliance item ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
contract_idNoFilter by contract ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
categoryNoFilter by contract category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
contract_idNoFilter by contract ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (list) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active status
parent_idNoFilter by parent category ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
criticalityNoFilter by criticality tier

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List the 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
field_typeNoFilter by field type
entity_typeNoFilter by entity type (e.g. asset, work_order)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple read-only list tool the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
entity_idNoFilter by entity ID (e.g. asset ID, work order ID)
field_definition_idNoFilter by field definition ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
yearNoFilter by snapshot year (e.g. 2026)
monthNoFilter by snapshot month (1-12)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, and the description 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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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

Usage is implied by the verb and the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
category_idNoFilter by cost category ID
work_order_idNoFilter by work order ID

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

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

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
reviewedNoFilter by reviewed state
location_idNoFilter regions linked to a specific location
floorplan_idNoFilter by floorplan ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
statusNoFilter by detection status
site_idNoFilter by site ID (site-scoped floorplans only)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
building_idNoFilter by building ID (building-scoped floorplans)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
item_keyNoFilter by item key
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
response_idNoFilter by form response ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb 'List' and resource '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
statusNoFilter by status
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
subject_idNoFilter by subject ID
template_idNoFilter by form template ID
subject_typeNoFilter by subject type

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
template_idNoFilter by form template ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
moduleNoOnly records in this workspace; none = shared ones only
searchNoSearch by name
statusNoFilter by status: draft, published, archived
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
work_category_idNoFilter by work category ID (look up with list_work_categories)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
categoryNoFilter by cost category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID
cost_date_toNoCosts on/before this date (YYYY-MM-DD)
work_order_idNoFilter by work order ID
cost_date_fromNoCosts on/after this date (YYYY-MM-DD)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a read-only list tool with no output schema, 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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
categoryNoFilter by document category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
methodNoFilter by inspection method (e.g. CCTV, visual)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure asset (feature) ID
inspector_idNoFilter by inspector user ID
condition_maxNoMaximum condition score (0-100)
condition_minNoMinimum condition score (0-100)
inspection_date_toNoFilter inspections on/before this date (YYYY-MM-DD)
inspection_date_fromNoFilter inspections on/after this date (YYYY-MM-DD)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
part_idNoFilter by part ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
sourceNoFilter by capture source (e.g. manual_update)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID
captured_at_toNoEntries on/before this date (YYYY-MM-DD)
captured_at_fromNoEntries on/after this date (YYYY-MM-DD)

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List the 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
status_idNoFilter by asset status ID
network_idNoFilter by infrastructure network ID
feature_typeNoFilter by feature type
asset_type_idNoFilter by asset type ID
condition_maxNoMaximum condition score (0-100)
condition_minNoMinimum condition score (0-100)
risk_score_maxNoMaximum risk score
risk_score_minNoMinimum risk score
include_deletedNoInclude soft-deleted features ("true") - default "false"

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
categoryNoFilter by category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_builtinNoFilter by builtin ("true") vs tenant-defined ("false")

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
materialNoFilter by material (exact string)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active ("true") vs disabled ("false") events
event_classNoFilter by event type
feature_classNoFilter by feature class code

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
activeNoFilter by active (true) or paused (false)
metricNoFilter by metric
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_classNoFilter by feature class code (e.g. "sidewalk")

TDQS

A4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb ('List') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_classNoFilter by feature class code (e.g. "water_main")

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by zone kind
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
network_idNoFilter by infrastructure network ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: pending, approved, paid, voided
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
vendor_idNoFilter by vendor ID
project_idNoFilter by project ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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

Usage is implied by the name and the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
building_idNoFilter by building ID
location_type_idNoFilter by location type ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
activeNoFilter by active (true) or paused (false)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
severityNoFilter by severity
scope_typeNoFilter by scope type

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters4/5

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

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

Purpose5/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
date_toNoFilter measurements up to this date (ISO 8601, inclusive)
is_autoNoFilter by auto-calculated (true) or manual (false)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
date_fromNoFilter measurements from this date (ISO 8601, inclusive)
period_typeNoFilter by period type
los_measure_idNoFilter by LoS measure ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
typeNoFilter by measure type
searchNoSearch by name
categoryNoFilter by measure category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active status
data_sourceNoFilter by data source type
service_area_idNoFilter by service area ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
yearNoFilter by target year
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
los_measure_idNoFilter by LoS measure ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

No output schema exists, so the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
metricNoFilter by metric
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
period_toNoReadings for this month or earlier (YYYY-MM-DD, compared to period_start)
system_idNoFilter by system ID
network_idNoFilter by infrastructure network ID
building_idNoFilter by building ID
period_fromNoReadings for this month or later (YYYY-MM-DD, compared to period_start)

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb and resource (list 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
los_measure_idNoFilter by LoS measure ID

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (list) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
moduleNoOnly records in this workspace; none = shared ones only
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

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

Purpose5/5

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

States a specific verb and resource: list 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
site_idNoFilter by site ID
categoryNoFilter by category (partial match)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('List') and resource ('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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: active, inactive
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
frequencyNoFilter by frequency: DAILY, WEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUAL, ANNUAL, FIVE_YEARLY, CUSTOM

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

No output schema exists, so the description must 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
asset_idNoFilter by asset ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple read-only list tool the description covers the 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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
categoryNoFilter by budget category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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

Usage is only implied by the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
building_idNoFilter by building ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a simple read-only list tool with no 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
folder_idNoFilter by folder ID
project_idNoFilter by project ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
feature_idNoFilter by infrastructure feature ID
project_idNoFilter by project ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
location_idNoFilter by location ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

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

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by milestone status
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

There is no output schema, so the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
statusNoFilter by phase status
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
impactNoFilter by impact level
searchNoSearch by name
statusNoFilter by risk status
categoryNoFilter by risk category
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
probabilityNoFilter by probability

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by project status
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
health_statusNoFilter by health: on_track, at_risk, delayed, critical

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, and the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ("List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
system_class_idNoFilter by system class ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

No output schema exists, so the description 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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID
system_group_idNoFilter by system group ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple list tool with 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.

Parameters3/5

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

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

Purpose4/5

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

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

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_idNoFilter by system ID
project_idNoFilter by project ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('List') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
task_idNoFilter by task ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
dependency_typeNoFilter by dependency type
depends_on_task_idNoFilter by depended-on task ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by task status
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
phase_idNoFilter by phase ID
priorityNoFilter by priority
project_idNoFilter by project ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
user_idNoFilter by user ID (Clerk ID)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active status ("true" or "false")
project_idNoFilter by project ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
task_idNoFilter by task ID
user_idNoFilter by user ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
project_idNoFilter by project ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
timeframeNoFilter by timeframe
project_idNoFilter by project ID
period_yearNoFilter by year

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
part_idNoFilter by part ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
purchase_order_idNoFilter by purchase order ID

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb 'List' and resource '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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: draft, issued, partially_received, received, closed, cancelled
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
vendor_idNoFilter by vendor ID
project_idNoFilter by project ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

No output schema exists, so the description must 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.

Parameters3/5

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

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

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
is_activeNoFilter by active status (true/false)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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.

Purpose4/5

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

States a specific verb ('List') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
service_area_idNoFilter by service area ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
service_area_idNoFilter by service area ID
system_class_idNoFilter by system class ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

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

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoFilter by city name
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

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

Parameters3/5

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

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

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_class_idNoFilter by system class ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb (List) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
activeNoFilter by active (true) or paused (false)
metricNoFilter by metric
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_idNoFilter by system ID

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

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

Parameters4/5

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

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

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
system_group_idNoFilter by system group ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoFilter by city (partial match)
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by vendor status
categoryNoFilter by category (matches vendors that include this category)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
vendor_idNoFilter by vendor ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
moduleNoOnly categories in this workspace; none = shared categories only
searchNoSearch by name
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
work_order_idNoFilter by work order ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
typeNoFilter by type: CORRECTIVE, PREVENTIVE, EMERGENCY, INSPECTION
searchNoSearch by name
statusNoFilter by status: NEW, IN_PROGRESS, ON_HOLD, COMPLETED, CANCELLED
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
priorityNoFilter by priority: LOW, MEDIUM, HIGH, CRITICAL

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
date_toNoFilter: scheduled_date on or before (YYYY-MM-DD)
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
date_fromNoFilter: scheduled_date on or after (YYYY-MM-DD)
technician_idNoFilter by technician (Clerk user ID)
work_order_idNoFilter by work order ID
scheduled_dateNoFilter by exact date (YYYY-MM-DD)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: all pages fetched automatically)
searchNoSearch by name
statusNoFilter by status: SUBMITTED, APPROVED, REJECTED, CONVERTED
site_idNoFilter by site ID
per_pageNoItems per page (default: 1000, max: 1000). All pages are fetched automatically.
priorityNoFilter by priority: LOW, MEDIUM, HIGH, CRITICAL

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID
nameNoAsset name
modelNoModel name/number
site_idNoSite ID - resolve first via list_sites
asset_idNoCustom asset identifier (unique per tenant)
quantityNoQuantity
image_urlNoImage URL
status_idNoStatus identifier
system_idNoSystem ID - resolve last via list_systems filtered by system_group_id
meter_unitNoMeter unit (km, miles, hours, cycles)
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
risk_factorNoRisk factor (CRITICAL, HIGH, MEDIUM, LOW)
asset_type_idNoAsset type ID (from asset_types)
purchase_costNoPurchase cost
purchase_dateNoPurchase date (ISO 8601)
safety_impactNoSafety impact level (LOW, MEDIUM, HIGH, CRITICAL)
salvage_valueNoSalvage value
serial_numberNoSerial number
cost_per_sq_ftNoCost per square foot
service_impactNoService impact level (LOW, MEDIUM, HIGH, CRITICAL)
condition_scoreNoCondition score (0-100)
manufacturer_idNoManufacturer ID (from manufacturers)
system_class_idNoSystem class ID - resolve first via list_system_classes
system_group_idNoSystem group ID - resolve second via list_system_groups filtered by system_class_id
unit_of_measureNoUnit of measure
regulatory_impactNoRegulatory impact level (LOW, MEDIUM, HIGH, CRITICAL)
replacement_valueNoCost to replace this asset today, in current dollars. Distinct from purchase_cost, which is what was paid and is the depreciation basis.
reputation_impactNoReputation impact level (LOW, MEDIUM, HIGH, CRITICAL)
environmental_impactNoEnvironmental impact level (LOW, MEDIUM, HIGH, CRITICAL)
current_meter_readingNoCurrent meter/odometer reading
last_maintenance_dateNoLast maintenance date (ISO 8601)
unit_replacement_valueNoUnit replacement value
expected_lifetime_yearsNoExpected lifetime in years
salvage_value_percentageNoSalvage value percentage (0-100)
likelihood_of_failure_scoreNoLikelihood of failure score
consequence_of_failure_scoreNoConsequence of failure score
replacement_value_reviewed_onNoDate replacement_value was last confirmed (ISO 8601)

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBetterment ID
descriptionNoWhat was actually done
occurred_onNoDate the work went into service, YYYY-MM-DD
added_life_yearsNoExtra service life the work bought, in years
capitalized_amountNoAmount added to the asset value

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset comment ID
commentNoComment text

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssessment ID
notesNoFree-form notes
methodNoAssessment method
defectsNoStructured defect findings (JSON)
assessed_onNoAssessment date (YYYY-MM-DD, today or earlier)
assessor_idNoAssessor user ID
condition_scoreNoCondition score (0-100)
replacement_costNoCurrent replacement value / CRV

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update an existing 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset cost ID
amountNoCost amount
site_idNoSite ID
asset_idNoAsset ID
categoryNoCost category
cost_dateNoCost date (ISO 8601)
po_numberNoPurchase order number (free text)
building_idNoBuilding ID
descriptionNoDescription
work_order_idNoWork order ID
invoice_numberNoInvoice number (free text)
purchase_order_idNoPurchase 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

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset document ID
nameNoDocument name
user_idNoUploader user ID
asset_idNoAsset ID
categoryNoDocument category
file_pathNoStorage path
file_sizeNoFile size in bytes
file_typeNoMIME type
descriptionNoDescription

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID
nameNoEvent name
is_activeNoDisable/enable the event
fixed_costNoFixed cost per application (current dollars, never indexed)
sort_orderNoEvaluation order within the strategy
cost_sourceNoProvenance of the cost ("Engineering 2026", a tender reference)
event_classNoEvent type - preventative maintenance or rehabilitation
impact_methodNoEffect: add years of life, or reset condition to a value
impact_reset_toNoCondition after the event (required when impact_method is reset_condition)
work_generationNoWhat 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_yearsNoYears added (required when impact_method is add_years)
max_applicationsNoHow many times the event may fire over an asset's life (default 1)
min_years_betweenNoMinimum years between firings of a recurring event (default 1)
trigger_condition_maxNoUpper bound of the trigger window - the event fires when projected condition falls to this
trigger_condition_minNoLower bound of the trigger window (default 0); an asset already below it has missed the event
work_generation_priorityNoPriority for generated work orders. Ignored unless work_generation is work_order.
work_generation_category_idNoWork category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset-part association ID
quantityNoNew quantity

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew x coordinate
yNoNew y coordinate
idYesAsset placement ID
region_idNoNew region (set to null to clear)
floorplan_idNoMove to a different floorplan

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset replacement plan ID
notesNoNotes
statusNoStatus
asset_idNoAsset ID
priorityNoPriority
estimated_costNoEstimated replacement cost
funding_sourceNoFunding source
planned_replacement_yearNoPlanned replacement year

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset status ID
nameNoStatus name
moduleNoMove the status to a workspace: facilities, infrastructure, or shared (both).
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset type ID
nameNoAsset type name
group_idNoGroup ID
descriptionNoDescription

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset type group ID
nameNoGroup name
colorNoColor hex code (e.g., #6366f1)
descriptionNoDescription

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAttachment ID
file_urlNoFile URL / storage path
file_nameNoFile name
file_sizeNoFile size in bytes
file_typeNoMIME type
descriptionNoDescription
uploaded_byNoUploader user ID
work_order_idNoWork order ID
pm_schedule_idNoPM schedule ID
pm_template_idNoPM template ID
work_request_idNoWork request ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBudget ID
yearNoBudget year
moduleNoWorkspace; null for organization-wide
site_idNoSite ID. Not read by the Budget tab.
building_idNoBuilding ID. Not read by the Budget tab.
funding_sourceNo'O&M' or 'Capital'
budgeted_amountNoBudgeted amount
allocated_amountNoAllocated amount

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBuilding ID
nameNoBuilding name
typeNoBuilding type label
floorsNoNumber of floors
site_idNoSite ID
latitudeNoWGS 84 latitude of the building, in decimal degrees. Must be sent together with longitude.
area_sqftNoArea in square feet
longitudeNoWGS 84 longitude of the building, in decimal degrees. Must be sent together with latitude.
year_builtNoYear the building was constructed
building_type_idNoBuilding type ID (from building_types)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with no 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBuilding type ID
nameNoBuilding type name
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesChange order ID
notesNoNotes
amountNoAmount (negative for credits)
reasonNoReason
statusNoStatus
co_numberNoChange order number
vendor_idNoVendor ID
project_idNoProject ID
approved_atNoApproval date (ISO 8601)
approved_byNoApproved by (user ID)
category_idNoCost category ID
descriptionNoDescription

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance item ID
nameNoCompliance item name
statusNoStatus
system_idNoAssociated system ID
descriptionNoDescription
regulation_referenceNoRegulation or code reference
compliance_period_monthsNoCompliance period in months

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLink ID - resolve via list_compliance_pm_schedules
weightNoRelative weight
required_frequency_daysNoRequired frequency in days

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompliance record ID
completed_atNoCompletion date-time (ISO 8601)
completed_byNoUser ID who completed
required_frequency_daysNoRequired frequency in days
days_since_last_completionNoDays since last completion

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContract ID
titleNoContract title
categoryNoContract category
end_dateNoEnd date (ISO 8601)
company_idNoVendor ID
extendableNoWhether contract is extendable
start_dateNoStart date (ISO 8601)
annual_costNoAnnual cost
descriptionNoDescription
quality_scoreNoQuality score (1-10)
purchase_orderNoPurchase order reference

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContract document ID
file_nameNoFile name
file_pathNoStorage path
file_sizeNoFile size in bytes
file_typeNoMIME type
contract_idNoContract ID
uploaded_byNoUploader user ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCost category ID
nameNoCost category name
is_activeNoWhether the category is active
parent_idNoParent cost category ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCriticality modifier ID
modifierNoMultiplier from 0.1 to 1.9; below 1 tightens, above 1 relaxes
criticalityNoCriticality tier

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field definition ID
field_nameNoField name / key
field_typeNoField data type
entity_typeNoEntity type
field_labelNoDisplay label
is_requiredNoWhether the field is required
display_orderNoDisplay order
field_optionsNoOptions for select-type fields

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom field value ID
valueNoLegacy single-value shim - server dispatches based on field_type
entity_idNoEntity ID
value_dateNoDate value, ISO YYYY-MM-DD
value_textNoText value
value_numberNoNumeric value
value_booleanNoBoolean value
field_definition_idNoCustom field definition ID - required when using the `value` fallback if you want to avoid the server fetching it

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation with no 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExpense ID
notesNoNotes
amountNoExpense amount
project_idNoProject ID
category_idNoCost category ID
descriptionNoExpense description
receipt_urlNoReceipt URL
expense_dateNoExpense date (ISO 8601)
work_order_idNoWork order ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan ID
statusNoDetection status
floor_labelNoNew floor label
floor_orderNoNew sort order
detection_errorNoError message if status=failed

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFloorplan region ID
labelNoNew label
polygonNoPolygon outline as an array of [x, y] points in normalized 0-1 coordinates (origin top-left). At least 3 points.
reviewedNoMark region as reviewed by admin
confidenceNo
location_idNoLinked Location ID (set to null to unlink)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template ID
nameNoForm template name
moduleNoMove the form to a workspace: facilities, infrastructure, or shared (both).
statusNoPublication status (draft, published, or archived)
descriptionNoDescription
work_category_idNoWork category ID (look up with list_work_categories)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesForm template item ID
labelNoQuestion label / prompt
configNoPer-type configuration (e.g. { min, max, unit, multiline })
optionsNoChoices for single_select / multi_select items
requiredNoWhether an answer is required
help_textNoHelp text shown under the label
item_typeNoItem type (section, checkbox, single_select, multi_select, number, text, photo)
sort_orderNoDisplay order within the template
visible_whenNoConditional-visibility rule referencing another item

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure asset ID
nameNo
lanesNo
modelNo
depth_mNo
qr_codeNo
site_idNo
width_mNo
geometryNoReplacement GeoJSON geometry
materialNo
quantityNo
image_urlNo
status_idNo
system_idNo
to_streetNo
road_classNoO. Reg. 239/02 road class 1-6 (1-2 arterial, 3-4 collector, 5-6 local)
building_idNo
data_sourceNo
descriptionNo
diameter_mmNo
from_streetNo
location_idNo
risk_factorNo
to_invert_mNo
external_idsNo
feature_codeNo
install_dateNo
asset_type_idNo
from_invert_mNo
purchase_costNo
purchase_dateNo
safety_impactNo
salvage_valueNo
serial_numberNo
to_feature_idNo
flow_directionNo
service_impactNo
condition_scoreNo
from_feature_idNo
manufacturer_idNo
system_class_idNo
system_group_idNo
unit_of_measureNo
financial_impactNo
regulatory_impactNo
reputation_impactNo
environmental_impactNo
last_maintenance_dateNo
unit_replacement_valueNo
expected_lifetime_yearsNo
salvage_value_percentageNo
positional_accuracy_classNo
likelihood_of_failure_scoreNo
consequence_of_failure_scoreNo
purchase_cost_calculation_methodNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID
commentNoComment text

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCost ID
amountNoCost amount
categoryNoCost category
cost_dateNoCost date (YYYY-MM-DD)
po_numberNoPO number
work_order_idNoLinked work order ID
invoice_numberNoInvoice number
purchase_order_idNoPurchase 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

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID
nameNoDocument name
categoryNoDocument category
file_pathNoStorage path
file_sizeNoFile size in bytes
file_typeNoMIME type
descriptionNoDescription

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInspection ID
notesNoNotes
methodNoInspection method
defectsNoDefect observations
attachmentsNoAttachment URLs/paths
inspector_idNoInspector user ID
condition_scoreNoCondition score
inspection_dateNoInspection date (YYYY-MM-DD)

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAssociation ID
part_idNoPart ID
quantityNoDesign/installed quantity
feature_idNoInfrastructure feature ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAsset class code (lowercase snake_case, 1-50 chars)
iconNoIcon name
labelNoDisplay name
color_hexNoDisplay colour as hex, e.g. #3B82F6
sort_orderNoSort order

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLifecycle event ID
nameNoEvent name
is_activeNoDisable/enable the event
unit_costNoCost per unit (current dollars, never indexed)
fixed_costNoFixed cost (current dollars)
sort_orderNoEvaluation order within the strategy
cost_methodNoCosting: per unit (uses the feature's measured quantity and unit) or a fixed amount (default per_unit)
cost_sourceNoProvenance of the cost ("Engineering 2026", a tender reference)
event_classNoEvent type - preventative maintenance or rehabilitation
impact_methodNoEffect: add years of life, or reset condition to a value
impact_reset_toNoCondition after the event (required when impact_method is reset_condition)
work_generationNoWhat 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_yearsNoYears added (required when impact_method is add_years)
max_applicationsNoHow many times the event may fire over a feature's life (default 1)
min_years_betweenNoMinimum years between firings of a recurring event (default 1)
trigger_condition_maxNoUpper bound of the trigger window - the event fires when projected condition falls to this
trigger_condition_minNoLower bound of the trigger window (default 0); a feature already below it has missed the event
work_generation_priorityNoPriority for generated work orders. Ignored unless work_generation is work_order.
work_generation_category_idNoWork category for generated work orders - resolve with list_work_categories. Ignored unless work_generation is work_order.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure LoS target ID
activeNoWhether the target is scored
metricNoMetric the target tracks
base_targetNoBase target, 0-100
feature_classNoFeature class code - resolve first via list_infrastructure_feature_classes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInfrastructure network ID
nameNoNetwork name
metadataNoFree-form JSON metadata
criticalityNoHow 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
descriptionNoDescription
color_schemeNoDisplay color scheme
feature_classNoAsset class code

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesZone ID
codeNoOptional short code
kindNoZone kind
nameNoZone name
notesNoFree-form notes
boundaryNoGeoJSON 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_idNoInfrastructure network ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesInvoice ID
notesNoNotes
amountNoInvoice amount
statusNoInvoice status
due_dateNoDue date (ISO 8601)
paid_dateNoPaid date (ISO 8601)
vendor_idNoVendor ID
project_idNoProject ID
tax_amountNoTax amount
category_idNoCost category ID
descriptionNoDescription
invoice_dateNoInvoice date (ISO 8601)
work_order_idNoWork order ID
invoice_numberNoInvoice number
purchase_order_idNoPurchase order ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLocation ID
areaNoArea (sq ft or sq m)
nameNoLocation name
typeNoLocation type label
floorNoFloor identifier
building_idNoBuilding ID
location_type_idNoLocation type ID (from location_types)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLocation type ID
nameNoLocation type name
descriptionNoDescription

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Update an existing 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS consequence ID
activeNoWhether the consequence is shown
metricNoLimit to one metric; null matches any metric
severityNoMinimum severity shown
scope_refNoWhat 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
statementNoThe consequence, as a statement
scope_typeNoWhat the consequence applies to
notify_rolesNoRoles named as owning the consequence. Recorded only; nothing is sent

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measure ID
nameNoMeasure name
typeNoMeasure type
unitNoUnit of measurement
weightNoWeight for composite score calculation
categoryNoMeasure category
is_activeNoActive status
sort_orderNoSort order
data_sourceNoData source type
descriptionNoDescription
stretch_goalNoStretch goal value
target_valueNoTarget value
trend_directionNoWhich direction is better
data_source_configNoData source configuration (JSONB)
minimum_acceptableNoMinimum acceptable value
community_statementNoCommunity-facing statement

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS measurement ID
notesNoNotes or context
is_autoNoWhether this is auto-calculated
period_endNoPeriod end date (ISO 8601)
period_typeNoPeriod type
actual_valueNoMeasured value
period_startNoPeriod start date (ISO 8601)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLoS proposed target ID
yearNoTarget year, 2000-2200
target_valueNoProposed value for a technical measure, in the measure's own unit
target_statementNoProposed level of service for a community measure, as a statement

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesManufacturer ID
nameNoManufacturer name
notesNoNotes
websiteNoWebsite URL
contact_nameNoPrimary contact name
contact_emailNoContact email address
contact_phoneNoContact phone number

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart ID
costNoUnit cost
nameNoPart name
site_idNoSite ID
categoryNoCategory label
quantityNoCurrent stock quantity
supplierNoDEPRECATED - legacy free-text supplier name. Use supplier_id instead.
building_idNoBuilding ID
location_idNoLocation ID
part_numberNoPart number / SKU
supplier_idNoVendor ID (resolve via list_vendors)
desired_quantityNoTarget / reorder quantity
specific_locationNoStorage location description

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPart category ID
nameNoPart category name
moduleNoMove the category to a workspace: facilities, infrastructure, or shared (both).
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPM schedule ID
tasksNoChecklist of tasks for this PM schedule
titleNoPM schedule title
statusNoSchedule status
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset ID
floatingNoFloating schedule (due date based on completion)
next_dueNoNext due date (ISO 8601)
asset_idsNoAssets this schedule covers - use instead of asset_id when there is more than one.
frequencyNoFrequency
meter_unitNoMeter unit (km, miles, hours, cycles)
start_dateNoStart date (ISO 8601)
system_idsNoSystems this schedule covers. Systems have no singular field; this array is the only way to associate them.
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
meter_basedNoWhether this PM triggers at meter intervals
location_idsNoLocations 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_typeNoSchedule type
work_categoryNoWork category label
estimated_costNoEstimated cost
lead_time_daysNoLead time in days
meter_intervalNoMeter interval - trigger every N units
estimated_hoursNoEstimated hours
auto_generate_woNoAuto-generate work orders
form_template_idNoForm 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_daysNoGrace period in days
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)
infrastructure_asset_idsNoInfrastructure 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

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPM template ID
tasksNoChecklist of tasks baked into this template
titleNoPM template title
asset_idsNoDefault asset IDs
documentsNoDocument references
frequencyNoSuggested maintenance frequency
resourcesNoResource references (parts, tools, materials, equipment)
descriptionNoDescription
location_idsNoDefault location IDs
work_categoryNoWork category label (free text)
estimated_costNoEstimated cost
estimated_hoursNoEstimated hours
form_template_idNoForm 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_idNoWork category ID
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject ID
nameNoProject name
budgetNoTotal budget
statusNoProject status
end_dateNoEnd date (ISO 8601)
image_urlNoImage URL
start_dateNoStart date (ISO 8601)
descriptionNoDescription
project_codeNoProject code
project_typeNoProject type
budget_statusNoBudget status
current_phaseNoCurrent phase
health_statusNoHealth status
progress_statusNoProgress status
project_managerNoProject manager name
progress_percentageNoProgress percentage (0-100)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject budget item ID
categoryNoBudget category
project_idNoProject ID
descriptionNoDescription
actual_amountNoActual amount
planned_amountNoPlanned amount

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject comment ID
contentNoComment content
parent_idNoParent comment ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('Update an existing 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject document ID
nameNoDocument name
file_pathNoStorage path
file_sizeNoFile size in bytes
file_typeNoMIME type
folder_idNoFolder ID
project_idNoProject ID
descriptionNoDescription
uploaded_byNoUploader user ID

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a project 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID
nameNoTemplate name
structureNoFolder hierarchy as JSON array
is_defaultNoWhether this is the default template
descriptionNoTemplate description

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a project 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLink ID
notesNoFree-form notes
feature_idNoInfrastructure feature ID
project_idNoProject ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject milestone ID
nameNoMilestone name
statusNoMilestone status
due_dateNoDue date (ISO 8601)
project_idNoProject ID
descriptionNoDescription
completed_dateNoCompleted date (ISO 8601)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by the 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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject phase ID
nameNoPhase name
statusNoPhase status
end_dateNoEnd date (ISO 8601)
project_idNoProject ID
start_dateNoStart date (ISO 8601)
descriptionNoDescription
sequence_orderNoOrder within the project

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject phase category ID
nameNoPhase name
sort_orderNoDisplay order (lower = first)
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject risk ID
titleNoRisk title
impactNoImpact level
statusNoRisk status
categoryNoRisk category
due_dateNoDue date (ISO 8601)
owner_idNoRisk owner (Clerk user ID)
project_idNoProject ID
descriptionNoRisk description
probabilityNoProbability level
mitigation_planNoMitigation plan
contingency_planNoContingency plan

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Update) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject task ID
titleNoTask title
statusNoTask status
due_dateNoDue date (ISO 8601)
phase_idNoPhase ID
priorityNoPriority
project_idNoProject ID
start_dateNoStart date (ISO 8601)
assigned_toNoAssigned user
descriptionNoDescription
estimated_costNoEstimated cost
estimated_hoursNoEstimated hours

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject team member ID
roleNoRole on the project
user_idNoClerk user ID
end_dateNoEnd date (ISO 8601)
is_activeNoWhether member is currently active
project_idNoProject ID
start_dateNoStart date (ISO 8601)
responsibilitiesNoDescription of responsibilities

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject time entry ID
task_idNoTask ID
user_idNoUser ID
end_timeNoEnd time (ISO 8601 datetime)
user_nameNoDisplay name of the user
project_idNoProject ID
start_timeNoStart time (ISO 8601 datetime)
descriptionNoDescription
is_billableNoWhether the time is billable
duration_minutesNoDuration worked, in minutes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject update ID
titleNoOptional custom title
contentNoUpdate content
author_idNoAuthor Clerk user ID
timeframeNoUpdate timeframe
project_idNoProject ID
period_yearNoYear for this update period
period_valueNoPeriod value

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order ID
notesNoNotes
amountNoPO amount
statusNoPO status
po_numberNoPO number
vendor_idNoVendor ID
project_idNoProject ID
category_idNoCost category ID
descriptionNoDescription
issued_dateNoIssued date (ISO 8601)
expected_dateNoExpected delivery date (ISO 8601)
work_order_idNoWork order ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase order line ID
part_idNoPart from inventory
quantityNoQuantity ordered
unit_costNoPrice per unit, in the organization currency
descriptionNoWhat is being ordered
line_numberNoPosition on the order
quantity_receivedNoQuantity received so far, 0 to quantity

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesService area ID
iconNoIcon name
nameNoService area name
colorNoHex color code
is_activeNoActive status
sort_orderNoSort order
descriptionNoDescription

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite ID
cityNoCity
nameNoSite name
addressNoStreet address
countryNoCountry
provinceNoProvince/state
year_builtNoYear built
descriptionNoDescription
postal_codeNoPostal/zip code
contact_nameNoPrimary contact name
contact_emailNoContact email
contact_phoneNoContact phone
cost_per_sqftNoBase cost per square foot
lease_detailsNoFree-text lease details / notes
lease_end_dateNoLease end date (YYYY-MM-DD)
owner_landlordNoProperty owner or landlord
ownership_typeNoOwnership type
renewal_optionNoLease renewal option details
square_footageNoSquare footage
lease_start_dateNoLease start date (YYYY-MM-DD)
insurance_providerNoInsurance provider name
insurance_policy_numberNoInsurance policy number
additional_cost_per_sqftNoAdditional cost per square foot
property_manager_companyNoProperty management company name
operational_cost_per_sqftNoOperational cost per square foot
property_manager_contact_nameNoProperty management contact name
property_manager_contact_emailNoProperty management contact email
property_manager_contact_phoneNoProperty management contact phone

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem ID
nameNoSystem name
descriptionNoDescription
crv_multiplierNoCRV multiplier
system_group_idNoSystem group ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem class ID
nameNoSystem class name
descriptionNoDescription

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem group ID
nameNoSystem group name
descriptionNoDescription
system_class_idNoParent system class ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSystem LoS target ID
activeNoWhether the target is scored
metricNoMetric the target tracks
system_idNoSystem ID - resolve first via list_systems
base_targetNoBase 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

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVendor ID
cityNoCity
nameNoVendor name
stateNoState/province
statusNoVendor status
addressNoStreet address
countryNoCountry
websiteNoWebsite URL (protocol and www prefix are stripped automatically)
categoriesNoVendor categories (e.g. ["HVAC", "Plumbing"])
descriptionNoDescription
contact_nameNoContact person name
contact_emailNoContact email
contact_phoneNoContact phone

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork category ID
nameNoWork category name
moduleNoMove the category to a workspace: facilities, infrastructure, or shared (both).
descriptionNoDescription

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order ID
typeNoWork order type
titleNoWork order title
statusNoStatus
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset this work order is for - resolve via list_assets. The server mirrors it into asset_ids.
due_dateNoDue date (ISO 8601)
priorityNoPriority level
asset_idsNoAssets this work order covers - use instead of asset_id when there is more than one.
assigneesNoArray of assigned user IDs (alternative to assigned_to for multiple assignees)
image_urlNoImage storage path (upload via create_upload_url with bucket "attachments", then set this to the returned path)
meter_unitNoMeter unit (km, miles, hours, cycles)
start_dateNoStart date (ISO 8601)
system_idsNoSystems this work order covers - resolve via list_systems. Systems have no singular field; this array is the only way to associate them.
assigned_toNoAssigned user ID (mapped to assignees array)
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDetailed description
location_idNoLocation 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_idsNoLocations 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_readingNoMeter/odometer reading at time of service
estimated_costNoEstimated cost
estimated_timeNoEstimated time in hours
completion_notesNoWhat was done, recorded on the work order when it is completed
work_category_idNoWork category ID
purchase_order_idNoPurchase 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_idsNoInfrastructure 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

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order comment ID
commentNoComment text

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork order schedule ID
stop_orderNo1-based stop position in the day plan
technician_idNoTechnician Clerk user ID
scheduled_dateNoDate (YYYY-MM-DD)
duration_minutesNoPlanned duration in minutes
scheduling_notesNoScheduling notes
scheduled_end_timeNoEnd time (HH:MM)
travel_time_minutesNoTravel time from previous stop
scheduled_start_timeNoStart time (HH:MM)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWork request ID
titleNoWork request title
statusNoStatus
site_idNoSite ID - resolve first via list_sites
asset_idNoAsset ID
priorityNoPriority level
system_idNoSystem ID
building_idNoBuilding ID - resolve second via list_buildings filtered by site_id
descriptionNoDescription
location_idNoLocation ID - resolve last via list_locations filtered by building_id
work_category_idNoWork category ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesStorage bucket (required). Use "asset-images" for asset photos, "attachments" for work-order/PM attachments.
file_nameYesFile name including extension (required)
content_typeNoMIME type (e.g. image/jpeg, application/pdf). Defaults to application/octet-stream.
content_base64YesFile contents base64-encoded (required). Data URI prefixes like "data:image/png;base64," are stripped automatically.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds real 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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 480 tool updates
    • First observedbulk_create
    • First observedbulk_update
    • First observedcreate_asset
    • First observedcreate_asset_betterment
    • First observedcreate_asset_comment
    • First observedcreate_asset_condition_assessment
    • First observedcreate_asset_cost
    • First observedcreate_asset_document
    • First observedcreate_asset_lifecycle_event
    • First observedcreate_asset_part
    • First observedcreate_asset_placement
    • First observedcreate_asset_replacement_plan
    • First observedcreate_asset_status
    • First observedcreate_asset_type
    • First observedcreate_asset_type_group
    • First observedcreate_attachment
    • First observedcreate_budget
    • First observedcreate_building
    • First observedcreate_building_type
    • First observedcreate_change_order
    • First observedcreate_compliance_item
    • First observedcreate_compliance_pm_schedule
    • First observedcreate_compliance_record
    • First observedcreate_contract
    • First observedcreate_contract_document
    • First observedcreate_contract_site
    • First observedcreate_cost_category
    • First observedcreate_criticality_modifier
    • First observedcreate_custom_field_definition
    • First observedcreate_custom_field_value
    • First observedcreate_expense
    • First observedcreate_floorplan
    • First observedcreate_floorplan_region
    • First observedcreate_form_response
    • First observedcreate_form_template
    • First observedcreate_form_template_item
    • First observedcreate_infrastructure_asset
    • First observedcreate_infrastructure_asset_comment
    • First observedcreate_infrastructure_asset_cost
    • First observedcreate_infrastructure_asset_document
    • First observedcreate_infrastructure_asset_inspection
    • First observedcreate_infrastructure_asset_part
    • First observedcreate_infrastructure_feature_class
    • First observedcreate_infrastructure_lifecycle_event
    • First observedcreate_infrastructure_los_target
    • First observedcreate_infrastructure_network
    • First observedcreate_infrastructure_zone
    • First observedcreate_invoice
    • First observedcreate_location
    • First observedcreate_location_type
    • First observedcreate_los_consequence
    • First observedcreate_los_measure
    • First observedcreate_los_measurement
    • First observedcreate_los_proposed_target
    • First observedcreate_manufacturer
    • First observedcreate_part
    • First observedcreate_part_category
    • First observedcreate_pm_schedule
    • First observedcreate_pm_template
    • First observedcreate_project
    • First observedcreate_project_asset
    • First observedcreate_project_budget_item
    • First observedcreate_project_building
    • First observedcreate_project_comment
    • First observedcreate_project_cost_snapshot
    • First observedcreate_project_document
    • First observedcreate_project_document_folder_template
    • First observedcreate_project_infrastructure_asset
    • First observedcreate_project_location
    • First observedcreate_project_milestone
    • First observedcreate_project_phase
    • First observedcreate_project_phase_category
    • First observedcreate_project_risk
    • First observedcreate_project_site
    • First observedcreate_project_system
    • First observedcreate_project_system_class
    • First observedcreate_project_system_group
    • First observedcreate_project_task
    • First observedcreate_project_task_dependency
    • First observedcreate_project_team_member
    • First observedcreate_project_time_entry
    • First observedcreate_project_update
    • First observedcreate_purchase_order
    • First observedcreate_purchase_order_line
    • First observedcreate_purchase_order_link
    • First observedcreate_service_area
    • First observedcreate_service_area_site
    • First observedcreate_service_area_system_class
    • First observedcreate_site
    • First observedcreate_system
    • First observedcreate_system_class
    • First observedcreate_system_group
    • First observedcreate_system_los_target
    • First observedcreate_upload_url
    • First observedcreate_vendor
    • First observedcreate_vendor_site_assignment
    • First observedcreate_work_category
    • First observedcreate_work_order
    • First observedcreate_work_order_comment
    • First observedcreate_work_order_schedule
    • First observedcreate_work_request
    • First observeddelete_asset
    • First observeddelete_asset_betterment
    • First observeddelete_asset_comment
    • First observeddelete_asset_condition_assessment
    • First observeddelete_asset_cost
    • First observeddelete_asset_document
    • First observeddelete_asset_lifecycle_event
    • First observeddelete_asset_part
    • First observeddelete_asset_placement
    • First observeddelete_asset_replacement_plan
    • First observeddelete_asset_status
    • First observeddelete_asset_type
    • First observeddelete_asset_type_group
    • First observeddelete_attachment
    • First observeddelete_budget
    • First observeddelete_building
    • First observeddelete_building_type
    • First observeddelete_change_order
    • First observeddelete_compliance_item
    • First observeddelete_compliance_pm_schedule
    • First observeddelete_compliance_record
    • First observeddelete_contract
    • First observeddelete_contract_document
    • First observeddelete_contract_site
    • First observeddelete_cost_category
    • First observeddelete_criticality_modifier
    • First observeddelete_custom_field_definition
    • First observeddelete_custom_field_value
    • First observeddelete_expense
    • First observeddelete_floorplan
    • First observeddelete_floorplan_region
    • First observeddelete_form_response
    • First observeddelete_form_template
    • First observeddelete_form_template_item
    • First observeddelete_infrastructure_asset
    • First observeddelete_infrastructure_asset_comment
    • First observeddelete_infrastructure_asset_cost
    • First observeddelete_infrastructure_asset_document
    • First observeddelete_infrastructure_asset_inspection
    • First observeddelete_infrastructure_asset_part
    • First observeddelete_infrastructure_feature_class
    • First observeddelete_infrastructure_lifecycle_event
    • First observeddelete_infrastructure_los_target
    • First observeddelete_infrastructure_network
    • First observeddelete_infrastructure_zone
    • First observeddelete_invoice
    • First observeddelete_location
    • First observeddelete_location_type
    • First observeddelete_los_consequence
    • First observeddelete_los_measure
    • First observeddelete_los_measurement
    • First observeddelete_los_proposed_target
    • First observeddelete_manufacturer
    • First observeddelete_part
    • First observeddelete_part_category
    • First observeddelete_pm_schedule
    • First observeddelete_pm_template
    • First observeddelete_project
    • First observeddelete_project_asset
    • First observeddelete_project_budget_item
    • First observeddelete_project_building
    • First observeddelete_project_comment
    • First observeddelete_project_cost_snapshot
    • First observeddelete_project_document
    • First observeddelete_project_document_folder_template
    • First observeddelete_project_infrastructure_asset
    • First observeddelete_project_location
    • First observeddelete_project_milestone
    • First observeddelete_project_phase
    • First observeddelete_project_phase_category
    • First observeddelete_project_risk
    • First observeddelete_project_site
    • First observeddelete_project_system
    • First observeddelete_project_system_class
    • First observeddelete_project_system_group
    • First observeddelete_project_task
    • First observeddelete_project_task_dependency
    • First observeddelete_project_team_member
    • First observeddelete_project_time_entry
    • First observeddelete_project_update
    • First observeddelete_purchase_order
    • First observeddelete_purchase_order_line
    • First observeddelete_purchase_order_link
    • First observeddelete_service_area
    • First observeddelete_service_area_site
    • First observeddelete_service_area_system_class
    • First observeddelete_site
    • First observeddelete_system
    • First observeddelete_system_class
    • First observeddelete_system_group
    • First observeddelete_system_los_target
    • First observeddelete_vendor
    • First observeddelete_vendor_site_assignment
    • First observeddelete_work_category
    • First observeddelete_work_order
    • First observeddelete_work_order_comment
    • First observeddelete_work_order_schedule
    • First observeddelete_work_request
    • First observedget_asset
    • First observedget_asset_betterment
    • First observedget_asset_comment
    • First observedget_asset_condition_assessment
    • First observedget_asset_cost
    • First observedget_asset_document
    • First observedget_asset_lifecycle_event
    • First observedget_asset_part
    • First observedget_asset_placement
    • First observedget_asset_replacement_plan
    • First observedget_asset_risk_history_entry
    • First observedget_asset_status
    • First observedget_attachment
    • First observedget_budget
    • First observedget_change_order
    • First observedget_compliance_item
    • First observedget_compliance_pm_schedule
    • First observedget_compliance_record
    • First observedget_contract_document
    • First observedget_criticality_modifier
    • First observedget_custom_field_definition
    • First observedget_custom_field_value
    • First observedget_dashboard_snapshot
    • First observedget_dashboard_summary
    • First observedget_expense
    • First observedget_floorplan
    • First observedget_floorplan_region
    • First observedget_form_response
    • First observedget_form_response_answer
    • First observedget_form_template
    • First observedget_form_template_item
    • First observedget_infrastructure_asset
    • First observedget_infrastructure_asset_comment
    • First observedget_infrastructure_asset_cost
    • First observedget_infrastructure_asset_document
    • First observedget_infrastructure_asset_inspection
    • First observedget_infrastructure_asset_part
    • First observedget_infrastructure_asset_risk_history_entry
    • First observedget_infrastructure_feature_class
    • First observedget_infrastructure_lifecycle_event
    • First observedget_infrastructure_los_target
    • First observedget_infrastructure_network
    • First observedget_infrastructure_zone
    • First observedget_invoice
    • First observedget_los_consequence
    • First observedget_los_measure
    • First observedget_los_measurement
    • First observedget_los_proposed_target
    • First observedget_los_status_snapshot
    • First observedget_los_targets_history_entry
    • First observedget_manufacturer
    • First observedget_organization_settings
    • First observedget_part
    • First observedget_part_category
    • First observedget_pm_schedule
    • First observedget_project
    • First observedget_project_asset
    • First observedget_project_budget_item
    • First observedget_project_building
    • First observedget_project_comment
    • First observedget_project_cost_snapshot
    • First observedget_project_document
    • First observedget_project_document_folder_template
    • First observedget_project_infrastructure_asset
    • First observedget_project_location
    • First observedget_project_milestone
    • First observedget_project_phase
    • First observedget_project_risk
    • First observedget_project_site
    • First observedget_project_system
    • First observedget_project_system_class
    • First observedget_project_system_group
    • First observedget_project_task
    • First observedget_project_task_dependency
    • First observedget_project_team_member
    • First observedget_project_time_entry
    • First observedget_project_update
    • First observedget_purchase_order
    • First observedget_purchase_order_line
    • First observedget_purchase_order_link
    • First observedget_service_area
    • First observedget_site
    • First observedget_site_fci_history_entry
    • First observedget_system_los_target
    • First observedget_user
    • First observedget_vendor
    • First observedget_vendor_site_assignment
    • First observedget_work_order
    • First observedget_work_order_comment
    • First observedget_work_order_schedule
    • First observedget_work_request
    • First observedlist_asset_betterments
    • First observedlist_asset_comments
    • First observedlist_asset_condition_assessments
    • First observedlist_asset_costs
    • First observedlist_asset_documents
    • First observedlist_asset_lifecycle_events
    • First observedlist_asset_parts
    • First observedlist_asset_placements
    • First observedlist_asset_replacement_plans
    • First observedlist_asset_risk_history
    • First observedlist_asset_statuses
    • First observedlist_asset_type_groups
    • First observedlist_asset_types
    • First observedlist_assets
    • First observedlist_attachments
    • First observedlist_budgets
    • First observedlist_building_types
    • First observedlist_buildings
    • First observedlist_change_orders
    • First observedlist_compliance_items
    • First observedlist_compliance_pm_schedules
    • First observedlist_compliance_records
    • First observedlist_contract_documents
    • First observedlist_contract_sites
    • First observedlist_contracts
    • First observedlist_cost_categories
    • First observedlist_criticality_modifiers
    • First observedlist_custom_field_definitions
    • First observedlist_custom_field_values
    • First observedlist_dashboard_snapshots
    • First observedlist_expenses
    • First observedlist_floorplan_regions
    • First observedlist_floorplans
    • First observedlist_form_response_answers
    • First observedlist_form_responses
    • First observedlist_form_template_items
    • First observedlist_form_templates
    • First observedlist_infrastructure_asset_comments
    • First observedlist_infrastructure_asset_costs
    • First observedlist_infrastructure_asset_documents
    • First observedlist_infrastructure_asset_inspections
    • First observedlist_infrastructure_asset_parts
    • First observedlist_infrastructure_asset_risk_history
    • First observedlist_infrastructure_assets
    • First observedlist_infrastructure_feature_classes
    • First observedlist_infrastructure_lifecycle_events
    • First observedlist_infrastructure_los_targets
    • First observedlist_infrastructure_networks
    • First observedlist_infrastructure_zones
    • First observedlist_invoices
    • First observedlist_location_types
    • First observedlist_locations
    • First observedlist_los_consequences
    • First observedlist_los_measurements
    • First observedlist_los_measures
    • First observedlist_los_proposed_targets
    • First observedlist_los_status_snapshots
    • First observedlist_los_targets_history
    • First observedlist_manufacturers
    • First observedlist_part_categories
    • First observedlist_parts
    • First observedlist_pm_schedules
    • First observedlist_pm_templates
    • First observedlist_project_assets
    • First observedlist_project_budget_items
    • First observedlist_project_buildings
    • First observedlist_project_comments
    • First observedlist_project_cost_snapshots
    • First observedlist_project_document_folder_templates
    • First observedlist_project_documents
    • First observedlist_project_infrastructure_assets
    • First observedlist_project_locations
    • First observedlist_project_milestones
    • First observedlist_project_phase_categories
    • First observedlist_project_phases
    • First observedlist_project_risks
    • First observedlist_project_sites
    • First observedlist_project_system_classes
    • First observedlist_project_system_groups
    • First observedlist_project_systems
    • First observedlist_project_task_dependencies
    • First observedlist_project_tasks
    • First observedlist_project_team_members
    • First observedlist_project_time_entries
    • First observedlist_project_updates
    • First observedlist_projects
    • First observedlist_purchase_order_lines
    • First observedlist_purchase_order_links
    • First observedlist_purchase_orders
    • First observedlist_service_area_sites
    • First observedlist_service_area_system_classes
    • First observedlist_service_areas
    • First observedlist_site_fci_history
    • First observedlist_sites
    • First observedlist_system_classes
    • First observedlist_system_groups
    • First observedlist_system_los_targets
    • First observedlist_systems
    • First observedlist_users
    • First observedlist_vendor_site_assignments
    • First observedlist_vendors
    • First observedlist_work_categories
    • First observedlist_work_order_comments
    • First observedlist_work_order_schedules
    • First observedlist_work_orders
    • First observedlist_work_requests
    • First observedupdate_asset
    • First observedupdate_asset_betterment
    • First observedupdate_asset_comment
    • First observedupdate_asset_condition_assessment
    • First observedupdate_asset_cost
    • First observedupdate_asset_document
    • First observedupdate_asset_lifecycle_event
    • First observedupdate_asset_part
    • First observedupdate_asset_placement
    • First observedupdate_asset_replacement_plan
    • First observedupdate_asset_status
    • First observedupdate_asset_type
    • First observedupdate_asset_type_group
    • First observedupdate_attachment
    • First observedupdate_budget
    • First observedupdate_building
    • First observedupdate_building_type
    • First observedupdate_change_order
    • First observedupdate_compliance_item
    • First observedupdate_compliance_pm_schedule
    • First observedupdate_compliance_record
    • First observedupdate_contract
    • First observedupdate_contract_document
    • First observedupdate_cost_category
    • First observedupdate_criticality_modifier
    • First observedupdate_custom_field_definition
    • First observedupdate_custom_field_value
    • First observedupdate_expense
    • First observedupdate_floorplan
    • First observedupdate_floorplan_region
    • First observedupdate_form_template
    • First observedupdate_form_template_item
    • First observedupdate_infrastructure_asset
    • First observedupdate_infrastructure_asset_comment
    • First observedupdate_infrastructure_asset_cost
    • First observedupdate_infrastructure_asset_document
    • First observedupdate_infrastructure_asset_inspection
    • First observedupdate_infrastructure_asset_part
    • First observedupdate_infrastructure_feature_class
    • First observedupdate_infrastructure_lifecycle_event
    • First observedupdate_infrastructure_los_target
    • First observedupdate_infrastructure_network
    • First observedupdate_infrastructure_zone
    • First observedupdate_invoice
    • First observedupdate_location
    • First observedupdate_location_type
    • First observedupdate_los_consequence
    • First observedupdate_los_measure
    • First observedupdate_los_measurement
    • First observedupdate_los_proposed_target
    • First observedupdate_manufacturer
    • First observedupdate_part
    • First observedupdate_part_category
    • First observedupdate_pm_schedule
    • First observedupdate_pm_template
    • First observedupdate_project
    • First observedupdate_project_budget_item
    • First observedupdate_project_comment
    • First observedupdate_project_document
    • First observedupdate_project_document_folder_template
    • First observedupdate_project_infrastructure_asset
    • First observedupdate_project_milestone
    • First observedupdate_project_phase
    • First observedupdate_project_phase_category
    • First observedupdate_project_risk
    • First observedupdate_project_task
    • First observedupdate_project_team_member
    • First observedupdate_project_time_entry
    • First observedupdate_project_update
    • First observedupdate_purchase_order
    • First observedupdate_purchase_order_line
    • First observedupdate_service_area
    • First observedupdate_site
    • First observedupdate_system
    • First observedupdate_system_class
    • First observedupdate_system_group
    • First observedupdate_system_los_target
    • First observedupdate_vendor
    • First observedupdate_work_category
    • First observedupdate_work_order
    • First observedupdate_work_order_comment
    • First observedupdate_work_order_schedule
    • First observedupdate_work_request
    • First observedupload_file

Publisher details

Operator
AssetLab CMMS Software Inc. · Publisher source
Operator website
https://assetlab.ca
Vendor relationship
First-party
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

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    66 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.
    53
    223 npm
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Integrates 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.
    12
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources