Veqen: AI cost monitoring and protection
Server Details
Veqen brings together work and coding agent costs per person and team, product inference costs per customer, agent spending, protection incidents, invoice checks, chargeback and the month-end close.
Ask your assistant to investigate recorded spending, compare model prices, review provider keys and incidents, record bills and credits, or manage budgets, alerts, teams and spending policies. Your account role and plan govern access. Provider-key shut-off and agent-card controls require the appropriate role and provider permissions. Destructive actions require confirmation, and organizations can require a second person to approve a shut-off. SDK budget blocking is not a guaranteed spending cap.
Work and coding agents are free for up to 3 people; product inference is free up to $1,000 in monthly AI spend. Connect your Veqen account for private organization data. The separate public model-price server needs no account. Estimates remain separate from provider invoices. Setup and permissions: https://veqen-app.com/docs/mcp
- Status
- Healthy
- Uptime
- 85.7% over 18 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 88 tools
The 88-tool surface has many overlapping concepts and action-dispatch mega-tools: billing vs get_account vs organization, get_spend vs forecast_spend vs chargeback vs explain_change, and list_incidents vs list_anomalies vs get_spike. Descriptions help, but an agent can easily choose the wrong tool because several tools answer adjacent financial questions.
All names are snake_case, but the convention is mixed: many are verb_noun (get_spend, list_incidents, set_budget), while others are noun-only with an action parameter (billing, limits, vendors, organization, api_keys). The set is readable but not predictably patterned, making tool selection harder.
88 tools is far beyond a reasonable surface and is likely to overwhelm an agent. Many grouped action tools could consolidate related operations, so the count is an extreme mismatch for the apparent domain.
Coverage is very broad: spend tracking, budgets, alerts, provider connections, provider keys, incidents, refunds, agent cards and policies, approvals, reconciliations, month-end close, billing, teams, SSO, and vendor agreements. No obvious dead end in the cost-monitoring and protection lifecycle is missing.
Available Tools
88 toolsaccessSupport access and connected appsCInspect
action support (Veqen support's requests to view the dashboard), approve, deny or revoke (grant_id; owners), apps (AI assistants the person connected with OAuth) or disconnect (family_id).
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | support | |
| grant_id | No | ||
| family_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the safety profile is partly covered. However, the description says nothing beyond those hints about what 'revoke' or 'disconnect' actually do (revoked tokens? removed OAuth grants? permanent?), which permissions ('owners') are required, or whether actions are reversible — notable gaps for a mutation tool, and destructiveHint=false sits uneasily with revoke/disconnect semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the single telegraphic sentence with nested parentheses and semicolons is hard to parse and front-loads no clear verb-object statement of purpose. Brevity here comes at the cost of legibility rather than earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a zero-required-parameter, 0%-coverage mutation tool with six action modes, the description omits which parameters each mode needs, what 'support' actually reveals, and what effect approve/deny/revoke/disconnect have. The agent is not equipped to call it correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does partially: it ties grant_id to revoke and family_id to disconnect, which the schema does not express. But 'grant_id; owners' is cryptic, and the description never explains when grant_id or family_id are required versus ignorable given the zero required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the tool's modes (support, approve, deny, revoke, apps, disconnect) so the agent knows this is a multi-action access-management tool, but the name 'access' is generic and the telegraphic phrasing ('action support (Veqen support's requests to view the dashboard)') leaves the resource vaguely defined. It does not clearly separate itself from siblings such as disconnect_provider or list_connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to pick this tool over alternatives, no prerequisites, and no mention of the plausibly competing siblings (disconnect_provider, list_connections, set_privacy). The agent must infer the call conditions entirely from the action list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
act_on_incidentAct on an incidentADestructiveInspect
One action on an incident from list_incidents: shut_off (its key, as shut_off_key; confirmed as there; for an agent spend incident, freezes its card), resolve, expected ('this was us', quiets the key's rules for a week), rotated (the key was replaced everywhere, proof for a refund claim) or claim (start a refund claim, for amount_usd or the incident's amount). Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| confirmed | No | ||
| amount_usd | No | ||
| incident_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false and openWorldHint=true; the description adds real consequences beyond them — shut_off freezes an agent card, expected quiets the key's rules for a week, rotated serves as refund proof. It omits reversibility and permission prerequisites, which matters for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core purpose and then maps actions to outcomes; every clause carries information. The nested parentheses make it harder to parse than necessary, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the action vocabulary, the amount parameter, and the confirmation requirement. It lacks failure behavior and the confirm/execute sequencing relative to siblings such as waiting_shut_offs, leaving a small gap for a destructive, non-idempotent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it mostly does: it explains all five action values, ties amount_usd to 'claim', ties incident_id to list_incidents, and implies confirmed via 'Confirm first'. The phrase 'confirmed as there' is ambiguous about exactly how confirmation is expressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('One action on an incident from list_incidents') and enumerates the five actions with their meanings, which is far more than the title conveys. It does not, however, distinguish itself from closely related siblings like shut_off_key, confirm_shut_off, or update_claim, so an agent could still pick the wrong entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives per-action selection logic: 'expected' means 'this was us', 'rotated' means the key was replaced everywhere, 'claim' starts a refund for amount_usd or the incident amount. It also instructs 'Confirm first.' It stops short of naming alternatives or when NOT to use this tool versus shut_off_key/confirm_shut_off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_billAdd a monthly billAInspect
Records a provider's monthly invoice total (period YYYY-MM), for providers whose billing Veqen can't read. Month-end books it. Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| amount | Yes | ||
| period | Yes | ||
| currency | No | USD | |
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-readonly, non-idempotent, non-destructive write; the description adds genuinely new context by naming the required role (owner, admin or finance member) and the month-end booking side effect. It does not say what happens when a record already exists for the same provider+period — relevant given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and scope. 'Month-end books it' is terse to the point of being slightly cryptic, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, non-idempotent tool with a full output schema and 0% schema coverage, the description covers the essentials (what, who can call it, downstream effect) but leaves duplicate handling, currency and note behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate; it clarifies that amount is the invoice total and that period is YYYY-MM. It says nothing about currency (default USD, ISO-3 pattern) or note, leaving two parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (records) and resource (a provider's monthly invoice total) plus the key scoping condition: manual entry for providers whose billing Veqen can't read. That condition alone differentiates it from list_bills and the automated ingestion path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the triggering condition clear ('providers whose billing Veqen can't read') and notes the downstream relationship ('Month-end books it'), implying this is the manual fallback before closing the month. It stops short of naming an explicit alternative tool or stating 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.
add_creditsAdd provider creditsAInspect
Records credits from an AI provider. kind is prepaid (paid for, an asset) or promotional (free). Dates are YYYY-MM-DD. Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | prepaid | |
| note | No | ||
| provider | Yes | ||
| amount_usd | Yes | ||
| expires_on | No | ||
| granted_on | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-read-only, non-idempotent, non-destructive profile, so the description's job is supplementary — and it delivers the permission requirement plus the domain meaning of prepaid (an asset) vs promotional (free), which the agent cannot infer from structured fields. It stops short of saying what happens on a repeat call or whether an entry can later be corrected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is recorded, then kind semantics, then format, then permission. Nothing is padded, though the permission sentence reads as an afterthought rather than being integrated with usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a 6-parameter mutation tool with zero schema descriptions, the definition leaves provider enumeration, duplicate handling, and post-hoc editability unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries real weight and does explain the kind values and the YYYY-MM-DD date format for granted_on/expires_on. But provider's accepted values, the note field's purpose, and the effect of leaving expires_on null are left entirely to the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Records credits from an AI provider.' An agent can distinguish it from list_credits or credits_expiring by the write framing, but the description never names those siblings or explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The permission prerequisite ('owner, admin or finance member') is useful context but is about authorization, not when to choose this tool over alternatives. There is no statement of when to record a credit versus, say, add_bill, leaving usage implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tool_invoiceAdd a tool's invoiceCInspect
A coding tool's invoice for a month, as lines: {kind: seats|usage|credit|other, amount_usd, quantity (seats billed)}. Credits are given as positive amounts. Checked at once.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | ||
| lines | Yes | ||
| period | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, non-idempotent, closed-world operation. The description adds domain rules such as line kinds and positive credit amounts, plus 'Checked at once,' but that phrase is ambiguous and does not explain atomicity, duplicate rejection, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the invoice line format with no redundant sentences. 'Checked at once' is terse to the point of ambiguity, slightly reducing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with an output schema and safety annotations, it covers the most complex parameter and a key domain rule. It still leaves tool/period semantics, duplicate behavior, and sibling choice unexplained, so it is only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden. It richly defines the lines array item fields, including kind values and quantity meaning, but does not explain the tool parameter's maxLength or the period format beyond 'for a month'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (a coding tool's invoice for a month) and the line-item structure, but it is a noun phrase rather than an explicit verb and does not distinguish this tool from siblings like add_bill or add_credits. The title supplies 'Add', so creation can be inferred, but the description alone is only moderately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus add_bill, add_credits, or import_csv. It also does not state prerequisites, duplicate handling, or whether it is specifically for coding tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_actionAn agent actionAInspect
action get (Veqen's answer as it stands, the approval and the matched transaction) or cancel (the agent didn't go through with it: it stops counting toward the month and a pending approval closes).
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | get | |
| action_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds meaningful consequences: cancel stops the action from counting toward the month and closes a pending approval, while get returns specific related records. It does not explain reversibility, error behavior, or permission requirements, but the annotations already cover the safety profile and the description adds non-obvious mutation effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence contrasting the two actions, with no filler. The parenthetical structure is slightly dense but still efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not required, and the annotations cover safety hints. Still, the description leaves the required action_id parameter undocumented, which is a notable gap for a tool whose schema provides no parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the semantics of the action enum values (get vs cancel) beyond their names, but it completely omits any explanation of the required action_id parameter and its expected identifier format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the two operations on an agent action: get retrieves the current answer, approval, and matched transaction, while cancel aborts it. The resource is specific enough, though the title 'An agent action' is tautological and the description does not explicitly name the required action_id parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied condition for cancel ('the agent didn't go through with it') and explains what get returns, which helps choose between the two modes. However, it does not state when to use this tool versus siblings like agent_approvals or record_agent_actions, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_approvalsAgent approvalsAInspect
action list (state pending, approved, denied or expired) or approve and deny (approval_id, with a note): a person's answer to an agent that asked to spend past its mandate. Confirm with the user before answering.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| state | No | pending | |
| action | No | list | |
| offset | No | ||
| approval_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as non-read-only, non-destructive, non-idempotent, so the safety profile is partly covered; the description adds that approve/deny is effectively a human's answer to an over-mandate spend request and requires user confirmation first, which is genuine behavioral context. It stops short of saying whether an approve/deny decision can be reversed or re-submitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the two action modes before the flavour context and the confirmation rule; nothing is padded. The compressed, list-like syntax is efficient but slightly awkward to parse on first pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values are covered by the existing output schema, and the description supplies the intent and the human-in-the-loop requirement for a 5-param, unlabeled schema. The only shortfall is the undocumented pagination parameter, which an agent needs for the list mode on large result sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to carry all parameter meaning. It covers action, state (with all four enum values) and approval_id/note, but 'offset' — the 5th parameter, controlling paging — is never mentioned anywhere, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names both modes concretely — 'list' with the four state values, and 'approve'/'deny' keyed on approval_id plus a note — and the closing clause ('a person's answer to an agent that asked to spend past its mandate') gives real domain meaning. It is distinguishable from nearby siblings like agent_action or agent_spend_view, though the telegraphic grammar takes a second read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent which action to pick for which intent (list vs approve/deny) and attaches a concrete operating constraint: 'Confirm with the user before answering.' No explicit exclusions or named alternatives among the many approval-adjacent siblings (approve_chargeback, approve_month, agent_action).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_cardsAgent cardsADestructiveInspect
action list (every card, whose agent it is, status, limit, freezes waiting), assign (card_id to agent; '-' for a person's card; '' to read it from the card), freeze or unfreeze (card_id; incident_id to record it there; needs freeze access; with two-person shut-off on, a freeze waits for a second person), confirm (freeze_id, the second person) or limit (card_id, limit_usd a month, set at the platform). Confirm with the user before changing a card.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| action | No | list | |
| card_id | No | ||
| freeze_id | No | ||
| limit_usd | No | ||
| incident_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/open-world/non-idempotent, and the description adds real context beyond them: freeze requires freeze access, a two-person shut-off causes a freeze to wait for a second person, limits are set at the platform level, and the agent should confirm with the user before mutating. That is concrete operational behavior an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Almost every clause carries information, but it is delivered as one unbroken run-on with nested parentheses and no front-loaded summary sentence. The reader must parse rather than scan, which costs comprehension on a six-action tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, six-action mutation tool, the description covers each action's inputs, the access prerequisite, the two-person approval flow, and the list return fields. An output schema exists so return values need no explanation, leaving only minor gaps around failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it does map meaning onto every parameter: agent (including the opaque '-' for a person's card and '' to read from the card), card_id, freeze_id for confirm, limit_usd as a monthly platform limit, and incident_id as a recording target. The cryptic sentinel values are exactly the kind of semantics a bare pattern string cannot convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the six actions (list, assign, freeze/unfreeze, confirm, limit) against the resource implied by the title, so an agent can infer this manages per-agent payment cards. But there is no lead sentence stating what the tool is for, and nothing distinguishes it from close siblings such as limit_request, limits, waiting_shut_offs or confirm_shut_off.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the action list; there is no explicit when-to-use or when-not-to-use guidance and no routing to alternatives. The one explicit directive, 'Confirm with the user before changing a card,' is a useful guardrail but not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_spend_viewAgent spendCRead-onlyIdempotentInspect
view overview (every agent's spend this month, how much an action explained, incidents and approvals waiting, the platforms connected), agent (one agent: mandate, cards, latest transactions, actions and approvals), transactions (agent and match filters), actions (agent and state filters) or report (period YYYY-MM: the month's agent spend controls report for the close and the auditor).
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | overview | |
| agent | No | ||
| match | No | ||
| state | No | ||
| offset | No | ||
| period | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered elsewhere. The description adds only content shape per view; it says nothing about pagination behavior despite an offset parameter with a 1,000,000 ceiling, nothing about defaults, and nothing about auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is one long run-on sentence built from nested parentheticals, with no front-loaded statement of what the tool is for. The information is dense but the structure forces the reader to parse five parenthetical blocks to find the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the per-view contents are a reasonable supplement. Still, for a 6-parameter, 0%-schema-coverage tool with paging, the missing explanation of offset and of the match/state enum semantics leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does explain all five 'view' values plus the YYYY-MM format for period. But it only gestures at 'match filters' and 'state filters' without explaining the enum meanings, and never mentions offset or its paging role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence names the resource ('agent spend') and enumerates the five views it can render, so an agent can infer what the tool returns. However, the framing verb is just 'view' and the whole thing is a parameter enumeration rather than a purpose statement, and nothing distinguishes it from close siblings like check_agent_spend, coding_agent_spend, agent_action, or agent_approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each view is given a short gloss of its contents ('one agent: mandate, cards, latest transactions...', 'the month's agent spend controls report for the close and the auditor'), which implicitly tells the agent which view to pick. There is no explicit when-not guidance and no routing to the sibling tools that cover overlapping agent-spend territory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_keysAPI keysAInspect
action list, create (name, expires_days 30, 90 or 365, allowed_ips: a send-only key for an app), rotate (key_id; the old key works a day) or revoke (key_id). Full-access keys aren't made or rotated here, so an assistant can't keep access after it's disconnected. A new key is in key, shown once: tell the user to store it as a secret, never in code.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| access | No | send-only | |
| action | No | list | |
| key_id | No | ||
| allowed_ips | No | ||
| expires_days | No | 30, 90 or 365 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond annotations: the new key is returned once in 'key' and must be stored as a secret, a rotated key stays valid for a day, and full-access keys can't be created here (so access can't survive disconnect). It doesn't state rate limits or permission requirements, and the 'revoke' action sits uneasily against destructiveHint:false at runtime, but the description itself discloses valuable operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action list and each action's relevant params, then behavioral notes and a security instruction. It's dense and slightly run-on, but every sentence carries information an agent needs, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation isn't required, yet the description still flags the one critical return detail ('key' shown once). Combined with the secret-handling admonition and the full-access limitation, it's fairly complete for a multi-action tool, with only the 'access' parameter left under-explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 17% schema coverage the description must compensate, and it does explain name, expires_days values (30/90/365), allowed_ips ('a send-only key for an app'), and key_id's role in rotate/revoke. But the 'access' enum (send-only|full) and defaults are not explained, leaving a meaningful gap for a 6-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (API keys) and enumerates the four supported verbs (list, create, rotate, revoke) with context. It's specific enough to know exactly what the tool does, though it doesn't explicitly contrast with siblings like set_key_owner or shut_off_key that could confuse an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives per-action guidance and a useful scope exclusion ('Full-access keys aren't made or rotated here'), which is real when-to-use context. However, it never names an alternative tool or says when NOT to use this tool in favor of a sibling, so the routing 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.
approve_chargebackApprove a chargebackAInspect
Freezes a finished month's chargeback (YYYY-MM); the close books its work and coding agents. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the agent knows this is a non-idempotent state change. The description adds genuinely new context: the operation freezes the chargeback, and the close 'books its work and coding agents', which tells the agent there are downstream effects on cost attribution, plus an explicit confirmation requirement. It stops short of saying whether the freeze is reversible or what happens if the month is still open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the effect and followed by the confirmation directive; nothing is padded. The phrase 'the close books its work and coding agents' is compressed to the point of being cryptic, costing a little clarity for its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the mutation's core effect and confirmation requirement are covered. Still missing for a non-idempotent mutation: reversibility, behavior when the month isn't finished, and how it differs from approve_month / month_end.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the month property has only a regex pattern and no description — so the description must carry the meaning. It does supply the required format (YYYY-MM) and the semantic constraint that the month must be finished, but adds nothing about validation failure modes or how month relates to the chargeback period.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action (freezes), a specific resource (a month's chargeback), and a scope qualifier (a finished month, formatted YYYY-MM), so the agent knows the effect is a lock on one month's chargeback. It does not distinguish itself from close siblings such as approve_month, month_end, or month_end_actions, and the shift from the name's 'approve' to the description's 'freeze' leaves the mapping between the two slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'A finished month's' implies a precondition (the month must be complete) and 'Confirm first' is a real usage directive. But it names no alternatives and gives no guidance on what to do when the month is not finished, or when the agent should reach for approve_month or month_end instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_monthApprove a monthAInspect
Approves and freezes a month's journal entries (period YYYY-MM). Confirm with the user first. Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the consequential effect (freezing entries, not just approving) and the authorization requirement, which annotations cannot express. It does not say whether a freeze is reversible or what happens on a repeat call, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: effect and scope first, then the confirmation requirement, then the permission gate. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a one-parameter mutation, the description covers the action, its lock effect, the human confirmation step, and the required role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it does supply the period format ('YYYY-MM') matching the regex pattern. That compensates for the single undocumented parameter, though it could clarify timezone/calendar or whether the month must be closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (approves and freezes) plus the exact resource (a month's journal entries) and the period identifier format. An agent can distinguish this from siblings like month_end or reconciliation_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('Confirm with the user first') and the required role (owner, admin or finance member), which is genuine selection context. It stops short of naming when to prefer a sibling such as month_end or what to do if the month is already approved, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billingBillingAInspect
action status (plans, subscription, this period's spend, the next renewal), checkout (work_agents and/or product_inference, yearly: a Stripe link for the person paying to open, since card details only go to Stripe), portal (Stripe's page for the card, invoices and cancelling), set_interval (interval month or year), drop (product work_agents or product_inference), redeem_offer (partner_code on a running subscription; checkout takes partner_code too), jvzoo (purchases bought with your email) or activate_jvzoo (receipt). Needs an owner or admin. Confirm before changing a subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | status | |
| yearly | No | ||
| product | No | ||
| receipt | No | ||
| interval | No | ||
| work_agents | No | ||
| partner_code | No | ||
| product_inference | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, non-destructive, closed-world mutation tool; the description meaningfully adds to that by disclosing the owner/admin permission requirement, the confirmation-before-changing-a-subscription norm, and the security model (card details only go to Stripe, checkout returns a link for the payer). It stops short of saying what 'drop' actually removes or whether it is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
No sentence is wasted — every clause carries action semantics — but the whole thing is a single dense run-on with nested parentheses, making it hard to scan for a specific action. Front-loading 'status' as the default action helps, yet bullets or action-newlines would have made it far more usable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and permissions, confirmation norms, and the Stripe handoff are covered. What is missing for an eight-action multiplexer is a clear per-action parameter matrix and any note on what a successful 'drop' or 'set_interval' changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description must carry all eight parameters, and it largely does: action values are glossed, yearly and Stripe link behavior explained, product restricted to work_agents/product_inference via the drop clause, work_agents/product_inference tied to checkout, interval tied to set_interval, receiver tied to activate_jvzoo, and partner_code tied to both redeem_offer and checkout. It does not state defaults or clarify which parameters are ignored by which action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates every action (status, checkout, portal, set_interval, drop, redeem_offer, jvzoo, activate_jvzoo) with a parenthetical gloss, so an agent can tell this is the subscription/plan/spend management tool. However it never states a unifying purpose sentence and never distinguishes itself from billing-adjacent siblings like list_bills, add_bill, plan_costs, or add_credits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Useful guardrails are present: 'Needs an owner or admin' and 'Confirm before changing a subscription', plus per-action hints such as jvzoo being for purchases bought with your email. But there is no explicit routing guidance telling the agent when to pick this tool over the many sibling billing/credits/plan tools, so selection among alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
card_platformsCard and banking platformsBInspect
action list (the platforms Veqen reads for agents: Stripe Issuing, Ramp, Brex, Mercury, what each needs, and which are connected), connect (platform, fields: a read-only credential, checked by listing cards), disconnect, freeze_access (platform, fields: the separate credential that may freeze cards and set limits) or remove_freeze_access.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| fields | No | ||
| platform | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as non-read-only, non-destructive, non-idempotent, so the description must add context, which it partly does: connect takes a read-only credential validated by listing cards, and freeze_access requires a separate credential that can freeze cards and set limits. However, it says nothing about what disconnect or remove_freeze_access do to existing connected data, or whether these actions are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense run-on sentence packed with parentheticals, which makes it hard to scan; the action-to-meaning mapping would read far better as a short list. It is front-loaded on 'action list' but not on the highest-value information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting needn't be explained, and all five action values are at least touched. But for a multi-action mutation tool with zero schema coverage, the description omits the effect semantics of disconnect/remove_freeze_access and the identity of the credential fields an agent must supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it maps platform values to named providers and explains that 'fields' means a read-only credential for connect versus a separate freeze/limit credential for freeze_access. It still leaves the exact field keys and the purpose of fields for list/disconnect undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (the card/banking platforms Veqen reads: Stripe Issuing, Ramp, Brex, Mercury) and enumerates the specific actions (list, connect, disconnect, freeze_access, remove_freeze_access). It does not explicitly differentiate itself from nearby siblings like connect_provider or agent_cards, but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when each action applies by describing what list returns ('what each needs, and which are connected') and that connect credentials are verified by listing cards, but there is no explicit when-to-use vs. alternatives guidance (e.g., linking vs. agent_cards or connect_provider), and no stated prerequisites or ordering constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_memberChange a memberADestructiveIdempotentInspect
action role (member_id from list_members, role), remove (member_id) or cancel_invitation (invitation_id). Owners alone add or remove owners. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| action | Yes | ||
| member_id | No | ||
| invitation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the description adds value by disclosing the owner-only privilege constraint and mandating confirmation before executing. It stops short of saying what happens to a removed member's data or whether removal is reversible beyond the idempotency hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely compact and front-loaded, with no filler sentences. The telegraphic phrasing 'action role (member_id from list_members, role)' is slightly ambiguous on first read but every token carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations plus the output schema relieve the description of safety and return-value details, and the action-to-parameter mapping is present. Still missing for a destructive membership tool: which role values are assignable and their meaning, and what removing a member does to their existing records or owned resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description must carry the load, and it does map each action to the parameters it consumes and explains where member_id originates (list_members). It does not explain the semantics of the distinct roles (finance, security, viewer) or whether role/invitation_id are ignored on other actions, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the three concrete operations (change role, remove member, cancel invitation) and their respective parameters, so the agent knows exactly what the tool does. It is distinguishable from invite_member and list_members, though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent which action value pairs with which identifier (role/remove -> member_id, cancel_invitation -> invitation_id) and sources member_id from list_members. It also states a real precondition ('Owners alone add or remove owners') and a confirmation requirement ('Confirm first'), but offers no explicit routing to alternatives such as invite_member.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_protection_settingsChange protection settingsAInspect
action set_access (provider and key: a credential allowed to change key status there; it's never shown again), remove_access (provider), set_policy (rule and policy: alert, preview or disable; only dormant and owner_gone can shut keys off) or set_options (two_person_shutoff, share_patterns). Needs an owner, admin or security member. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| rule | No | ||
| action | Yes | ||
| policy | No | ||
| provider | No | ||
| share_patterns | No | ||
| two_person_shutoff | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that the set_access credential is never shown again, names the required roles, requires confirmation before acting, and constrains shutoff to dormant and owner_gone keys. These are meaningful behavioral details, though it does not discuss reversibility or repeat/idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is appropriately sized at roughly two sentences and every clause carries information, but it is not front-loaded: it opens with the action list rather than stating the tool's purpose, and the long parenthetical makes the action-to-parameter mapping harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter conditional mutation tool, the description covers the action variants, role prerequisite, confirmation step, and the main constraint on shutting keys off. It still leaves the semantics of 'rule' and the effect of set_options on sharing unspecified, but the output schema is present and much of what an agent needs is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and seven parameters, the description does most of the work: it maps provider/key to set_access, provider to remove_access, rule/policy to set_policy with allowed values, and two_person_shutoff/share_patterns to set_options. The 'rule' parameter remains unexplained and the key parameter's direction (input credential vs identifier) is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the four actions (set_access, remove_access, set_policy, set_options) with their associated fields, so an agent can tell this mutates protection settings rather than reads them like protection_settings. It lacks an opening statement of the tool's overall purpose and does not explicitly distinguish itself from siblings such as shut_off_key or confirm_shut_off.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful prerequisites (owner, admin or security member) and a confirmation requirement ('Confirm first'), which is real guidance. However, it never says when to use this versus protection_settings, shut_off_key, or confirm_shut_off, so the choice 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.
chargebackA month's chargebackCRead-onlyIdempotentInspect
A finished month's work and coding agent cost by cost center, team, person and tool, matched to each tool's invoice, with its journal entries. Work and coding agents Enterprise.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context that results are matched to invoices and include journal entries, and hints at Enterprise plan availability, but it does not disclose whether the report must exist, whether it is generated on demand, or what happens if the month is not finished.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the deliverable. The trailing fragment 'Work and coding agents Enterprise.' is abrupt but still conveys plan availability; it could be integrated more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be explained. However, for a report-generation tool with a single required parameter at 0% schema coverage, the definition should clarify month semantics and when to prefer this over adjacent reporting tools such as month_end or reconciliation_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, so the description must compensate. It adds the meaningful constraint that the month should be 'finished,' while the YYYY-MM format is only conveyed by the schema pattern; the description does not explain timezone, month boundary, or what happens for incomplete months.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource (a finished month's chargeback breakdown by cost center, team, person, tool, matched to invoices with journal entries), but it reads as a noun phrase rather than a clear action and does not explicitly distinguish itself from siblings like month_end, get_spend, or reconciliation_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this tool versus alternatives such as month_end, get_spend, or reconciliation_status. The phrase 'finished month's' weakly implies it is for closed periods, but no preconditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_agent_spendAsk before an agent spendsAInspect
Call before an AI agent spends money. Answers allow, approval (a person decides; call again with the same action_id, or agent_action, to see their answer) or deny, from the agent's mandate, with the reasons and what it has left this month. The action is recorded either way and matched to the card or account transaction when it appears.
| Name | Required | Description | Default |
|---|---|---|---|
| run | No | ||
| card | No | ||
| kind | No | purchase | |
| rail | No | card | |
| agent | Yes | ||
| payee | No | ||
| amount | Yes | ||
| purpose | No | ||
| currency | No | USD | |
| action_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag non-read-only, non-idempotent, non-destructive. The description adds the crucial side effect that the action 'is recorded either way and matched to the card or account transaction when it appears,' which annotations alone would not reveal. It omits auth requirements and rate limits, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the trigger and decision, and no padding. The approval-parenthetical is slightly dense but earns its place by explaining the follow-up call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the decision outcomes, the recording behavior, and the approval follow-up, and the output schema handles return values. For a 10-parameter tool with zero schema descriptions, however, it never explains the key inputs (amount, agent, card, rail, kind), leaving an agent to guess their meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It explains only action_id (reuse for polling approval) and references agent_action, but leaves eight parameters—agent, amount, card, run, kind, rail, payee, purpose, currency—semantically unexplained beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('check before an AI agent spends money') and enumerates the three possible answers (allow, approval, deny). It also names the sibling tool agent_action as the way to retrieve a decision, so an agent can distinguish it from passive viewing tools like agent_spend_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The timing is explicit ('Call before an AI agent spends money'), and the approval path is spelled out ('call again with the same action_id, or agent_action'). It does not say when not to use it or contrast it with get_spend/limits, but the core when-to-use guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coding_agent_spendWork and coding agent cost per personBRead-onlyIdempotentInspect
Each person's work and coding agent cost for a month (YYYY-MM, this month by default), tool by tool at the company's contracts, optionally for one team. People see what they'd see in the dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| month | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds real value beyond them: the default month behaviour and the note that results are scoped to what the viewer would see in the dashboard (permission-based visibility). It does not explain pagination behaviour or the result ordering, and the offset parameter goes unmentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the resource and scope, then parenthetical defaults, then the permission note. No filler, though the final dashboard clause is slightly indirect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. However, with three parameters at 0% schema coverage and no annotations about pagination, the missing offset meaning and unspecified result ordering leave the agent short of what it needs to page through per-person cost data confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does for two of three: month format 'YYYY-MM' with 'this month by default', and team ('optionally for one team'). The offset parameter is never explained, leaving pagination semantics undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: per-person work and coding agent cost for a month, broken down tool by tool, optionally scoped to one team. That is clearly distinct from generic siblings like get_spend or get_customer_cost, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing (cost per person, per month, per team) but there is no explicit guidance on when to choose this over get_spend, get_customer_cost, or forecast_spend. The 'optionally for one team' phrase hints at the filtering case but doesn't state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coding_toolsCoding toolsBRead-onlyIdempotentInspect
Each coding tool for a month (YYYY-MM): connected or not, its cost at the company's contracts, its plan, and its invoice checked against what Veqen expects.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and non-destructive, so the safety profile is covered. The description adds that costs are computed at 'the company's contracts' and invoices are 'checked against what Veqen expects', which is meaningful context about the data, but it says nothing about default behavior when month is omitted or how large the result set can be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the most important scoping fact (month, with format) appears early. It is a verbless fragment, which slightly reduces readability but costs no tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with an output schema and safety annotations, the description covers the returned content adequately without needing to restate return shape. The missing piece is optional-parameter behavior: with month defaulting to null and no required fields, an agent cannot tell what a bare call does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter alone; it does convey the month semantics and its YYYY-MM format (though the schema pattern already enforces that). It fails to explain the null default — whether omitting month means the current month or all months — which is the one thing an agent actually needs beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (coding tools) and enumerates the specific fields returned per tool: connection status, cost at contract rates, plan, and invoice reconciliation against Veqen's expectations. That is far more specific than the tautological title, though it never explicitly contrasts itself with near siblings such as coding_agent_spend, reconciliation_status, or add_tool_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus alternatives like coding_agent_spend or reconciliation_status, and no exclusions. An agent must infer from the noun phrase that this is the per-tool monthly breakdown rather than the aggregate spend view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_modelsCompare models on costBRead-onlyIdempotentInspect
Cost of the same call on several models, per call and per month: tokens for text, embedding and realtime models, units (images, seconds, characters, queries or pages) for the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | Images, seconds of audio or video, characters, queries or pages per call | |
| models | Yes | ||
| variant | No | Image quality and size (high/1024x1024) or video resolution (1080p) | |
| input_tokens | No | Uncached input tokens per call | |
| cached_tokens | No | Cache-read input tokens per call | |
| output_tokens | No | Output tokens per call, including reasoning | |
| calls_per_month | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that results are reported both per call and per month and that token-based versus unit-based models are costed differently — useful behavioral context, though it says nothing about limits (max 10 models) or what happens with mixed/unsupported model lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the core deliverable (cost per call and per month) is front-loaded before the input taxonomy. Slightly overloaded with parenthetical enumerations, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the input taxonomy is covered. However, for a 7-parameter analytical tool the description omits the multi-model limit, default assumptions (e.g. 100000 calls/month), and when this beats get_model_price or simulate_workload — a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, just under the baseline threshold, and the description meaningfully compensates by explaining which inputs apply to which model classes: tokens for text, embedding and realtime models, units (images, seconds, characters, queries, pages) for the rest. That is genuine semantics beyond the field-level descriptions, though 'variant' and 'calls_per_month' get no treatment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource precisely: cost of the same call across several models, per call and per month. The plural 'several models' implicitly distinguishes it from get_model_price (single price lookup) without naming the sibling, so differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus get_model_price, simulate_workload, or estimate_switch. The multi-model framing hints at a comparison use case, but there are no exclusions or prerequisites, so an agent must infer routing from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_shut_offConfirm a shut-offBDestructiveInspect
The second person's confirmation of a waiting shut-off (an id from waiting_shut_offs). Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is partly covered. The description adds that this is a second-person confirmation of a waiting shut-off, which is meaningful context beyond annotations, but it does not explain the effect of confirmation or what exactly becomes destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the main action, which is good. However, the fragment "Confirm first" is ambiguous and does not clearly earn its place, making the structure less effective than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is destructive and open-world, but annotations and an output schema reduce what the description must cover. It identifies the waiting_shut_offs source and the second-person confirmation role, yet it does not fully describe the confirmation workflow or consequences of confirming.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the burden for the single action_id parameter. It partially does so by saying the id comes from waiting_shut_offs, but it does not explicitly map action_id to that source or explain the integer/minimum constraint already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it is the second person's confirmation of a waiting shut-off, and it points to waiting_shut_offs as the source of the id. The only weakness is the cryptic fragment "Confirm first," which slightly muddies an otherwise clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by saying the id comes from waiting_shut_offs and that this is the second person's confirmation, which gives useful workflow context. However, it does not explicitly say when not to use it, what alternative to use, or fully explain the two-person prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_providerConnect a provider or toolAInspect
Connects a provider's billing or a coding tool's usage with the fields list_connections names (an admin key, usually); provider stripe with a key field connects revenue. Brings in 30 days to check, up to a minute. Confirm first: it stores a credential.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it stores a credential (sensitive), fetches 30 days of data, and may take up to a minute. These details help the agent understand the operation's impact and timing, though it could mention idempotency or failure modes explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, but the first sentence is long and awkwardly structured ('with the fields list_connections names...'), making it harder to parse. The key information is present but not optimally front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations covering safety and idempotency, the description provides enough context for correct invocation: it covers credential storage, timing, data range, and field sourcing. Minor gaps remain, such as what happens on failure or the exact shape of the fields object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well: it explains that 'fields' should contain the field names from list_connections (e.g., an admin key) and gives a concrete example ('provider stripe with a key field connects revenue'). This clarifies both required parameters despite the lack of schema annotations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Connects') and resource ('a provider's billing or a coding tool's usage'), making the tool's function clear. It implicitly distinguishes from the sibling disconnect_provider, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a prerequisite ('Confirm first: it stores a credential') and points to list_connections for field names, but it does not explicitly state when to use this tool versus alternatives 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.
credits_expiringCredits expiringBRead-onlyIdempotentInspect
Provider credits with a balance that expire within the given number of days.
| Name | Required | Description | Default |
|---|---|---|---|
| within_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered; the description usefully adds that only credits with a nonzero balance are returned. It says nothing about whether already-expired credits are included or how the window is bounded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler, and the key qualifier (expiring within N days) comes at the end where it reads naturally. It is under-specified rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be described, and annotations cover safety. Gaps remain on window semantics and on routing among the many reporting siblings, which matters for a tool with 12 dashboard-style alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameter's meaning; it does clarify that within_days is an expiry horizon in days, which is real added value. It does not state the reference point (now vs. billing cycle), inclusivity, or that the field is optional with a 60-day default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase names a specific resource (provider credits), a filter (positive balance), and a time horizon, which distinguishes it from siblings like get_spend or get_account. It is a noun fragment without a verb, but the returned entity is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says nothing about when to reach for this tool versus get_spend, get_customer_cost, or reconciliation_status. The only usage signal is the implied 'set within_days to your horizon', which an agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_budgetDelete a budgetADestructiveIdempotentInspect
Deletes a budget by its id from list_budgets. Needs an owner or admin.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds a meaningful authorization requirement ('Needs an owner or admin') and clarifies that the id comes from list_budgets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted language. The core action and id source are front-loaded, followed by the authorization requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with rich annotations and an output schema, the description covers what an agent needs: the action, the identifier source, and the permission requirement. Return values need not be explained because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the sole parameter budget_id is only typed as an integer in the schema. The description compensates by explaining that budget_id is the id obtained from list_budgets, giving the parameter clear semantic grounding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: deletes a budget, identified by its id from list_budgets. It is clear and actionable, but it does not explicitly distinguish this operation from the related set_budget sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a useful prerequisite ('Needs an owner or admin') and indicates where to obtain the id ('from list_budgets'), which implies when to use it. However, it does not explicitly state when not to use it or name alternatives such as set_budget for creating or updating budgets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordDelete a recordADestructiveIdempotentInspect
Deletes a bill, credit grant, price, saved view, vendor agreement or savings baseline by its id from the matching list. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| record_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is largely covered. The description adds the non-annotated 'Confirm first' requirement and clarifies the deletion scope, but says nothing about irreversibility, permissions, or what happens to dependent data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and affected resources, with the confirmation caveat placed last. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations carry the destructive/idempotent profile, so the description needn't explain returns. What it adds — entity kinds, id scoping, confirm-first — is nearly sufficient; a note on irreversibility or failure modes would close the remaining gap for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does part of the job: it enumerates the six valid kinds and the phrase 'from the matching list' conveys the non-obvious fact that record_id is scoped per kind. It lacks type/format detail for record_id, but the id-scoping insight is genuinely valuable beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb ('Deletes') and enumerates the six resource types plus the lookup key ('by its id'), so an agent knows exactly what it removes. It does not differentiate against the near-neighbor sibling delete_budget, nor clarify that deleting a 'baseline' is different from freeze_baseline, so it stops short of full sibling discrimination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Confirm first' is the only procedural guidance, which is a useful workflow hint but not an when-to-use/when-not-to-use rule. Nothing tells the agent when to prefer this over delete_budget or freeze_baseline, or what preconditions exist before deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_providerDisconnect a provider or toolBDestructiveIdempotentInspect
Disconnects it and deletes the billing Veqen brought in from it. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds a concrete consequence not encoded anywhere: the billing records the provider supplied are deleted along with the connection. That plus the confirmation requirement gives an agent real decision-relevant behavior, though permanence/restore options remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the destructive effect is front-loaded, and there is no filler. Slight deduction for the ambiguous 'it' that forces the reader back to the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the annotations carry the safety profile. However, for a destructive tool the description omits the parameter format and any note on what depends on the provider (keys, tools, historical attribution), leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage and no enum. The description says nothing about whether 'provider' expects a slug, display name, or ID, so the agent must guess the value format for a destructive call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (disconnects) plus the consequential effect (deletes billing records brought in from that provider), which distinguishes it from connect_provider. The object is an unresolved pronoun 'it' that only the title supplies, and 'Veqen' is unexplained jargon, so it falls just short of fully self-contained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Confirm first' gives a workflow precondition, which is more than nothing. But it never says when to prefer this over alternatives such as connect_provider, list_connections, or shutting off a key, nor what happens to the provider's keys/data afterwards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_switchEstimate a model switchCRead-onlyIdempotentInspect
Re-prices the organization's real token volumes on another model (standard rates).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| feature | No | ||
| to_model | Yes | ||
| from_model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds two genuinely useful bits of context: the estimate uses the org's real token volumes (not hypothetical) and applies standard rates, implying negotiated discounts are excluded. It does not say whether historical data availability affects the result or how partial windows are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the key distinction, with no filler. Brevity is appropriate here; the shortfall is missing content rather than wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema relieves the description of explaining return values, and annotations cover safety. But for a 4-parameter tool with zero schema description coverage, the definition leaves the meaning of days, feature and from_model unstated and gives no guidance on when to prefer this over sibling estimation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only gestures at to_model ("another model"). The required from_model and especially days (1-90, default 30) and feature are entirely unexplained, forcing the agent to interpret a bare JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ("re-prices") and resource ("the organization's real token volumes on another model") makes clear this is a cost what-if based on actual usage, not a generic model comparison. It implicitly distinguishes itself from compare_models and simulate_workload, though it never names them, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no routing to alternatives, despite siblings like compare_models and simulate_workload that plausibly overlap. The agent must guess whether this is the right tool for a pricing question versus a side-by-side model comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_changeExplain a change in spendARead-onlyIdempotentInspect
Compares two periods and names the models, features and customers that moved most. The baseline defaults to the same number of days just before.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | YYYY-MM-DD | |
| start | Yes | YYYY-MM-DD | |
| baseline_end | No | YYYY-MM-DD | |
| baseline_start | No | YYYY-MM-DD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful context beyond annotations: it explains that the tool names the top-moving models/features/customers and that the baseline defaults to the same number of days just before. It doesn't cover rate limits or auth needs, but those are lower priority for a read-only analytical tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: the first describes the core comparison and output, the second clarifies default baseline behavior. The purpose is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers the essential non-schema behavior (default baseline, output content). It lacks explicit sibling differentiation and edge-case constraints (e.g., date inclusivity, maximum range), but it is sufficient for a simple read-only comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the default behavior when baseline_start and baseline_end are omitted—they default to the same number of days just before the main period. This is valuable for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('compares') and resource ('two periods') and specifies the output ('names the models, features and customers that moved most'). This clearly distinguishes it from simple spend retrieval tools, though it doesn't explicitly contrast with the sibling compare_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it compares periods and identifies top movers, but it doesn't explicitly say when to use this tool versus alternatives like compare_models or get_spend. No exclusions or routing guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast_spendForecast spendARead-onlyIdempotentInspect
Month-end and quarter-end spend forecasts with an 80% range (spend so far plus each remaining day at its weekday's recent average), for the organization or one customer, feature or project.
| Name | Required | Description | Default |
|---|---|---|---|
| feature | No | ||
| project | No | ||
| customer | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, closed-world. The description adds real substance beyond them by disclosing the forecast method (spend so far plus each remaining day at its weekday's recent average) and the 80% range, which tells an agent how much to trust the number. It does not mention any caveats about sparse data, but that is a minor omission against an already-strong annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the resource and scope front-loaded and zero filler; the parenthetical methodology earns its place by explaining the calculation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description covers the method and all three param semantics. The remaining gap is that it never says how month-end vs quarter-end is chosen (there is no parameter for it), leaving the agent to guess that both horizons come back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load — and it does: 'for the organization or one customer, feature or project' explains that all three optional params are scope selectors and that omitting them yields org-level results. The phrase 'one customer, feature or project' also hints they are single-value selectors. It does not state whether they can be combined, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (forecast spend) and adds the scope (month-end and quarter-end, organization or one customer/feature/project), which clearly separates it from get_spend and month_end. It never explicitly names a sibling tool, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the forward-looking counterpart to get_spend's actuals. But there is no explicit 'use this when…' clause, no exclusions, and no pointer to month_end or get_spend as alternatives, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_auditThe free auditAInspect
action get (the latest audit: running, or its report), run (reads 30 days from every connection; ready within the hour), share or unshare (run_id: a link anyone signed in to the organization can open for 30 days).
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | get | |
| run_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description carries real behavioral weight the annotations do not: `run` is asynchronous with roughly an hour of latency, and `share` produces a link open to anyone signed in to the organization for 30 days, an access-control fact worth stating. Annotations only supply the generic readOnly/destructive/idempotent flags, so this added context is genuine value. Minor gap: it doesn't say whether `unshare` revokes links immediately or whether a new `run` replaces prior data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the action enumeration, with each action's meaning in a parenthetical. It is efficient, though the telegraphic style (missing articles, semicolon-chained clauses) costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is unnecessary, and the description covers all four action modes plus the async and link-lifetime behaviors. What is missing is the default action and any note on prerequisites (e.g., whether connections must exist before `run`).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameters, and it partly does: it defines what get/run/share/unshare mean and ties `run_id` to the share/unshare actions. It omits that `action` defaults to `get`, that `run_id` must be a positive integer, and whether get can target a specific historical run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Enumerates the four actions with their distinct effects: get (latest audit state or its report), run (a 30-day audit across connections), share/unshare (link management). A reader knows this is a multi-mode audit tool. It does not distinguish itself from audit-adjacent siblings like get_run/get_runs or access, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The cost/timing note on `run` (30 days of data, ready within the hour) implicitly signals it is a slow, heavy action, and the share lifetime implies the sharing workflow. But there is no explicit when-to-use guidance, no mention that `action` defaults to `get`, and no routing to or away from siblings such as get_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freeze_baselineFreeze a savings baselineAInspect
Freezes how the organization paid the providers and seat tools in covers during base_start to base_end (YYYY-MM-DD), before new terms start on changed_on, so each later month shows what the new rate saved apart from usage changes. Do it before the new terms start. It can't be edited afterwards, only deleted. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| baseline | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description does not need to restate safety basics. It adds meaningful behavioral context by warning that the baseline cannot be edited afterward and only deleted, plus the need to confirm first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the description is short enough to scan. It repeats the 'before the new terms start' timing idea, which slightly reduces conciseness but also reinforces an important constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations cover mutation/idempotency hints and an output schema exists, the description provides enough context for correct invocation: purpose, timing, immutability, and confirmation. It omits optional parameter semantics and permission details, but those are secondary here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the roles of covers, base_start, base_end, and changed_on in prose, tying them to the baseline period and first day of new terms. It does not explain the optional name or agreement_id fields, so with low schema description coverage it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Freezes,' and identifies the resource as a savings baseline, with scope tied to covers, base_start/base_end, and changed_on. It is clear on its own, but it does not explicitly distinguish itself from savings-related siblings such as get_savings or forecast_spend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a timing prerequisite: 'Do it before the new terms start,' and adds 'Confirm first.' However, it does not state when not to use this tool or name alternative tools/options, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountAccountBRead-onlyIdempotentInspect
The connected organization, its plans (work and coding agents and the product-inference band) and this billing period's usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful content scope (organization, plans, billing-period usage) but does not explain freshness, billing-period boundaries, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single concise sentence fragment with no wasted text, front-loading the organization and including the relevant plan and usage details. The parenthetical is slightly dense but still appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter schema, rich annotations, and an output schema, the description provides enough context about what account information is returned. It could be stronger by clarifying how it relates to spend-focused sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and its contents: the connected organization, plans, and current billing period usage. It is more specific than the name alone, but lacks a verb and does not explicitly differentiate from siblings such as get_spend or get_customer_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like get_spend or get_customer_cost. Usage is only implied by the described contents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertsAlertsBRead-onlyIdempotentInspect
Where alerts go (email, Slack, webhook) and the latest alerts sent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds that the response includes both destination configuration and the latest sent alerts, which is useful beyond the annotations, but it does not mention pagination, limits on 'latest', or other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no waste, and the two content pieces (destinations, latest alerts) are front-loaded. It is arguably slightly terse given the lack of an explicit verb, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema present, and annotations covering the safety profile, little else is needed. The description covers both what is returned and the channel types, though it could be clearer about scope of 'latest' and whether both pieces are always returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter semantics for the description to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this tool returns alert destinations (email, Slack, webhook) plus recently sent alerts, which is a reasonably specific resource description. It lacks an explicit verb and does not explicitly differentiate itself from siblings, though no sibling overlaps this domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this tool, when not to, or what alternatives exist. The agent must infer usage entirely from the wording 'where alerts go' and 'latest alerts sent'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_costGet a customer's costARead-onlyIdempotentInspect
What one customer cost: total, by feature and by model, and margin when Stripe revenue is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | YYYY-MM-DD | |
| start | No | YYYY-MM-DD | |
| customer | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered. The description adds genuine behavioral context beyond that: margin is only included when Stripe revenue is connected, which tells the agent why a field may be absent. It does not cover default date-range behavior, which is a minor remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that lists exactly the breakdowns offered and qualifies the one conditional output. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure need not be explained, and annotations cover the safety profile; the description is therefore nearly complete. The one shortfall is that it is silent on the customer parameter's expected format and on default time window, which matter for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; start and end are documented as YYYY-MM-DD with patterns, but customer has no schema description. The description says nothing about the parameters, including what 'customer' accepts (id vs name) or what omitting start/end defaults to, so it adds no meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (one customer's cost) and enumerates the breakdown dimensions: total, by feature, by model, plus margin. It is clear what the tool returns, but it does not contrast itself with siblings like get_spend or get_margin, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scoping phrase 'one customer', which suggests per-customer analysis versus the account-level siblings. However there is no explicit when-to-use, no named alternative (get_spend, get_margin, compare_models) 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.
get_incidentGet an incidentARead-onlyIdempotentInspect
One incident by its id from list_incidents: its timeline, each hour it covers with the reasons, and its claims.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add what annotations don't say. It does add the payload structure — timeline, per-hour reasons, claims — but that overlaps with the output schema and it says nothing about behavior on a nonexistent id or whether the response is capped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The parenthetical-style breakdown of return contents is compact and informative rather than verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with a full output schema, the description covers purpose, provenance of the id, and the shape of the result. The main gap is error behavior for an unknown id, which an agent might reasonably want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single incident_id parameter is undocumented in structured fields. The description compensates partially by saying the id comes 'from list_incidents', which tells the agent where to source a valid value, but it adds no format or validation detail beyond the schema's integer type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('One incident by its id') and explicitly distinguishes itself from the sibling list_incidents as the single-item drill-down. It also previews what comes back (timeline, hourly reasons, claims), so the agent knows exactly what this tool yields versus the list tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from list_incidents' establishes the intended workflow: call the lister first, then fetch a specific incident by id. It doesn't state when not to use it or what happens with an invalid id, but for a simple read-by-id tool 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_marginGet margin by customerARead-onlyIdempotentInspect
Revenue from Stripe against AI cost per customer, least profitable first.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | YYYY-MM-DD | |
| limit | No | ||
| start | No | YYYY-MM-DD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent, non-destructive operation. The description adds useful behavioral context beyond that: the data sources (Stripe revenue and AI cost) and the default ordering by least profitable customer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence with no waste, and it front-loads the key metric and ordering. Every phrase contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, and annotations cover safety and idempotency, so the description need not explain return values or side effects. It provides enough context to understand the tool’s purpose, though it could better clarify date-range behavior and limit semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: start and end are documented as YYYY-MM-DD dates, while limit has no schema description. The description does not explain any parameter, but the remaining schema constraints/defaults make the tool minimally usable, so this is adequate with a clear gap around limit semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and calculation: revenue from Stripe versus AI cost per customer, with results ordered least profitable first. It distinguishes the tool implicitly from cost/spend siblings by framing it as margin, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase "least profitable first," which suggests this is for identifying low-margin customers. However, the description gives no explicit when-to-use guidance, prerequisites, or comparison to siblings such as get_customer_cost or get_spend.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_priceGet a model's priceARead-onlyIdempotentInspect
Rates for one model of any kind. Token rates are USD per million tokens: input (in), output (out), cache read (cr), cache write (cw, cw1h) and audio (ain, aout), with batch, priority and long-context tiers. Models billed per image, second, character, query or page have a unit rate (unit), and may have size, quality or resolution variants (v:...).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model id as you'd pass it to the API: gpt-4o-mini, Qwen/Qwen3.5-9B, fal-ai/flux/dev | |
| provider | No | Provider key, such as openai, together, bedrock, fal or deepgram |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds real context beyond that: rates are USD per million tokens, the field abbreviations (in, out, cr, cw, cw1h, ain, aout), tiering (batch, priority, long-context), and the unit-rate variant scheme for non-token billing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core statement, then a dense but necessary glossary of rate fields and tiers. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, yet the description still decodes the rate fields and variant notation. Only the relationship to sibling pricing tools is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both model and provider are already documented in the schema. The description adds only a general note that any model kind is supported, which is the correct baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and outcome — pricing rates for a single model — and the sentence 'Models billed per image, second, character, query or page have a unit rate' makes the scope (any model kind) explicit. It does not name siblings like compare_models or list_models, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. An agent must infer from the sibling list that compare_models handles multi-model comparison while this returns rates for one model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runOne agent runARead-onlyIdempotentInspect
One agent run, conversation or job, by its run id (get_runs lists the costliest): its total, how long it took, and each AI request in order (up to 200) with its model, tokens and cost.
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful details about output (total, duration, up to 200 requests with model/tokens/cost), but does not disclose error behavior, rate limits, or other operational traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys purpose, scope, and key output details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, an output schema, and a single-parameter input, the description is nearly complete for an agent to call it correctly. It could mention error handling (e.g., if the run id is not found), but overall it provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that the single parameter 'run' is a run id, which adds some meaning beyond the bare schema, but it does not specify format, examples, or constraints (e.g., where to find a run id) beyond what is already implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (one agent run, conversation, or job) and its scope (by run id), and it distinguishes from the sibling get_runs by noting that get_runs lists the costliest runs. An agent can tell exactly what this tool returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (you need a run id to get details) and references get_runs as an alternative, but it does not explicitly state when to use this tool versus get_runs or any other sibling. The guidance is present but indirect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runsGet run costsBRead-onlyIdempotentInspect
Agent runs, conversations or jobs (calls tagged with the same run id, or one OpenTelemetry trace) that ended in a date range: how many, their total, average, median and p90 cost, and the most expensive.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | YYYY-MM-DD | |
| limit | No | ||
| start | No | YYYY-MM-DD | |
| feature | No | ||
| customer | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, idempotent operation, so the bar is lower. The description adds useful behavioral context by defining what counts as a run and clarifying that filtering is based on when runs ended, plus the aggregate metrics returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single dense sentence with no filler. It is appropriately concise, though it front-loads the definition of a run rather than the action and could be structured more clearly for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details need not be in the description, and annotations cover the safety profile. However, with five parameters and low schema description coverage, the description is incomplete regarding filter parameters and the limit behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description only hints at the date-range parameters. It does not explain the feature, customer, or limit parameters, nor does it compensate for the undocumented schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (agent runs/conversations/jobs identified by run id or OpenTelemetry trace) and the returned metrics (count, total, average, median, p90, most expensive). It is specific but does not distinguish this aggregate tool from sibling tools such as get_run, get_spend, or get_customer_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for runs ending in a date range, but it gives no explicit when-to-use guidance, no when-not-to-use guidance, and no alternatives among the many sibling cost tools. An agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_savingsWays to spend lessARead-onlyIdempotentInspect
Ways to spend less, from the last 30 days: prompt caching, the batch API, the same open model on a cheaper host, and cheaper models from the same provider, each with an estimated saving a month. Test a cheaper model's answers before switching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the 30-day window over which savings are computed and the fact that each item carries an estimated monthly saving amount, which shapes how the agent should present results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, scope front-loaded in the first and category enumeration kept tight. The final sentence is a usage nudge rather than descriptive content and sits a little awkwardly, but it is short and does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the annotations plus the stated time window cover the read semantics. What is missing is routing: with siblings like estimate_switch, compare_models and get_spend in the same family, the description should say which question this tool answers versus those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema-derived baseline of 4 applies; there is nothing about inputs the description needs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource concretely — savings opportunities over the last 30 days across four specific categories (prompt caching, batch API, cheaper host, cheaper model) each with a monthly estimate. That is clear enough for an agent to know what comes back, but it never distinguishes itself from close siblings like estimate_switch or compare_models, which plausibly return overlapping advice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance relative to siblings. The closing line 'Test a cheaper model's answers before switching' gestures toward compare_models without naming it, leaving the agent to infer the relationship itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spendGet spendARead-onlyIdempotentInspect
AI spend for a date range: totals, an optional breakdown by one dimension, filters on the others, and this month's run rate and forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | YYYY-MM-DD | |
| user | No | ||
| limit | No | ||
| model | No | ||
| start | No | YYYY-MM-DD | |
| feature | No | ||
| project | No | ||
| customer | No | ||
| group_by | No | provider, model, customer, feature, user, project or environment | |
| provider | No | ||
| environment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for adding real behavior: only ONE group_by dimension at a time, the remaining dimensions act as filters, and the response always includes this month's run rate and forecast regardless of range. It does not mention the 20-row default cap or row limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence, 'AI spend for a date range', followed by a colon-delimited enumeration of what comes back. Dense but zero waste; it would read slightly better split into purpose and output clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the readOnly annotations cover safety. However, with 11 all-optional parameters and 27% schema coverage, the description omits default behavior — what range you get with no dates and what `limit` truncates — which an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 27%, so the description must carry weight and it does explain the most subtle rule — group_by takes one dimension while the others filter, meaning the grouped dimension is excluded from filtering. But it leaves `limit` (default 20, max 100) and the default date range when start/end are omitted completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'AI spend for a date range' with totals, an optional single-dimension breakdown, filters, and run rate/forecast. That is far more than a restatement of the name, but it never names a sibling (get_customer_cost, get_margin, compare_models) to mark where its territory ends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'an optional breakdown by one dimension, filters on the others' tells the agent how to shape a call, but there is no explicit when-to-use-this-instead-of-get_customer_cost or get_margin guidance, 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_spikeOne spikeARead-onlyIdempotentInspect
One spending spike, by the id list_anomalies gives: what it cost against a usual day, and the models, features, customers and users that moved most against the same weekday a week before.
| Name | Required | Description | Default |
|---|---|---|---|
| spike_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnly, idempotent, non-destructive), and the description adds real context: what the numbers mean (cost against a usual day) and the comparison baseline (same weekday a week before). That baseline detail is genuinely useful for interpreting results and is not available anywhere in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero filler, front-loading the resource and the id provenance. The clause structure is slightly awkward ('by the id list_anomalies gives'), which costs a little readability but not correctness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't enumerate return fields, and it instead explains the analytical meaning of the response and the comparison window. Combined with full annotation coverage and a single required parameter, an agent has what it needs to call this correctly; only edge cases (invalid or stale ids) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does by identifying the id's origin and namespace (the ids returned by list_anomalies). It doesn't state format or validation rules, but the schema already constrains the type to a positive integer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States precisely what is fetched: a single spending spike, identified by an id, along with cost-versus-usual-day and the top-moving models, features, customers and users. It also explicitly distinguishes itself from list_anomalies, the sibling that produces the ids, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite and alternative route: the id must come from list_anomalies, so the agent knows it should list first and then fetch detail. No explicit when-not guidance, but for a straightforward detail-fetch tool the routing condition is the one that matters and it is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_csvImport a CSVAInspect
kind tool_usage (a coding tool's usage export; tool), teams (an HR export: email, team, cost center, valid from), people (tool, name or id, email), bills (a cloud billing export summed by month; provider, and match to keep only rows whose description has it) or rate_card (your prices). Pass the file's text as csv.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | The CSV file's text | |
| kind | Yes | ||
| tool | No | ||
| match | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-destructive, non-idempotent write. The description adds CSV format requirements but does not explain what happens on import—whether records are appended or replaced, how duplicates are handled, or what the 5MB size limit means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: one long enumeration of kinds followed by a short directive to pass file text as csv. It is front-loaded with the most important information, though a structured list would be more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existing output schema and annotations, the description covers the critical input semantics—especially which kind to use and what columns each expects. Minor gaps remain around mutation behavior and the precise meaning of every optional parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so the description carries most of the burden. It meaningfully explains the `kind` enum values and their CSV shapes, and it hints at the roles of `provider` and `match` for bills, though the `tool` parameter's exact semantics remain somewhat ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the five supported import kinds and their expected CSV contents, making it clear the tool ingests CSV data of a specified type. However, it never states the action verb explicitly and does not distinguish this tool from siblings like add_bill or teams_and_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The list of kinds implies which kind to choose for which data source, but there is no explicit guidance on when to use this tool versus alternatives such as add_bill or teams_and_people. 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.
incident_evidenceAn incident's evidenceCRead-onlyIdempotentInspect
What a provider's refund process asks for: the key and its changes, then hour by hour (or day by day for an overcharge) what the provider billed against what the company's own code made, as columns and rows.
| Name | Required | Description | Default |
|---|---|---|---|
| incident_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description's added value is the shape of the returned evidence – key changes followed by an hour-by-hour or day-by-day billed-vs-actual comparison – which tells the agent what form the data takes. It does not clarify whether this is a cached retrieval or an on-demand computation, nor any cost/latency implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sprawling sentence that leads with a purpose clause rather than the operation, and buries the useful detail (hourly/daily billed-vs-actual comparison) mid-sentence. It is information-dense but poorly front-loaded and hard to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a one-parameter tool with zero schema description coverage the definition should still say what the tool does and when to reach for it. Editors and agents get an atmospheric picture of the evidence without a clear statement of the operation or call conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single required parameter (incident_id) is only labeled 'Incident Id'. The description adds nothing – no mention of which incident to pass, where to obtain the ID (e.g., from list_incidents), or whether the incident must be in a particular state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the resource and its content – an incident's evidence, comprising key changes plus an hourly (or daily) comparison of provider billing against the company's own code, laid out as columns and rows. But it never states an action verb ('returns', 'compiles') and opens with an oblique use-case clause ('What a provider's refund process asks for'), so the agent must infer that this is a read that produces a reconciliation table. It also does nothing to distinguish it from siblings like get_incident, reconciliation_status, or explain_change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the embedded phrase about a 'refund process', which weakly implies dispute/chargeback contexts, but no explicit when-to-use, when-not-to-use, or which sibling to prefer is given. With get_incident and list_incidents available, the agent has no basis for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_memberInvite someoneAInspect
Emails an invitation to join the organization with a role (admin, member, finance or viewer). Confirm the address with the user first. Needs an owner or admin.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | member | |
| Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic safety profile (not read-only, not destructive, not idempotent); the description adds the key behaviors an agent can't infer: an email is actually sent, an elevated permission (owner/admin) is required, and confirmation should happen first. It stops short of covering what happens on duplicate invitations or expiry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, action front-loaded, each adding information (what it does, the required values, the confirmation step, the permission gate). Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, and the description covers purpose, permission requirement, and role options. Remaining gaps (duplicate-invite behavior, whether the invite expires) are minor for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to carry the load. It does enumerate the allowed role values (admin, member, finance, viewer) and contextualizes email as the address to confirm, but says nothing about the default role being 'member' or email length bounds — the enum value is recoverable from the schema pattern anyway.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: emails an invitation to join the organization, and names the role dimension. That distinguishes it cleanly from list_members, though it doesn't explicitly reference the sibling by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Confirm the address with the user first" and "Needs an owner or admin" give real preconditions for use. No explicit when-not-to-use or alternative-tool routing, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
limit_requestAsk for, or answer, a higher limitAInspect
action ask (for the signed-in person: amount_usd a month and a note), approve (request_id at amount_usd a month, which becomes the person's limit in every tool) or deny (request_id).
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| action | Yes | ||
| amount_usd | No | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (not read-only, not destructive, not idempotent), so the description adds real value by disclosing the lasting side effect that approve makes amount_usd 'the person's limit in every tool,' and that ask is scoped to the signed-in person. It does not mention permissions or reversibility, keeping it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence built around the action parameter, with each parenthetical earning its place by tying parameters to branches. The nested parentheses make it slightly harder to parse than a short bulleted list would be, but there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with an output schema (so return values need no explanation) and annotations covering safety, the action semantics and the global effect of approve are covered. Still missing is authorization context for approve/deny and what happens on a rejected or duplicate request, which matters for a governance operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden and largely does: it maps amount_usd/note to ask, request_id/amount_usd to approve, and request_id to deny. The gap is that note's required/optional status for ask and the units of amount_usd (per month) are stated loosely rather than definitively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three concrete operations (ask, approve, deny) against a specific resource, a spending limit request, and says who they apply to (the signed-in person, a request_id). It is clearly a request/approval tool, though it never names the sibling it is not (limits, set_budget) to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action breakdown implies when each branch applies (ask to raise your own limit, approve/deny to resolve someone's request), but there is no explicit when-to-use versus limits or set_budget, no statement of who may approve, and no prerequisite ordering such as whether a request must exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
limitsLimits and requests for moreBRead-onlyIdempotentInspect
Engineers' and teams' monthly work and coding agent limits the person may see, and the requests for a higher limit they answer or made. Set a limit with set_budget, scope engineer or team.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is fully covered by structured data. The description adds one piece of behavioral context the annotations cannot: the result is visibility-scoped ('the person may see'), meaning results are permission-filtered rather than exhaustive. It says nothing about result volume, ordering, or whether requests and limits are returned together — but with an output schema present and rich annotations, that omission is tolerable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences, but the first is a long, awkwardly constructed clause stack ('...the requests for a higher limit they answer or made') that slows comprehension instead of front-loading the verb. The routing hint to set_budget is buried at the tail rather than positioned where it would do the most work.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with full annotation coverage and an output schema, the description covers who the data is about (engineers and teams), what it contains (limits and higher-limit requests), and the visibility constraint. The remaining gap — nothing on pagination or result volume — is low-risk given there are no input parameters to control it and an output schema defines the shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate — baseline 4 applies. The mention of 'scope engineer or team' arguably belongs to set_budget rather than this tool, so it contributes little here, but there are no undocumented inputs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (engineers' and teams' monthly work and coding-agent limits, plus higher-limit requests) but never supplies a clean verb — 'the person may see' implies a read/list, yet the sentence is grammatically tangled left-to-right. It does distinguish itself from the mutating sibling set_budget, which helps an agent place it, but the core action remains inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'Set a limit with set_budget' gives one explicit alternative and the condition that selects it, which is real routing value. However, the nearby sibling limit_request (clearly the request-creation counterpart) is never mentioned, and there is no when-not-to-use guidance — e.g. whether to prefer this over person_month or billing for limit data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_anomaliesList spend spikesBRead-onlyIdempotentInspect
Spend spikes in the last days: a day when the organization, or one customer, user, feature, project or model, cost at least twice the median of the same weekday over the four weeks before.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds meaningful domain logic by specifying the exact anomaly threshold and comparison window, which an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the core concept and definition with no filler. Every clause contributes to defining the anomaly rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the anomaly definition is complete. However, the days parameter is entirely unexplained and there is no guidance on when to use this tool versus related spike tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter, days, with 0% schema description coverage. The description never mentions the lookback window or how days affects the median calculation, so it fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (spend spikes) and precisely defines the detection rule: a day costing at least twice the same-weekday median over the preceding four weeks. It does not explicitly distinguish this list operation from the sibling get_spike, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what counts as an anomaly but not when to call this tool versus get_spike or explain_change, nor any exclusions such as minimum spend thresholds. 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_billsList billsBRead-onlyIdempotentInspect
Monthly provider bills entered or imported, next to what Veqen recorded for the same month.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds value by disclosing that results pair provider-entered bills against Veqen's recorded figures, but says nothing about ordering, history depth, or pagination for what is presumably a growing monthly set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the key content (provider bills vs. Veqen's records) front-loaded and no filler. It loses a point only because the fragment form omits the action the tool performs, leaving the name to carry the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich annotation set and an output schema that presumably documents the returned bill/comparison fields, the description only needs to say what the call yields, which it does. The remaining gap is routing guidance relative to month_end and reconciliation_status, which a zero-param list tool arguably still needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. The schema is empty and the description correctly implies no filtering arguments are available.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource — monthly provider bills entered or imported — and adds a useful scope nuance: figures are shown next to what Veqen recorded for the same month. But it is a noun phrase with no verb, never says it returns a list, and gives no differentiation from adjacent tools like reconciliation_status, month_end, or compare_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling covers a related need. An agent must infer from the name alone whether this or reconciliation_status is the right call for month-end comparison work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_budgetsList budgetsARead-onlyIdempotentInspect
Every budget, what's been spent against it this period, and who's closest to the limit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and closed-world, so the safety profile is fully covered by structured data. The description adds modest value by hinting the response is ranked toward limit proximity and scoped to the current period. It does not discuss scoping (all budgets org-wide?), ordering guarantees, or freshness of spend data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero padding, and the most decision-relevant payload ('who's closest to the limit') is placed last for emphasis. Nothing repeats the name or title verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema, and full annotation coverage, very little burden remains on the description, and it does describe the shape of the answer at a high level. The one gap is scope: it never says whether results cover the whole account or a single team/member, which for a 'list every budget' tool is worth one clause.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate — baseline 4 applies. It correctly implies a no-filter, return-everything call rather than suggesting any hidden inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (budgets) and specifies the payload precisely: spent this period and proximity to the limit. It is clearly a read/list operation and cannot be confused with mutation siblings like set_budget or delete_budget. It stops short of an explicit verb and never names an alternative, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent infers you call this to survey budget status. There is no statement of when to prefer it over get_spend, forecast_spend, or credits_expiring, and no exclusions or prerequisites. Adequate for an obvious zero-arg list tool, but no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_claimsList refund claimsBRead-onlyIdempotentInspect
Refund claims on incidents, newest first, with what was claimed and credited.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the sort order ('newest first') and a preview of returned content, but says nothing about pagination behavior or how many records come back per page, despite an offset parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight clause with zero filler, and the key scoping facts (resource, ordering, content) are front-loaded. It is a fragment rather than a full sentence, but that costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary, and annotations cover the safety profile. What remains missing is pagination guidance for the offset argument, which is the one non-obvious thing an agent needs before calling this tool repeatedly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'offset' parameter, so the description must compensate and it does not. It never mentions paging, offsets, defaults, or maximums, leaving the only argument undocumented anywhere an agent will read it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Refund claims on incidents') and adds scope ('newest first') plus return content ('what was claimed and credited'). It distinguishes itself reasonably from siblings like list_incidents and list_credits by narrowing to refund claims, though it never explicitly names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies by describing the domain (refund claims on incidents), but gives no explicit when-to-use/when-not guidance or pointer to siblings such as update_claim or list_credits. 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_connectionsConnectionsARead-onlyIdempotentInspect
Each AI provider and coding tool whose billing or usage Veqen can read, the fields it needs and how to get them, and whether it's connected and working.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the returned content — per-provider credential fields, acquisition instructions, and live connection status. It adds some value but says nothing beyond annotations about scope (all providers vs. only connected ones) or freshness/caching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource and packs in the three return concerns (availability, required fields, connection state). No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a full output schema, and read-only annotations, the definition needs only to communicate what the listing contains and why an agent would call it — which it does. The only gap is that it doesn't clarify whether unconnected providers are included or point to the sibling that performs the connection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there are no parameter semantics to explain. The phrase 'the fields it needs and how to get them' refers to returned data rather than inputs, which is consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource — AI providers and coding tools whose billing Veqen can read — plus the extra data returned (required fields, how to obtain them, connection status). It is a noun phrase rather than a verb phrase, so it reads as a description of results rather than an action, but combined with the name an agent can identify what it returns. It implicitly distinguishes itself from connect_provider/disconnect_provider, which act rather than list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this tool versus connect_provider, disconnect_provider, or list_provider_keys. No prerequisites, no exclusions, no routing guidance — the agent must infer from the name that this is the 'what can I connect and what is already connected' inventory call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_creditsList provider creditsARead-onlyIdempotentInspect
Credits held with AI providers: how much is used, what's left, and when each expires.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and idempotency profile is fully covered. The description adds the scope of the returned data (used, remaining, expiry) but says nothing about ordering, empty-result behavior, or whether it aggregates across all providers. With annotations carrying the behavioral load, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the resource and then the three data points. Every clause earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the annotations cover safety semantics. For a zero-argument read, the description is nearly sufficient. The one real gap is the missing contrast with credits_expiring, which is the primary selection risk for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The schema is empty and fully self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific resource (credits held with AI providers) and enumerates the returned facets: usage, remaining balance, and per-credit expiry dates. That is far more informative than the tautological title. It stops short of distinguishing itself from the sibling credits_expiring, which covers adjacent ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of any alternative. An agent must infer on its own whether to call this or credits_expiring when the question is about expiration timelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incidentsList incidentsARead-onlyIdempotentInspect
Incidents in one state (open by default): spend nobody on the team made, runaway or possibly stolen keys, and overcharges, with the key, amount and the reasons each was flagged. act_on_incident shuts the key off or settles it.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | open | |
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety needs no restatement. The description adds real value beyond them by describing what is in each returned item and noting the default state filter, but it is silent on result volume, pagination, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the scoping filter front-loaded before the detail of what records contain. The list of incident types is somewhat run-on and could be tightened, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be explained, and annotations cover the safety profile. What remains essential for correct invocation — the state filter, its default, and the pointer to act_on_incident for remediation — is all present; the only omission, offset paging, is minor for a list tool whose default view is open incidents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains the state filter and its default but never enumerates the accepted values (open/contained/resolved/expected), and the offset parameter for paging is not mentioned anywhere in the description. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (incidents) plus the scope (one state, open by default) and enumerates the three incident types it returns: unaccounted spend, runaway/stolen keys, and overcharges. It also states what each record carries (key, amount, flag reasons), which lets an agent distinguish it from act_on_incident or get_incident without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Incidents in one state (open by default)' establishes the browsing context, and the closing sentence routes action-taking to act_on_incident, so the read-vs-act split is explicit. It does not mention the other sibling options (get_incident, incident_evidence) for drilling into a single case, so the routing guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList membersARead-onlyIdempotentInspect
Everyone in the organization with their role, and pending invitations (for owners and admins).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish this as a safe, read-only, idempotent, closed-world operation. The description adds useful behavioral context beyond annotations by disclosing that pending invitations are included for owners and admins, indicating role-dependent visibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the main result: organization members and their roles. It also appends the important role-gated invitation detail without unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with annotations covering safety and an output schema covering return values, the description is nearly complete. It states the organization scope, returned member/role information, and role-gated pending invitations, though it could be slightly more explicit about what non-owner/admin callers see.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description does not introduce any confusing parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the returned resource: organization members with their roles, plus pending invitations. It is specific enough to distinguish this from mutation tools like invite_member, but it does not explicitly contrast itself with other list/read tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content: it is the tool for viewing members and pending invitations. It notes that pending invitations are visible to owners and admins, but it does not explicitly say when to use this versus sibling tools such as get_account or invite_member.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList modelsBRead-onlyIdempotentInspect
Current models in the price book, cheapest first, for one provider or one kind: text, embedding, realtime, image, video, speech, transcription, rerank or ocr.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| provider | No | ||
| include_retiring | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnly and idempotent annotations already establish the safety profile, so the lower bar applies. The description usefully adds ordering ('cheapest first') and scope ('Current models'), but it does not explain the effect of include_retiring, pagination behavior, or what 'current' excludes beyond the default flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the resource, ordering, and filter scope without wasted words. The enumeration of kinds is compact and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the parameter gaps remain significant: limit and include_retiring are undocumented despite zero schema descriptions. The absence of sibling differentiation also leaves the agent without enough context to route correctly among the many model-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden, yet it only covers provider and kind, and for kind it merely repeats the enum values already in the schema pattern. It says nothing about 'limit' or 'include_retiring', leaving two of four parameters semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Current models in the price book') and adds ordering ('cheapest first') plus filtering scope ('one provider or one kind'). It distinguishes itself implicitly from siblings like get_model_price and compare_models, though it does not name those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through filter criteria ('for one provider or one kind') but never states when to choose this over compare_models, get_model_price, or simulate_workload. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_provider_keysList provider keysBRead-onlyIdempotentInspect
Every key Veqen sees at the organization's AI providers, with its owner, status and the flags that make it risky (unused for 30 days, its owner left, open to any API). Needs an owner, admin, finance or security member.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description is not carrying the full safety burden. It adds useful context by naming the permission requirement and defining the specific risk flags returned, though it does not mention pagination or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core resource and scope, then adds the risk-flag parenthetical and access requirement. It is efficient and every sentence adds information, though the permission sentence could be packaged slightly more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description does not need to explain return values, yet it still adds value by naming the owner, status, and risk flags. The main omission is pagination behavior for the offset parameter, which an agent would need to page through keys reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single offset parameter, and the description does not mention offset, pagination, or what the offset is relative to. The parameter is standard, but the description fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and scope: every provider key the organization's AI providers expose to Veqen, including owner, status, and risk flags. It does not explicitly differentiate itself from sibling list tools such as list_members or list_models, but the purpose is understandable without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is an access prerequisite: the caller needs an owner, admin, finance, or security member. There is no stated when-to-use condition, no exclusion, and no comparison to alternative tools, so an agent gets no routing help beyond the permission note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_your_pricesList your pricesARead-onlyIdempotentInspect
Discounts and prices the organization set, used instead of published prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds the meaningful context that these values override published prices, but is silent on fallback behavior (what is returned for a model with no custom price) and on scope of what is listed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no waste, and the key differentiator (org-set vs published) is front-loaded. It lacks an explicit action verb, which costs it a point for an agent scanning for 'what does this do'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema present, and full annotation coverage, the definition needs only to identify the resource and its relationship to published pricing — both are stated. The one remaining gap, what is returned for models without an org price, is minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline applies. No misleading parameter language is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely — organization-set discounts and prices — and contrasts it with published prices, which distinguishes it from a sibling like get_model_price. The verb 'list' comes only from the tool name, not the description, but the resource semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Used instead of published prices' implies this is the preferred source for contract/discounted rates, giving an implicit when-to-use signal. It never names get_model_price as the alternative for list-price lookups, nor states what happens when no custom price exists, so the routing guidance stays inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_personSay who a tool's name isCInspect
Matches a name or id a coding tool reports (from teams_and_people, show matching) to a person's email.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | ||
| Yes | |||
| external_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, so this is a mutating, non-idempotent operation, yet the description reads like a lookup and never says what record is written or what happens on a repeat call. With annotations only carrying generic safety flags, the description should disclose whether an existing match is overwritten and what preconditions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, though the embedded parenthetical is grammatically awkward and slightly obscures the subject.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a non-idempotent mutation the description omits what is created or changed, whether the match persists beyond the call, and how conflicts are resolved. That leaves an agent unable to predict the effect of invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does loosely map all three parameters: tool (the coding tool), external_id (the name or id it reports), and email (the person's address). It nonetheless adds no constraint detail such as the 16-character limit on tool or whether tool is a slug from coding_tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ("matches") and a specific resource (an external name/id reported by a coding tool) resolved to "a person's email", which is more concrete than the title's awkward "Say who a tool's name is". However, it never clarifies what "matching" produces or persists, and it does not distinguish this from siblings like set_key_owner or teams_and_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical "(from teams_and_people, show matching)" hints at where the input originates, which implicitly tells the agent to call teams_and_people first. There is no explicit when-to-use vs. when-not guidance and no named alternative for other ownership paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
month_endMonth-end entriesARead-onlyIdempotentInspect
A month's journal entries for AI costs (period YYYY-MM): approved and frozen, or what they'd be if approved now, and whether every connected provider has reported. Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the description earns credit for adding what they don't cover: the required role (owner, admin or finance) and the fact that results include a hypothetical approval projection plus per-provider reporting coverage. It doesn't mention cost or latency of the projection, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the resource and period before the two modes and the permission requirement. Every clause carries information; it is slightly overloaded but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return shape and annotations covering safety, the remaining gaps an agent needs — period format, the two content modes, provider-coverage signal, and the role requirement — are all present. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does partially by restating the period as a YYYY-MM month, which explains the meaning behind the pattern. It adds no detail on whether period must fall in the past or how the hypothetical projection is selected relative to a period.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a month's journal entries for AI costs) and the scope (a single YYYY-MM period), and distinguishes the two content modes: settled approved/frozen entries versus a hypothetical projection. It never states the retrieval verb explicitly and does not name a sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Needs an owner, admin or finance member" gives a real prerequisite, and the approved-vs-hypothetical framing implies when the tool is useful. However, it never states when to prefer this over siblings like approve_month or reconciliation_status, so the when-to-use 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.
month_end_actionsMonth-end actionsAInspect
action policy (how costs are booked; send policy, in the shape it comes back, to change parts of it), reopen or true_up (period YYYY-MM: post a correction to the invoice). Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| period | No | ||
| policy | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds real value on top: the authorization requirement ('Needs an owner, admin or finance member') and the round-trip instruction to send the policy 'in the shape it comes back.' These are non-obvious operational details an agent would otherwise miss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is compact and leads with the action keyword, but it is a single run-on sentence packed with nested parentheses that takes effort to parse. The information is useful but the structure hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema and annotations covering safety, the description supplies the key missing pieces: permission requirements, the three action modes, and the period format. Return-value explanation is unnecessary given the output schema. Minor gap: no note on non-idempotency or side effects of reopening a period.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden. It does explain the action enum values, the period format (YYYY-MM), and the intent of the policy object ('send policy, in the shape it comes back'), but the policy payload shape remains opaque and nothing explains what happens when period is omitted or which action requires which optional param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the three concrete action values (policy, reopen, true_up) and what each does at a high level, so an agent can tell this is a month-end mutation dispatcher. The phrasing is dense and parenthetical ('action policy (how costs are booked; send policy, in the shape it comes back...)'), which slightly obscures the top-level purpose, but the verb+resource is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implicit routing: 'policy' for booking costs, 'reopen or true_up' for posting a correction to the invoice. However, it never distinguishes reopen from true_up, nor does it point away from close siblings like month_end, approve_month, or reconciliation_status. Usage is implied rather than stated with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
organizationThe organizationCInspect
action get (name, plans, your role, the Get started checklist), rename (name), set_track (track: coding, audit or sdk), audit_log (who changed what; paid plans), leave (you leave; your full keys stop working), delete_code (emails the owner a code) or delete (owners: confirm set to the exact name, and the challenge and the code the owner reads you from that email; can't be undone). Confirm before leave or delete.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| name | No | ||
| track | No | ||
| action | No | get | |
| confirm | No | ||
| challenge | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the destructiveHint: false annotation by stating that delete 'can't be undone' and leave causes 'your full keys stop working'. This is a clear annotation contradiction, warranting the lowest score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one long, dense sentence with nested parentheses. It is information-dense but poorly structured for quick scanning; a bulleted list would improve readability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and 7-action tool, the description covers the core actions and critical parameter meanings (confirm, code, challenge). However, the annotation contradiction undermines behavioral clarity, and some action details (e.g., rename constraints, set_track effect) are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It adds meaning for confirm (exact name), code (from email), challenge (from email), and track (three values), but leaves the action parameter only enumerated and doesn't explain the name parameter's role in 'get' or 'rename' beyond listing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates all seven actions with brief parenthetical details, making the tool's scope (organization management) clear. It doesn't explicitly differentiate from siblings like teams_and_people or access, but the action list is specific enough to distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use each action (e.g., audit_log is for paid plans, leave stops keys from working, delete requires owner confirmation) but provides no explicit guidance on when to choose this tool over alternatives 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.
person_monthOne person's monthCRead-onlyIdempotentInspect
One person's work and coding agent month (an email, or tool:id for someone not matched yet): each tool at the contract, day by day, their limit and their requests for more.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | ||
| person | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description contributes the response shape (per-tool, day-by-day, limits and limit requests), which is real added context, but it does not say what happens when the person is unmatched or how the default month is resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no padding, and the subject (one person's month) is front-loaded. But the clause structure is tangled — 'each tool at the contract, day by day, their limit and their requests for more' — which costs clarity rather than saving space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and annotations cover safety. Still, for a reporting tool in a 50+ sibling set, the description leaves the default month behavior and the unmatched-person path underspecified, which are exactly the details an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It does explain the non-obvious 'person' format (an email, or tool:id for unmatched people), which the schema does not. However, the 'month' parameter is never addressed — no mention of the YYYY-MM format or what a null default means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It conveys a per-person monthly view of tool usage against contract limits, which does separate it from org-wide siblings like coding_agent_spend or get_spend. But there is no clear verb, and 'each tool at the contract, day by day, their limit and their requests for more' is dense and ambiguous — an agent has to guess whether it returns usage, contract terms, limit requests, or all three.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no named alternative (e.g. vs. coding_agent_spend, month_end, or teams_and_people). The aside 'tool:id for someone not matched yet' hints that match_person may be a prerequisite, but that inference is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_costsPlan costs at your pricesBRead-onlyIdempotentInspect
Like simulate_workload, but at the organization's own prices: its discounts and the prices it set.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| months | No | ||
| growth_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description does add one genuinely useful behavioral fact: output depends on org-specific discounts and configured prices, so results will differ from list-price estimates. It says nothing about line/month caps, growth modeling, or how missing prices are handled — real concerns for a planning tool with a 25-line, 36-month ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero waste, and the differentiating clause (own prices, discounts) is placed immediately after the sibling reference. It is arguably too terse for the schema's complexity, but that under-specification is penalized in parameter and contextual scores, not here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema and annotations cover return shape and safety, but the input side is a nested workload-line structure with ten fields and three completely undocumented top-level parameters. For a planning tool whose correctness hinges on building valid lines (model plus calls/tokens/units), one clause of prose is not enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level: 'lines', 'months', and 'growth_pct' carry no descriptions anywhere, so the description must compensate and does not. Nothing explains that a line is a per-model workload entry (calls, tokens, units, batch, variant), nor what months and growth_pct do to the projection. Only a few deeply nested Line fields have inline descriptions, which the top-level prose never touches.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states precisely what this tool does relative to a known sibling: it projects costs using the organization's own negotiated discounts and configured prices rather than list prices. That contrast makes it distinguishable from simulate_workload. It stops short of a full verb+resource statement (nothing says it produces a multi-month, multi-line cost plan from a workload spec), so it is clear but not complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By framing itself as 'like simulate_workload, but at the organization's own prices,' it names the alternative and the condition that selects it — an agent can route between the two without opening either schema. It gives no guidance against other cost-adjacent siblings (get_spend, forecast_spend, compare_models, list_your_prices), 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.
price_from_billPrice a provider from its billAInspect
Sets a price per million tokens for that provider's models from a whole month's bill (bill_id from list_bills) and what they served.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write operation (readOnlyHint=false, non-idempotent, non-destructive). The description adds that it sets a price per million tokens for the provider's models based on a bill, but does not disclose effects on existing prices, reversibility, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action, no wasted words. The parenthetical for bill_id is efficient and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and annotations covering safety profile, the description adequately covers what the tool does and where the parameter comes from. It could further clarify side effects (e.g., overwriting existing prices), but it is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (bill_id) with 0% schema description coverage. The description compensates by explicitly naming its source (list_bills) and implying it refers to a whole month's bill, adding meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (sets a price), resource (per million tokens for provider's models), and source (whole month's bill). It clearly distinguishes from set_price by deriving pricing from a bill, though it does not explicitly name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context for when to use it: from a whole month's bill with bill_id from list_bills. However, it does not state when not to use it or compare to alternatives like set_price or get_model_price.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protection_settingsProtection settingsBRead-onlyIdempotentInspect
Which providers Veqen has shut-off access for, what each rule does when it fires, and the two-person shut-off and pooled-patterns options.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds content scoping (what categories of settings are reported) but nothing about freshness, permissions, or whether output reflects live or configured state; it is consistent with, not contradictory to, the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the most important content (which providers are shut off) comes first. The grammar is slightly awkward ('the two-person shut-off and pooled-patterns options'), but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, full annotations, and an output schema handling return values, the description only needs to say what domain of settings is returned, which it does. A brief note that this is the read-only view of protection rules would make it airtight, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names concrete content areas (which providers have been shut off, what each rule does when it fires, two-person shut-off and pooled-patterns options), which tells an agent roughly what data is behind the tool. But it is a noun-phrase list with no verb ('returns', 'lists', 'shows'), so the operation itself is only implied, and it does not acknowledge the obvious mutation sibling change_protection_settings or shut_off_key/confirm_shut_off.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no exclusions. An agent must infer on its own that this is the read counterpart to change_protection_settings and that it should be consulted before calling shut_off_key or confirm_shut_off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconciliation_statusReconciliation statusBRead-onlyIdempotentInspect
Tracked spend against what OpenAI and Anthropic billed: capture rate, untracked spend and the models that differ most.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds substantive context beyond this by stating what the report measures (capture rate, untracked spend, top diverging models). It does not mention the lookback window behavior, which would have earned a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core comparison and then lists the metrics. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the unexplained 'days' window and the absence of any sibling routing leave material gaps for a comparison tool surrounded by overlapping cost-reporting siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter ('days') with 0% schema description coverage, so the description bears the burden of explaining it. The description never mentions a time window, default of 30, or the maximum of 90, leaving the agent to infer the period's effect on results from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('tracked spend against what OpenAI and Anthropic billed') and enumerates the three outputs (capture rate, untracked spend, models that differ most), so the agent knows exactly what it returns. It does not, however, differentiate itself from close siblings like get_spend, get_customer_cost, or compare_models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to choose this tool over get_spend, get_customer_cost, or compare_models, nor any stated prerequisites or exclusions. The outputs hint at a reconciliation use case, but the agent must infer that from the result list rather than from any routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_agent_actionsRecord what agents didBInspect
Actions agents took with money, told after the fact (each {agent, amount, currency, payee, purpose, rail, kind, card, run, action_id, at}), up to 1,000. Matched to card and account transactions. Idempotent by action_id.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral value — it discloses the 1,000-item ceiling and that entries are 'matched to card and account transactions,' which the annotations do not say. But 'Idempotent by action_id' directly conflicts with the declared idempotentHint=false, giving the agent two opposing signals on the single most consequential replay-safety question. The description also never states what happens to unmatched entries or whether the call is all-or-nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose before the field list and constraints. The parenthetical field enumeration is dense but necessary given the empty item schema, so it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers scope, batch cap, matching, and item shape. It is missing error/partial-failure semantics and required-field guidance, which matter for a write tool ingesting up to a thousand records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the item schema is an untyped object with additionalProperties: true, so the schema alone tells an agent nothing about what to put in each element. The description compensates by enumerating the expected keys (agent, amount, currency, payee, purpose, rail, kind, card, run, action_id, at), which is essential information. It stops short of marking which of those keys are required or giving types/formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ('actions agents took with money') and the temporal stance ('told after the fact'), so an agent can tell this is a retrospective batch-reporting tool rather than a live lookup. It does not explicitly differentiate itself from near-name siblings such as agent_action or month_end_actions, leaving that inference to the reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Told after the fact' implies this is for back-filling already-completed spend events, which is a usable usage cue. However, there is no explicit when-to-use versus agent_action/month_end_actions/import_csv, and no stated prerequisites (e.g., must the card or run already exist before an action can be matched?).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saved_viewsSaved viewsBInspect
action list, or save (name, group_by, start, end, filters, and schedule to email it) a breakdown for the signed-in person.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | YYYY-MM-DD | |
| name | No | ||
| start | No | YYYY-MM-DD | |
| action | No | list | |
| filters | No | ||
| group_by | No | provider, model, customer, feature, user, project or environment | |
| schedule | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is largely covered. The description adds real value by disclosing the side effect of scheduling an email ('schedule to email it'), which annotations do not capture. It does not say whether saving under an existing name overwrites it (relevant given idempotentHint=false) or that saving persists state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything is packed into one sentence with no filler, and the action distinction is front-loaded. The phrasing is slightly awkward ('action list, or save (...) a breakdown'), which costs a point on readability but not length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the parameter enumeration is complete. Still missing for a 7-param, two-mode tool: what the breakdown measures, whether name is required for save, and what schedule accepts. Adequate but with material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, so the description must compensate — and it does, naming every parameter (name, group_by, start, end, filters, schedule) and clarifying that schedule means 'email it' and that the listed fields are the saved-view definition. It stops short of explaining filter key/value semantics or the schedule string format, which remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb pair (list / save) and a resource ('a breakdown for the signed-in person'), so the dual-mode nature of the tool comes through. However, it never says what is being broken down (spend? usage?) and the phrase 'action list, or save' is grammatically tangled, leaving the resource under-specified. No sibling is named to differentiate it from get_spend or coding_agent_spend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance: nothing says when to pass action=save versus the default list, or when a saved view is preferable to calling get_spend directly. The only implicit signal is the name of the action values themselves. With ~70 sibling tools in the same server, this omission matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seatsUnused seatsBRead-onlyIdempotentInspect
Coding-tool seats nobody used for 30 days, and seats people who left still hold, with what each costs a month.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description's only additional behavioral content is the fixed 30-day lookback window, which is useful scoping but thin; it says nothing about whether results are per-member or aggregated, or how departed-employee status is determined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the two data categories are stated before the cost dimension. The phrasing is slightly awkward (opens with a noun phrase rather than a verb) but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations are rich, so the description needn't explain returns or safety. However, in a sibling list of ~60 billing tools with several overlapping waste/savings tools, a definition with no routing guidance leaves a meaningful gap for a zero-argument reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is no parameter surface to explain; the baseline is 4. The description usefully clarifies that the 30-day window and cost figures are implied by the call rather than passed as arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely names the two populations of data returned (seats unused for 30 days, seats still held by departed people) plus the monthly cost dimension, which nothing in the title conveys beyond 'Unused seats'. It lacks an explicit verb/resource framing ('seats' is a bare noun), and it does not distinguish itself from near-neighbors like coding_tools, free_audit, or get_savings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use statement, no prerequisites, and no mention of alternatives, even though siblings such as free_audit, get_savings, and coding_tools plausibly overlap with a waste/reclaim analysis. The agent must infer the use case from the data described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_agent_policySet an agent's mandateAInspect
What an agent may spend without a person (agent '*': the default for agents without their own): per_action_usd (refused above), monthly_usd and approval_over_usd (a person approves above), merchants (payees it may pay on its own; empty: any), blocked (never), paused, auto_freeze (freeze its cards when an incident needs action; the protection role). Only the fields given change; a limit of 0 removes it. remove true deletes it. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| agent | Yes | ||
| owner | No | ||
| paused | No | ||
| remove | No | ||
| blocked | No | ||
| merchants | No | ||
| auto_freeze | No | ||
| monthly_usd | No | ||
| per_action_usd | No | ||
| approval_over_usd | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring the mutation/idempotency profile, the description adds genuinely new behavior: merge semantics (“Only the fields given change”), zero-as-deletion for limits, whole-policy removal via remove=true, and a required user confirmation. It omits permission/ownership requirements and the blast radius of changing a policy while actions are in flight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense but front-loaded paragraph where nearly every clause carries a distinct field rule; nothing is redundant filler. It is compressed to the edge of readability in places (“the protection role”, “never” as a standalone gloss for blocked).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with an output schema (so return values needn't be explained), it covers merge behavior, deletion, defaults, and the confirmation step. The remaining gap is that owner/note are unaddressed and there is no cross-reference to overlapping sibling tools, which matters for a policy tool in a crowded policy surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it defines 9 of 11 parameters in concrete terms (per_action_usd “refused above”, approval_over_usd “a person approves above”, empty merchants = any, '*' default, 0 removes). It never explains owner or note, and its parentheticals are telegraphic, but it substantially compensates for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens by defining the actual mandate (“What an agent may spend without a person”) and enumerates the specific knobs the policy controls, so the resource and effect are unmistakable. It never names a sibling it differs from, however, leaving the agent to distinguish it from set_budget, limits, or change_protection_settings on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through field semantics; there is one procedural instruction (“Confirm with the user first”) but no statement of when to pick this over the many adjacent policy tools (set_budget, protection_settings, agent_cards). The '*' default hint gives partial routing help but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_agreementRecord an agreementAInspect
Records an AI vendor agreement, or replaces one's terms (agreement_id from vendors view agreements). Only the vendor and dates are needed; commitment, tiers, notice and overage are optional. Reminders go out before the notice date. Confirm first.
| Name | Required | Description | Default |
|---|---|---|---|
| terms | Yes | ||
| agreement_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's marginal job is behavior beyond that. It does add two useful facts: reminders are generated before the notice date, and the operation needs confirmation. It does not say what happens to existing fields when terms are replaced — full overwrite vs merge — which matters most for an update path that is explicitly not idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose and the create/replace fork. The parenthetical '(agreement_id from vendors view agreements)' is compact but slightly telegraphic; otherwise no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with an output schema (so return values need not be described), the description covers required vs optional inputs, the update handle, a side effect (reminders) and a confirmation requirement. The remaining gap is replace semantics on existing fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is effectively 0% for terms/agreement_id, so the description must compensate, and it does: it separates the minimal required set (vendor and dates) from the optional set (commitment, tiers, notice, overage) and sources agreement_id. It omits semantics for several optional fields such as covers, overage_pct and price_new_spend, which remain only in the nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Records an AI vendor agreement') and additionally names the replace/update mode keyed on agreement_id. An agent can distinguish it from sibling tools like set_contract and vendors without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the create-vs-replace condition (pass agreement_id to replace existing terms) and points at where that id comes from ('vendors view agreements'). 'Confirm first' adds a workflow precondition. No explicit when-not or named alternative beyond the pointer to vendors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_alertsWhere alerts goAInspect
channel slack, protection_slack (incidents and misuse go there instead) or webhook (a new signing secret comes back once), with url; an empty url turns it off. channel test sends a test alert everywhere.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-idempotent, non-destructive mutation. The description adds important behavior beyond that: webhook registration returns a new signing secret once, empty url turns alerts off, and test broadcasts a test alert. It does not mention auth requirements or persistence scope beyond the test description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the channel choices, with no wasted words. However, the telegraphic fragment structure ('channel slack...') is slightly harder to parse and omits an explicit subject or verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter configuration tool with an output schema and annotations, the description covers the important modes, url behavior, webhook side effect, and test behavior. An agent has enough to select the right channel and set or clear the destination correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It fully explains the channel values (slack, protection_slack, webhook, test) and the url semantics, including that url accompanies webhook setup and an empty url disables alerts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the alert-routing resource and enumerates the supported channels, so it is clear this configures where alerts are delivered. It is a sentence fragment rather than a clean verb+resource statement, and it does not explicitly name get_alerts as the read-only sibling, but the setter role is still inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance per channel: protection_slack is for incidents and misuse instead of slack, webhook requires a url and returns a new signing secret once, an empty url disables alerts, and test sends a test alert everywhere. It does not explicitly say when not to use it or point to get_alerts for viewing current settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_budgetSet a budgetAInspect
Creates a budget on AI spend. scope is org, customer, feature, user or project; value '' gives every customer (or feature, user, project) its own limit. mode 'alert' notifies at 50/80/100%; 'block' also makes the SDKs refuse matching requests at the limit. scope engineer (value an email, '' or 'team:') or team sets a work and coding agent limit, which 'block' pushes into each tool that takes one. Needs an owner or admin.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | alert | |
| name | Yes | ||
| scope | No | org | |
| value | No | * | |
| period | No | month | |
| limit_usd | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish non-read-only, non-destructive, non-idempotent, closed-world, so the description usefully spends its words on the side effects those hints don't convey: 'block' causes SDKs to refuse matching requests and pushes limits into each downstream tool that accepts one, and the call requires owner/admin. It doesn't address what happens on a name collision or whether a created budget can be modified vs must be deleted and recreated, which is the notable gap given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with purpose, then scope, then mode, then role requirement — a sensible ordering with no filler. The middle sentences are packed with comma-separated clauses that read as slightly run-on, which costs a point but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so withholding return-value detail is acceptable, and the description covers the semantically hard surface (scope, value, mode, permissions) for a 6-param mutation tool. The unexplained 'period' parameter and the silent behavior on duplicate names are the remaining holes an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description has to carry the load, and it does for the hardest params: it enumerates the scope values, explains that value '*' fans out a limit per entity, and describes the special engineer scope shape ("email, '*' or 'team:<name>'"). It never mentions the period parameter (month|day) or clarifies limit_usd units, so coverage is good but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb+resource: "Creates a budget on AI spend," which is immediately distinguishable from the list_budgets/delete_budget siblings by action. It then goes further by enumerating the scope types the budget can target. It stops short of naming or contrasting any sibling tool explicitly, which keeps it out of the 5 tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real selection guidance for the ambiguous choice: mode 'alert' vs 'block' is contrasted by consequence (notify at 50/80/100% vs SDKs refusing requests at the limit). It also states a prerequisite, "Needs an owner or admin," so an agent knows invocation may fail on role. No exclusions or alternate-tool routing (e.g. vs set_alerts or limits) are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_contractSet a tool's contractCInspect
What the company pays a coding tool from a day (YYYY-MM-DD): plan, seat_usd, seats, unit_usd, discount_pct, included_usd. Costs are priced at it.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| tool | Yes | ||
| seats | No | ||
| seat_usd | No | ||
| unit_usd | No | ||
| valid_from | Yes | ||
| discount_pct | No | ||
| included_usd | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is partly covered. The description adds only 'Costs are priced at it,' which vaguely hints at downstream pricing effects but does not explain overwrite behavior, effective-date semantics, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single sentence with no wasted words, but it is not front-loaded with the core action. The opening phrase 'What the company pays a coding tool from a day' is confusing and delays the actual field list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is an eight-parameter write tool with zero schema description coverage. The description fails to compensate: it does not explain parameter meanings, usage conditions, or the effect of setting a contract, leaving the agent without enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It lists six of eight field names (plan, seat_usd, seats, unit_usd, discount_pct, included_usd) but does not explain their semantics—e.g., the distinction between seat_usd and unit_usd, or what included_usd means. It does clarify valid_from as a YYYY-MM-DD date, but tool is never described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Set a tool's contract' gives a clear verb+resource, but the description is cryptic: 'What the company pays a coding tool from a day' reads as a definition rather than an action. It lists fields but never states that the tool creates or updates a contract record, and it does not differentiate from sibling tools like set_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as set_price, plan_costs, or seats. No prerequisites or exclusions are mentioned, leaving the agent to infer usage context 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.
set_key_ownerSay whose a key isBInspect
Sets a provider key's owner (an email or a service's name) and the coding agent it's for ('' reads it from the key's name, '-' none).
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | ||
| key_id | Yes | ||
| coding_agent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false and idempotentHint=false, so the safety profile is covered. The description adds nothing about overwrite behavior, required permissions, or whether an existing owner is replaced or appended. There is also mild tension between the 'Sets' wording (suggesting idempotent assignment) and idempotentHint=false, though not enough to call a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the primary effect front-loaded and sentinel values tucked into a parenthetical. Nothing is padded, though the parenthetical is dense enough that it may be missed on a skim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the tricky sentinel semantics are documented. Still missing for a write tool: what key_id identifies, what happens when an owner was already set, and whether a null owner clears the field. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden. It does valuable work for 'owner' (email or service name) and especially 'coding_agent' ('' means read from the key's name, '-' means none), which the schema does not convey at all. However, 'key_id' is never explained, and it is unclear whether passing empty string vs '-' vs null differs for owner.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Sets') plus resource ('a provider key's owner') and the two attributes it writes: owner and coding agent. An agent can distinguish it from list_provider_keys and shut_off_key by the fact that it writes metadata rather than listing or deactivating. It stops short of naming a sibling explicitly, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this versus list_provider_keys (inspect keys), access/api_keys (broader key surface), or shut_off_key (disable). There are no preconditions, no exclusions, and no mention of what the caller needs to know before reassigning ownership. Usage has to be inferred 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.
set_priceSet a priceAInspect
Sets the organization's own price for a model (per million tokens, or per unit for image, video, audio and document models), or with model '*' and discount_pct, a discount on a provider. New AI requests use it. Needs an owner, admin or finance member.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| unit | No | ||
| model | No | * | |
| per_unit | No | ||
| provider | Yes | ||
| discount_pct | No | ||
| input_per_million | No | ||
| output_per_million | No | ||
| cached_input_per_million | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring this is a non-read-only, non-idempotent, non-destructive write, the description adds real context: the required role, the fact that only new AI requests pick up the price, and the two distinct write modes. It still doesn't say whether setting a price overwrites an existing one or how conflicting fields are reconciled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, with the primary behavior front-loaded and the discount variant clearly marked by 'or with model *'. The first sentence is dense enough that a bulleted split of the two modes would read faster, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and auth plus effect timing are covered. For a 9-parameter mutation with two disjoint modes and zero schema descriptions, the agent still lacks guidance on valid parameter combinations, the role of the required provider field, and overwrite semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema carries only titles, so the description must compensate, and it does partially: it explains the per-million vs per-unit split and the model='*' + discount_pct pairing. However the required 'provider' parameter, 'note', 'cached_input_per_million', and the mutual-exclusion rules between discount_pct and the price fields are never addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (set the org's own price for a model) and spells out both operating modes: per-token pricing and the model='*' + discount_pct discount mode. It doesn't name which sibling to use instead (e.g. get_model_price for reading, list_your_prices for enumerating), so differentiation relies on the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'New AI requests use it' hints at when the change takes effect rather than when to call the tool, and the admin/owner/finance requirement is a useful prerequisite. There is no explicit guidance on when not to use it or which sibling handles related tasks like reading existing prices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_privacyName people by emailCInspect
Whether Claude Code's telemetry names people by their email (true) or by account id, matched by hand (false).
| Name | Required | Description | Default |
|---|---|---|---|
| email_identity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, non-idempotent, non-destructive mutation. The description adds the meaning of the boolean values but does not describe permissions required, scope of impact, reversibility, or what 'matched by hand' implies operationally. For a privacy-related setting, that is a meaningful gap beyond the safety profile already covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted text. It front-loads the setting semantics, though it could be clearer by starting with the action rather than 'Whether'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one boolean parameter), an output schema exists, and annotations cover safety characteristics, so the description does not need to explain return values. However, it omits that this is a state-changing operation and does not clarify scope or permissions, leaving a modest completeness gap for a privacy-setting mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning, and it does: 'true' means telemetry names people by email, and 'false' means naming by account id. That maps directly to the single required boolean parameter and adds substantial value over the schema's bare type declaration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explains what the boolean setting controls (email vs. account id naming), but it never uses an action verb and does not state that this tool sets or changes a privacy configuration. The tool name 'set_privacy' implies mutation, yet the description reads more like a definition of the setting than a clear statement of the tool's operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to use it, or which sibling tools might be alternatives. The agent is left to infer that this is the right tool for changing telemetry identity settings 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.
set_teamPut someone in a teamBInspect
Puts a person (email) in a team and cost center from a day (YYYY-MM-DD); their earlier days keep their team.
| Name | Required | Description | Default |
|---|---|---|---|
| team | Yes | ||
| Yes | |||
| valid_from | No | ||
| cost_center | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the change is effective-dated and prior days retain the previous team, which is non-obvious. It omits what happens when valid_from is null (default null in schema implies 'today'), whether an existing assignment on the same date is overwritten, and any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no waste, front-loading the verb and resource before the temporal caveat. It is dense but readable; the semicolon clause earns its place by conveying the history-preservation rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the four parameters are at least named. For a mutation tool that writes dated history, the description should clarify null valid_from and overwrite behavior on re-assignment; those gaps keep it at minimum-viable-plus.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It does name all four concepts — email, team, cost center, and the date with its YYYY-MM-DD format — but leaves default/null behavior of valid_from and the meaning of an empty cost_center (default "") undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Puts a person (email) in a team and cost center from a day'), and the temporal qualifier distinguishes it from the plain-membership siblings. It does not explicitly contrast with set_team_manager, but the assignment semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader can infer this is for setting team/cost-center membership effective from a date. There is no explicit when-to-use guidance, no mention of set_team_manager, change_member, or teams_and_people as alternatives, and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_team_managerThe teams someone managesBInspect
Sets the teams a member (user_id from list_members) manages: they see those engineers' cost and hear about spikes.
| Name | Required | Description | Default |
|---|---|---|---|
| teams | Yes | ||
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this mutates state, is not destructive, and is explicitly not idempotent; the description adds real meaning by explaining what 'manages' buys the member (cost visibility, spike notifications). It does not resolve the biggest ambiguity the annotations raise: with idempotentHint false, does this replace the member's current team list wholesale or merge into it? Nor does it mention permissions or blast radius.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and the resource, with the effect clause appended after the colon. No filler. Slightly dense but nothing to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description does not need to describe returns. What is still missing for a two-param mutation is the replace-vs-merge semantics and the format/meaning of team entries, both of which an agent needs before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It explains user_id well (an integer obtained from list_members), but the teams array -- the core payload, capped at 200 items with 80-char strings -- is never described: no indication whether these are team names or identifiers, what happens with unknown teams, or what an empty array means. Half the parameters, including the one carrying the write, are undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: sets which teams a member manages, and explains the consequence (visibility into those engineers' cost, spike alerts). That consequence sentence also separates it from the sibling set_team, which is about teams themselves rather than the manager relationship. It stops short of explicitly naming the nearest siblings (set_team, change_member).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Points the agent at list_members as the source for user_id, which is genuinely useful routing. But there is no statement of when to use this vs set_team or change_member, and no prerequisites such as admin rights or whether the user must already be a member.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shut_off_keyShut a provider key offADestructiveInspect
Turns a provider key (an id from list_provider_keys) off at its provider, or back on (action restore). Needs shut-off access for that provider. Where the provider can only delete keys, it fails until confirmed is true: say so to the user, since that can't be undone. With two-person shut-off on, the result is 'waiting' for a second owner, admin or security member (confirm_shut_off). Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | disable | |
| key_id | Yes | ||
| confirmed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/openWorld but the description supplies the operational detail they can't: the confirmed=true gate for delete-only providers, the irreversibility warning, the 'waiting' outcome under two-person shut-off, and the required reviewer roles. This is exactly the extra context an agent needs before a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each sentence carries distinct information (access, delete-only confirmation, two-person flow), front-loaded on what the tool does. The trailing 'Confirm with the user first' is a global instruction placed after a case-specific one, a minor ordering weakness in an otherwise dense, waste-free description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world mutation with an output schema, the description covers permissions, irreversibility, the confirmation gate, and the human-approval workflow. Nothing an agent needs to call it safely is missing, and return values are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description must carry the parameters, and it does: key_id is sourced from list_provider_keys, action is explained via 'restore', and confirmed's gating semantics are spelled out. The default (disable) is only implied rather than stated, keeping it just below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Turns a provider key ... off at its provider') and covers the inverse operation ('or back on (action restore)'). It also names the sibling that supplies the id (list_provider_keys), so the agent can distinguish it from delete/disconnect-style siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear prerequisites (shut-off access per provider), a routing instruction for the two-person case (confirm_shut_off), and an explicit 'Confirm with the user first' rule. It falls short of a full 5 because it never states when not to use this tool (e.g., vs. deletion or waiting_shut_offs) beyond the implicit failure path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_workloadSimulate a workloadARead-onlyIdempotentInspect
A month of calls across any mix of models, at list prices: each line's cost per call and per month, the total, a projection with monthly growth, where each line ranks among every current model of its kind, the same model on other hosts, and cheaper models from the same provider. Usage is per call.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| months | No | ||
| growth_pct | No | Volume growth, percent a month |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: costs are at list prices (no discounts), the projection assumes monthly growth, and results are comparative (rank among current models, other hosts, cheaper alternatives).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero filler, leading with what the tool does. The trailing appositive enumerating every output is long and partly duplicates the output schema, but it stays information-dense rather than rambling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description only needs to convey purpose and pricing/projection assumptions, both of which it does. Parameter-level detail gaps are the schema's responsibility here, so nothing critical for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so more burden falls on the description, and it does clarify that calls and units are per call and that growth is a monthly projection. However, it says nothing about the months horizon, the 25-line cap, batch, variant/provider, or token fields, leaving most parameters to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — simulating a month of calls across models at list prices — and enumerates the outputs it produces. It clearly separates itself from pure price lookup, but it never names a sibling like compare_models or estimate_switch to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by "a month of calls across any mix of models, at list prices," so an agent can infer this is for cost/volume planning. There is no explicit when-to-use, when-not-to-use, or routing to compare_models / estimate_switch / get_model_price, all of which live in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
single_sign_onSingle sign-onBInspect
action get, link (domains: your company's email domains), portal (intent sso, domain_verification or dsync: a WorkOS link for whoever administers the identity provider), refresh (read domain verification) or save (enforced, default_role, groups: directory group to role). Changes are for owners. Confirm before requiring SSO.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | get | |
| groups | No | ||
| intent | No | sso | |
| domains | No | ||
| enforced | No | ||
| default_role | No | member |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as not read-only, not destructive, and non-idempotent. The description adds useful behavioral context beyond annotations: 'Changes are for owners' discloses an authorization requirement, and 'Confirm before requiring SSO' warns about a consequential action. It still does not explain per-action side effects or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense run-on sentence with nested parentheticals, making it hard to parse. It is short, but the structure is poor and the action semantics are not front-loaded or easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with six parameters and no schema descriptions, the description provides only partial context. It does not explain which parameters are required for which action, what each action returns or changes, or the default behavior of get. An output schema exists, so return-format explanation is not required, but action-level completeness is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It partially does: domains are tied to company email domains, groups are tied to directory group-to-role mapping, and intent is tied to portal modes. But enforced and default_role remain unexplained, and the action-to-parameter relationships are only implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists the five action values (get, link, portal, refresh, save) and parenthetically hints at what each does, but never states a clean top-level purpose like 'manage SSO configuration.' An agent can infer this is an SSO management tool, but the action prose is fragmented and does not clearly distinguish it from siblings such as access or organization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical action hints imply when each action applies, and 'Changes are for owners. Confirm before requiring SSO' gives a permission and caution note for save. However, there is no explicit when-to-use versus alternatives guidance, and the action routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teams_and_peopleTeams, people and contractsARead-onlyIdempotentInspect
show teams (who is in which team and cost center, and who manages which), matching (tool names not matched to an email, with likely emails), contracts (what the company pays each tool) or privacy (how people are named).
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | teams |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotent, and non-destructive, so the safety profile is covered and the description needn't repeat it. The description adds some useful texture — notably that 'matching' surfaces inferred 'likely emails' — but says nothing about scope limits, whether unmatched results are exhaustive, or how the modes differ in volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loaded on the primary mode ('show teams'). The four-way parenthetical list makes it dense and slightly run-on, but every clause adds a distinct mode rather than repeating itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and annotations cover the read-only profile. With one optional parameter whose values are all defined in the description, the definition is essentially complete; only cross-routing to the sibling setters is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the 'show' property has no description, so the description must carry semantics — and it does, by defining each of the four valid values (teams, matching, contracts, privacy) in the same order as the schema pattern. It does not name the default of 'teams', but the schema supplies that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It uses a specific verb ('show') and then enumerates four concrete data views with their contents — team/cost-center membership, manager assignment, unmatched tool names with likely emails, per-tool spend, and naming conventions. That is far more specific than a generic listing tool. It stops short of distinguishing itself from siblings like list_members, match_person, or set_contract, so an agent still has to infer boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four parenthetical expansions imply when each mode is appropriate, which is enough to pick a value. However there is no explicit guidance such as 'use this for read-only inspection; use set_team/set_team_manager/set_privacy to change anything', nor any exclusion of overlapping siblings like list_members or match_person.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_claimUpdate a refund claimBInspect
Marks a claim submitted, credited (with credited_usd, which then counts in provider credits and the close) or denied.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| state | Yes | ||
| claim_id | Yes | ||
| credited_usd | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation, non-idempotent, non-destructive profile. The description adds valuable behavioral context: setting state to 'credited' with credited_usd causes that amount to count in provider credits and the close, a non-obvious side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action and state meanings. No fluff, though the dense phrasing could be slightly more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with four parameters, an output schema (so return values needn't be explained), and annotations covering safety, the description is minimally adequate. It still leaves gaps for claim_id and note, and does not mention permissions or idempotency beyond annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains the state values and the conditional use of credited_usd, but completely omits claim_id and note. Half the parameters remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (marks) and resource (claim), and enumerates the three target states (submitted, credited, denied). Clear enough to distinguish from list_claims, though it does not explicitly name the sibling for finding a claim_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies when to use it—when changing a claim's state—but there are no explicit conditions for when to choose this over alternatives (e.g., list_claims to retrieve claim_id). No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vendorsVendorsARead-onlyIdempotentInspect
view rates (what each AI provider and seat tool really costs as a share of list price, whether the agreed rate is on the bill, and seats nobody used; start and end YYYY-MM-DD, the last 30 days by default; use before saying a vendor overcharged or whether a deal is good), agreements (every vendor agreement: notice dates, commitment pacing and tiers; state filters), agreement (one, by agreement_id, with spending day by day), baselines (proven savings: each frozen baseline's newest month) or savings (baseline_id and month YYYY-MM: what the new rate saved apart from usage changes, and whether the agreed rate is on the bill).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| view | No | rates | |
| month | No | ||
| start | No | ||
| state | No | ||
| baseline_id | No | ||
| agreement_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds substantial behavioral context beyond annotations: the default date range for rates, what each view returns conceptually, and the fact that agreement and savings depend on IDs and month. It does not discuss pagination or limits, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and largely free of fluff, and the first view is front-loaded. But the entire description is one long run-on sentence with nested parentheticals, making it harder to parse than a structured list of views and their parameters would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 optional parameters and 5 views) and the presence of an output schema, the description is largely complete: it explains each view and maps most parameters to the right view. It is not fully complete because it does not explain the state enum meanings or explicitly state which parameters are required for agreement and savings views.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It successfully maps start/end to rates (including YYYY-MM-DD format and the last-30-days default), state to agreements, agreement_id to agreement, and baseline_id plus month to savings. The main gap is that the state enum values (act/watch/clear/off) are not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool views vendor cost data and enumerates five distinct views (rates, agreements, agreement, baselines, savings) with what each contains. It does not differentiate this tool from sibling tools such as get_savings, seats, or list_bills, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context for the rates view ('use before saying a vendor overcharged or whether a deal is good') and implicitly maps parameters to other views. However, it never names alternatives or says when to use this tool instead of siblings like get_savings or list_bills, leaving most when-to-use guidance implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waiting_shut_offsShut-offs waitingARead-onlyIdempotentInspect
Shut-offs waiting for a second owner, admin or security member, with two-person shut-off on.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value by disclosing the eligibility condition (two-person shut-off must be enabled and the request must be awaiting a second approver), but says nothing about ordering, completeness of the list, or whether it paginates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause with no filler; every element (resource, pending state, approver roles, two-person condition) carries meaning. It is a sentence fragment rather than a full statement, which is terse but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a declared output schema, and annotations covering safety and world scope, the description only needs to define what set of records is returned — and it does. Ordering/pagination details are the only meaningful omission, and those matter less for a small approval queue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond the implicit scope, which it already supplies via the approval-state filter. Baseline for a no-param tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (shut-offs) and a precise filter (those awaiting a second owner/admin/security approver under two-person shut-off), which is far more informative than the title's 'Shut-offs waiting'. It does not explicitly contrast with siblings like confirm_shut_off or shut_off_key, so the agent must infer the relationship rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The conditional framing ('waiting for a second owner, admin or security member') implies this is the queue-inspection tool for pending two-person approvals, but it never states when to call it or that confirm_shut_off is the follow-up action. 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
delete_record1 field changed- changed
Input schema / properties / kind / patternPrevious value: -"^(bill|credit|price|view)$"New value: +"^(bill|credit|price|view|agreement|baseline)$"
- Added
freeze_baseline - Added
set_agreement - Added
vendors
8 tool updates
- Added
agent_action - Added
agent_approvals - Added
agent_cards - Added
agent_spend_view - Added
card_platforms - Added
check_agent_spend - Added
record_agent_actions - Added
set_agent_policy
41 tool updates
- Added
access - Added
act_on_incident - Added
add_tool_invoice - Added
api_keys - Added
approve_chargeback - Added
billing - Added
change_member - Added
change_protection_settings - Added
coding_tools - Added
confirm_shut_off - Added
connect_provider - Added
delete_record - Added
disconnect_provider - Added
free_audit - Added
import_csv - Added
incident_evidence - Added
limit_request - Added
limits - Added
list_claims - Added
list_connections - Added
match_person - Added
month_end_actions - Added
organization - Added
person_month - Added
plan_costs - Added
price_from_bill - Added
protection_settings - Added
saved_views - Added
seats - Added
set_alerts - Changed
set_budget1 field changed- changed
Input schema / properties / scope / patternPrevious value: -"^(org|customer|feature|user|project)$"New value: +"^(org|customer|feature|user|project|engineer|team)$"
- Added
set_contract - Added
set_key_owner - Added
set_privacy - Added
set_team - Added
set_team_manager - Added
shut_off_key - Added
single_sign_on - Added
teams_and_people - Added
update_claim - Added
waiting_shut_offs
5 tool updates
- Added
chargeback - Added
coding_agent_spend - Added
get_incident - Added
list_incidents - Added
list_provider_keys
19 tool updates
- Added
add_bill - Added
add_credits - Added
approve_month - Added
delete_budget - Added
forecast_spend - Added
get_alerts - Added
get_run - Added
get_runs - Added
get_savings - Added
get_spike - Added
invite_member - Added
list_anomalies - Added
list_bills - Added
list_budgets - Added
list_credits - Added
list_members - Added
list_your_prices - Added
month_end - Added
set_price
13 tool updates
- First observed
compare_models - First observed
credits_expiring - First observed
estimate_switch - First observed
explain_change - First observed
get_account - First observed
get_customer_cost - First observed
get_margin - First observed
get_model_price - First observed
get_spend - First observed
list_models - First observed
reconciliation_status - First observed
set_budget - First observed
simulate_workload
Publisher details
- Operator
- Keyveve, Inc. · Publisher source
- Operator website
- https://veqen-app.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://veqen-app.com/docs/mcp · Publisher source
- Trust center
- https://veqen-app.com/docs/security · Publisher source
- Restrictions
- The private ledger endpoint requires a Veqen account and organization-scoped OAuth or a full-access API key. A free plan includes 60,000 tracked calls each month. Budget creation requires an owner or administrator; blocking requires the Veqen SDK in the calling application. Customer margin requires connected Stripe revenue and an eligible paid plan. The separate public pricing endpoint at https://veqen-app.com/mcp/prices needs no account. · Publisher source
Related MCP Connectors
- Costory FinOps MCPDeprecatedio.costory
FinOps agent MCP: one allocated view of cloud, AI and data costs for your team. Starter $300/mo
Agent Cost Allocator MCP — multi-tenant LLM cost attribution for chargeback billing. Companion to
Costory is the FinOps agent your team builds on. Claude plus a single provider's MCP works for one person and one cloud. It breaks when you add more providers, more people, and more tools to maintain. - Multiple providers: AWS, GCP, Azure, LLM APIs and data clouds normalized and allocated to teams and features in one model, including allocation from telemetry (Kubernetes, Datadog, dbt). - Multiple users: one hosted setup with OAuth, per-user access and enterprise SSO, instead of local credentials and prompts per person. - Maintained for you: tools, skills and connectors kept up to date by Costory, so reorgs and new services don't break your agent. Your agent finds savings, explains every change in spend and issues recommendations that your coding agent can implement. It works in Claude, Cursor and any MCP client, plus Slack. Customers include Alan, Deezer, Delivery Hero, Voodoo and Pennylane. Pricing: Starter from $300/month, flat: unlimited users and data sources, and a fair use that 80% of customers never outgrow. Nothing is ever cut off, and agents connected through the MCP use no AI credits. 30-day free trial.
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceBudget management and cost tracking MCP server for autonomous agents, enabling budget creation, cost recording, spending projections, and alert rules.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agent billing. Preflight spend checks before agent runs. Post-execution usage billing via two MCP tools: preflight() and record_event().7MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for tracking LLM costs, setting spending limits, and receiving budget alerts directly within AI editors via slash commands like /guard.5 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that reports AI agent costs (tokens, latency, dollars) with per-tenant isolation via OAuth, and includes an ADK agent for natural-language queries.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.