Skip to main content
Glama

Last Price

Server Details

Compute and verify prices from an agent, metered per call. Works keyless on a demo tenant.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 26 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 308 tools

Disambiguation2/5

With 308 tools, several clusters genuinely overlap: pricing can be entered via compute_price, compute_prices_batch, get_ucp_quote, run_pricing_chain, run_reference_pipeline, price_from_capture, pricing_conversation and suggest_frontier_price, and dozens of get_*/set_*_settings pairs plus commerce/commerce-pipeline/rosetta/aitune namespaces are hard to tell apart at selection time. The descriptions are detailed and usually disambiguate once read, but discovering the right tool among 308 is itself the hardest part.

Naming Consistency4/5

Names are overwhelmingly consistent snake_case verb_noun (list_, get_, create_, update_, delete_, set_, verify_, run_, add_, remove_), which makes the pattern predictable. Minor deviations exist: pricing_conversation lacks a verb, and opaque internal vocabulary (jale, rosetta, aitune, forge, ucp) appears in names without being self-explanatory.

Tool Count1/5

308 tools is extreme for any single server and far past the 15-tool well-scoped range. Even a broad pricing/billing/commerce platform does not justify one tool per endpoint fragment; whole areas (rosetta translation, aitune profiling, forge, launch kits, storefront DNS) inflate the surface well beyond the core purpose.

Completeness4/5

Coverage is remarkably thorough: CRUD lifecycles for customers, contacts, orders, invoices, payments, credits, disputes, webhooks, functions, routing policies, experiments, storefronts, marketplace listings, team and approvals are all present with list/get/create/update/delete and supporting actions. Small gaps remain, such as no update/delete for order lines and no delete for experiments, but they are workarounds rather than dead ends.

Available Tools

308 tools
accept_counterA
DestructiveIdempotent
Inspect

Take the seller's standing counter: the negotiation closes as accepted at that price. This commits the buyer to the price, so call it only when you mean to buy at it. A counter past its time, a closed negotiation, or a counter the seller can no longer allow answers with a conflict and binds nothing. Needs the negotiation id and the buyer token. Public: needs no credential.

NameRequiredDescriptionDefault
handleYesThe seller's public handle, from the terms they publish.
buyer_tokenYesThe buyer token the first answer gave you, once. Keep it: it is the only way back into the negotiation.
negotiation_idYesThe negotiation id from the first answer.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations, the description discloses the key behavioral consequence: the buyer is committed to the price. It also explains conflict behavior for expired counters, closed negotiations, and disallowed counters, and states that the endpoint needs no credential. This is consistent with destructiveHint=true and readOnlyHint=false.

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

Conciseness5/5

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

The description is short and front-loaded: the action and its binding consequence come first, followed by failure conditions and credential notes. Each sentence adds useful decision context without repetition.

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

Completeness4/5

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

For a destructive write with no output schema, it covers the main success outcome, conflict cases, and public access. It could be slightly more complete by naming the required handle parameter or clarifying what a successful response contains, but the annotations and schema cover most remaining details.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already documents all three required parameters in detail. The description mentions negotiation id and buyer token but omits the required handle parameter and adds no syntax or formatting guidance beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description names a specific action and outcome: "Take the seller's standing counter" and "the negotiation closes as accepted at that price." This clearly distinguishes accepting an existing counter from related negotiation actions like making or previewing an offer.

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

Usage Guidelines4/5

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

It gives a strong when-to-use rule: "call it only when you mean to buy at it." It also describes when the call will not bind, but it does not explicitly name sibling alternatives such as inspecting the negotiation or making a different offer.

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

activate_orderA
Idempotent
Inspect

Activate a draft order: pass order_id. It answers 404 when the order is missing or is no longer a draft. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
order_idYesThe order: its id, as list_orders shows it.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond them by disclosing the auth requirements (claimed credential and claimed workspace) and the exact failure semantics (403 for unclaimed sandbox keys, 404 for missing/non-draft orders). It does not say what activating actually changes on the order or whether it can be undone, but given the annotation coverage of idempotency and non-destructiveness this is solid supplementary context.

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

Conciseness3/5

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

Three short sentences, action stated first, which is good front-loading. The credential and workspace sentences are dense and slightly clipped (e.g. 'Needs a claimed Last Price credential'), reading like terse notes rather than polished guidance, but little is wasted.

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

Completeness3/5

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

With no output schema the description should convey what a successful call produces or changes, and it only implies a draft-to-active transition without stating effects on the order. It does cover the two things an agent most needs — preconditions and error codes — so it is adequate but not complete for a mutation tool.

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

Parameters4/5

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

Only one parameter and schema description coverage is 100%, so the schema already documents order_id as the UUID 'as list_orders shows it'. The description reinforces that with 'pass order_id' but adds no format or sourcing details beyond the schema, so it sits at the baseline-plus level rather than contributing new semantics.

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

Purpose4/5

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

Specific verb ('Activate') and resource ('a draft order'), with the scope narrowed to drafts, which tells an agent this is a state transition rather than a generic update. It never names a sibling such as update_order or get_order to sharpen the boundary, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

Explicitly states the preconditions: a claimed Last Price credential and a claimed workspace, with the self-registration sandbox key path called out as refused with 403. It also explains the 404 condition (order missing or no longer draft), which tells the agent what a failure means. No guidance on when to prefer this over update_order, hence not a 5.

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

add_commerce_observationAInspect

Record one competitor price observation by hand, for the pipeline to match against your catalog: a competitor's observed price for a product. The cycle usually collects these itself. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
rawNoThe source record, kept with the observation.
gtinNoThe product GTIN, used to match it to a catalog item.
titleNoThe product title as the competitor shows it.
sourceYesWhere the price came from, such as manual or the name of your scraper.
currencyYesThe currency code, such as USD.
competitorYesThe competitor's name.
external_idNoThe competitor's own id for the product.
marketplaceNoWhere the competitor sells it.
observed_atNoWhen it was seen. Defaults to now.
observed_priceYesThe price seen.
source_confidenceNoHow far to trust the source, 0 to 1.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write, so the bar is lower; the description adds real value beyond that with auth scope requirements and the 403 failure mode for unclaimed sandbox workspaces. It does not disclose whether duplicate observations are rejected or what the call returns, which is the 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.

Conciseness4/5

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

Front-loaded with the core action and purpose in the first clause, followed by two compact caveat sentences. The prerequisite sentences are dense but each carries non-obvious operational information; nothing reads as filler.

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

Completeness4/5

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

Covers purpose, prerequisites, and the failure mode for a tool with 11 parameters and no output schema. What's missing is small but real: no mention of the return payload (created observation id) or what happens when an observation can't be matched to a catalog item.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 fields including the nested `raw` object, so baseline 3 applies. The description adds only the framing that the record feeds catalog matching (which motivates gtin/external_id), without any per-parameter syntax or default guidance.

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

Purpose4/5

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

States a specific verb and resource ('Record one competitor price observation by hand') plus the downstream purpose (matching against your catalog). It also implicitly separates itself from the automated collection path ('the cycle usually collects these itself'), though it never names the sibling tool (run_commerce_cycle / contribute_price_data) explicitly.

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

Usage Guidelines4/5

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

Gives a clear usage context: use this for one-off manual entry, since it notes the cycle normally collects observations itself. It also lists two concrete prerequisites (Last Price credential with commerce configure scope, claimed workspace), but offers no explicit 'do not use when' rules or named alternatives.

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

add_order_lineAInspect

Add a line item to an order: pass order_id, description and unit_price, and optionally quantity (default 1) and metadata. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
metadataNoAnything worth keeping with the record.
order_idYesThe order: its id, as list_orders shows it.
quantityNoHow many. Defaults to 1.
unit_priceYesThe price of one.
descriptionYesWhat the line is for.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations, the description discloses important prerequisites: a claimed Last Price credential and a claimed workspace, including that self-registered sandbox keys receive a 403 until the workspace is claimed. It does not contradict the annotations and adds real operational context for an agent attempting the call.

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

Conciseness4/5

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

The description is short and front-loads the purpose before listing parameters and prerequisites. It is well structured, though the parameter summary partially duplicates the already-rich schema.

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

Completeness4/5

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

For a mutation tool with annotations, full schema coverage, and no output schema, the description covers the essential call requirements: purpose, required fields, optional fields, and auth/workspace prerequisites. It could say more about side effects on order totals, but nothing required for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already carries parameter documentation. The description restates the required fields and optional quantity/metadata defaults, but adds no new syntax, constraints, or semantics beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: add a line item to an order. It also names the required fields, making the operation easy to distinguish from create_order or update_order. It stops short of explicitly naming sibling alternatives or contrasting when to use this versus update_order.

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

Usage Guidelines3/5

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

Usage is implied by 'Add a line item to an order' and the parameter summary, but there is no explicit when-to-use/when-not-to-use guidance or comparison to siblings like update_order or list_order_lines. The prerequisites are useful, but alternative-selection guidance is absent.

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

add_storefront_dns_recordAInspect

Add a DNS record to a domain your workspace registered through Last Price, to use it for more than the storefront: MX for email, TXT for SPF, DKIM, DMARC or site verification, CNAME or A for a subdomain. name is relative (blog for blog., empty for the domain itself). Records the storefront needs cannot be replaced. Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
ttlNoSeconds to cache it.
nameYesRelative name: blog for blog.<domain>, empty for the domain itself.
typeYesThe record type.
valueYesThe record value, such as a mail server or a target host.
domain_idYesThe domain id, from list_storefronts or add_storefront_domain.
mx_priorityNoMX only. Defaults to 10.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, idempotent=false, openWorld=true) by disclosing the required credential scope (workspace settings write) and the claimed-workspace prerequisite, including the exact failure mode: a sandbox key from self-registration is refused with 403 until claimed. It also warns that storefront-required records cannot be replaced. That is exactly the auth/failure context an agent needs before calling.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and followed by naming convention and prerequisites; nearly every clause carries information. The parenthetical record-type list is dense but functional rather than padding.

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

Completeness4/5

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

For a 7-parameter mutation with no output schema, the description covers authorization, prerequisite state, failure behavior, and the non-replaceable-records constraint. It does not say what is returned on success (e.g., a record id), leaving a small gap for an agent that needs to chain a follow-up call.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented in the schema, and the description's explanation of 'name' being relative (blog for blog.<domain>, empty for apex) largely restates the schema text. It adds little about ttl or mx_priority beyond what the schema states, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (add) and resource (DNS record) scoped to a domain registered through Last Price, and enumerates realistic use cases (MX for email, TXT for SPF/DKIM/DMARC, CNAME/A for subdomains). This clearly separates it from list_storefront_dns_records, remove_storefront_dns_record, and add_storefront_domain without opening any schema.

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

Usage Guidelines4/5

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

Explains when to reach for it — 'to use it for more than the storefront' — with concrete record-type examples, and gives a when-not constraint ('Records the storefront needs cannot be replaced'). It does not name the sibling to use for removal or listing, 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.

add_storefront_domainA
Idempotent
Inspect

Serve a storefront on a domain your company owns (white label), such as agents.yourcompany.com. Answers with two DNS records to add at your DNS provider: a TXT record proving you own the domain and the record that routes it. Then call verify_storefront_domain. Last Price domains and hosting domains are refused. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domainYesA domain your company owns, such as agents.yourcompany.com.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only cover safety hints (non-read-only, non-destructive, idempotent), and the description adds the substantive behavior: it returns two DNS records to add at a DNS provider (one TXT for ownership, one routing record), plus specific failure modes (not_released, 403 on unclaimed workspace) and the required credential scope. It doesn't cover idempotency semantics beyond the annotation, but the added operational context is well above the bar.

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

Conciseness4/5

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

Front-loads the core action and the return value, then layers constraints and prerequisites. Dense and slightly run-on across its later sentences, but nearly every clause carries an actionable constraint; trimming would lose real information.

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

Completeness5/5

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

With no output schema, the description fills the gap by describing the two DNS records returned, and it covers auth scope, workspace-claim prerequisite, and feature-flag gating. An agent has everything needed to call it and to know what to do with the result.

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

Parameters3/5

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

Schema description coverage is 100%, so both domain and storefront_id (including the 'from list_storefronts' provenance) are already documented in the schema. The description's mention of an owned domain restates the schema rather than adding format or validation detail, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (serve a storefront on a company-owned domain, white label) with a concrete example. It also distinguishes itself from the adjacent siblings by naming verify_storefront_domain as the follow-up and by excluding Last Price/hosting domains, which are handled elsewhere.

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

Usage Guidelines5/5

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

Gives explicit sequencing (call this, then verify_storefront_domain) and explicit when-not conditions: Last Price and hosting domains are refused, storefronts must be switched on else not_released, and an unclaimed sandbox workspace returns 403. This is a full when/when-not/next-step map.

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

add_team_memberAInspect

Add a person who already has a Last Price account to your workspace with a role. Only an owner can grant owner. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
roleNoTheir role. Defaults to member.
user_idYesThe person's user id: user_id on a list_team_members result.

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare non-readOnly, non-destructive, non-idempotent, so the description's job is to add context, and it does richly: auth scope requirements, rejection of tokens/other keys, privilege-escalation guard on the owner role, and the 403 behavior for unclaimed sandbox workspaces. That is well beyond what structured fields convey.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action, then prerequisites in decreasing priority. Dense but every clause carries an operational fact; the nested parenthetical about sandbox keys is slightly heavy but earns its place.

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

Completeness4/5

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

For a two-parameter mutation with no output schema, the description covers the critical unknowns: authorization, scope, escalation limits, and a failure mode. It does not say what the successful response returns or what happens if the user is already a member, a minor gap.

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

Parameters4/5

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

Schema coverage is 100% and the enum plus 'defaults to member' are already documented, so the schema carries most of the load. The description nonetheless adds a semantic constraint on the role parameter ('Only an owner can grant owner') that the schema does not encode.

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

Purpose4/5

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

The description names a specific verb and resource ('Add a person ... to your workspace with a role') and adds a discriminating qualifier: the person must 'already have a Last Price account'. That distinguishes it in spirit from invite_team_member, though it never names that sibling explicitly, keeping it just short of a 5.

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

Usage Guidelines4/5

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

It spells out real preconditions: owner-only for granting owner, an x-api-key holding team:admin scope, the key must be minted by a current owner/admin, and a claimed workspace is required (sandbox self-registration keys get 403). It lacks an explicit 'use invite_team_member instead if the person has no account' routing statement.

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

allocate_variant_trafficA
Read-onlyIdempotent
Inspect

How should traffic be split next between price variants? Send the trials and conversions of two to ten variants and get each one's share of the next traffic by Thompson sampling: its chance of being best, with a floor so none is starved (min_weight). Exact by default; in Monte Carlo mode it samples draws times, reproducibly for a given seed. Billed as one call to the allocator function. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
modeNoExact (the default) or Monte Carlo sampling.
seedNoMonte Carlo mode only: makes the answer repeatable.
drawsNoMonte Carlo mode only: how many samples.
priorNoBeta prior on the conversion rate. Defaults to a flat prior.
variantsYesTwo to ten variants, each with a unique id, its trials and its conversions (never more than trials).
min_weightNoThe least share any variant gets.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent and non-destructive, and the description adds genuinely new behavioral facts: billing as one allocator call, required credential scope, the workspace-claim requirement with the specific 403 failure mode, and Monte Carlo reproducibility given a seed. That is exactly the extra context annotations cannot carry.

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

Conciseness4/5

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

Opens with the decision question, then the mechanics, then the operational constraints, so it is well front-loaded. It is dense but nearly every clause carries information; the billing and workspace sentences are load-bearing rather than padding.

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

Completeness4/5

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

With no output schema the description must sketch the return value, and it does ('each one's share of the next traffic', 'its chance of being best'), though it does not state the response shape (e.g. per-variant weights keyed by id). Auth, billing and failure modes are all covered, so the tool is callable without further guessing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description still earns above that by explaining why min_weight exists ('a floor so none is starved'), that mode defaults to exact, and that draws and seed only matter in Monte Carlo mode. It does not restate the trials/conversions constraints beyond what the schema says, which is fine.

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

Purpose5/5

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

States a specific verb (split/allocate traffic) and resource (price variants) plus the method (Thompson sampling) and the exact output semantics (each variant's share of the next traffic, its chance of being best). This is clearly distinguishable from siblings such as check_variant_significance or compute_price, which do not allocate traffic.

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

Usage Guidelines4/5

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

Frames the call as 'send trials and conversions of two to ten variants, get next traffic split', which makes the use case obvious, and adds concrete preconditions (price compute scope credential, claimed workspace, sandbox keys refused with 403). It stops short of naming an explicit alternative tool or a when-not-to-use condition, so it is strong but not complete routing guidance.

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

apply_analyst_proposalA
Destructive
Inspect

Approve and apply a proposal the pricing analyst made (an analyst.* approval, listed in get_analyst_brief and list_approvals). Its stored call runs with your own credential, so the target route checks your role and scopes; only when it succeeds is the proposal approved by you and marked applied. A refusal comes back unchanged and leaves the proposal pending. It runs once even when two applies race. Only the call the action allows runs; anything else is refused. A person, a workspace key, or the agent that owns the workspace may apply; no other agent may, and nobody applies their own request. A proposal already applied runs nothing again and says it was already applied. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonNoWhy, kept with the approval when this call approves it. Optional.
approval_idYesThe proposal approval id, as get_analyst_brief or list_approvals gives it.

TDQS

A4/5.0
Behavior4/5

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

Rich disclosure well beyond the annotations: the stored call runs under the caller's credential and is re-checked for role and scopes, a refusal leaves the proposal pending, execution is race-safe, and only the single allowed call runs. One tension: the description says an already-applied proposal 'runs nothing again and says it was already applied', which reads as idempotent behavior while annotations set idempotentHint=false. The description is doing real work here, but that mismatch keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with the action and its scope, then permissions, failure behavior, and prerequisites in a sensible order. It runs long at six sentences and the adjacent statements 'Only the call the action allows runs; anything else is refused' and 'A refusal comes back unchanged and leaves the proposal pending' partly overlap.

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

Completeness5/5

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

For a destructive, non-read-only mutation with no output schema, the description covers everything an agent needs before calling: authorization rules, self-approval prohibition, credential and routing write scope, the claimed-workspace precondition with its 403, concurrency, and the already-applied case. Nothing material is left to guesswork.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented, including the UUID format and the 500-character cap on reason. The description only reinforces where approval_id comes from ('as get_analyst_brief or list_approvals gives it'), which is the expected baseline rather than added semantic depth.

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

Purpose4/5

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

States a specific verb-and-resource pair ('Approve and apply a proposal the pricing analyst made') and scopes it to analyst.* approvals listed in get_analyst_brief and list_approvals. That is far more precise than a bare 'apply', but it never contrasts itself with close siblings such as decide_approval, approve_commerce_proposal, or execute_commerce_proposals, 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.

Usage Guidelines4/5

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

Gives concrete entry points ('listed in get_analyst_brief and list_approvals') and constrains who may invoke it: 'A person, a workspace key, or the agent that owns the workspace may apply; no other agent may, and nobody applies their own request.' What is missing is an explicit statement of when not to use it, e.g. pointing to the reject/decide siblings.

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

approve_commerce_proposalA
Destructive
Inspect

Approve a drafted price proposal so it can be pushed to the store. proposal_id is the id from list_commerce_proposals. Deciding is for the workspace owner, a person or an agent the owner has trusted with the commerce proposal approve scope; the audit trail records who decided. Approving does not push the price: use execute_commerce_proposals. Needs a Last Price credential with commerce proposal approve scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonNoWhy, kept in the audit trail. Optional.
proposal_idYesThe proposal id, as list_commerce_proposals gives it.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well past the annotations: names the required approve scope, states the audit trail records the decider, and discloses a concrete failure mode (403 for sandbox keys from self-registration until a person claims the workspace). Annotations only say 'destructive, not idempotent'; the description tells the agent why state changes and what gates it.

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

Conciseness4/5

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

Front-loads purpose and the id source, then compresses permissions and preconditions into short clauses; nothing is redundant. The last two 'Needs a ...' sentences are slightly staccato but each carries distinct requirement information.

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

Completeness4/5

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

Covers purpose, permissions, credential scope, workspace state, id provenance, and the follow-up call — essentially everything needed to invoke it safely with no output schema present. Only the response shape after approval is left unstated, a minor gap.

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

Parameters4/5

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

Schema coverage is 100% and both params are documented there, so the description only adds provenance for proposal_id ('the id from list_commerce_proposals'). That is useful routing context but does not extend the reason field or constrain formats further.

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

Purpose5/5

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

States a specific verb and resource ('Approve a drafted price proposal') plus the state transition it causes ('so it can be pushed to the store'), which separates it cleanly from execute_commerce_proposals and reject_commerce_proposal.

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

Usage Guidelines5/5

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

Explicitly says approving does not push the price and routes the agent to execute_commerce_proposals for that step, and names list_commerce_proposals as the source of the id. Preconditions (owner/trusted scope, Last Price credential, claimed workspace) are all spelled out.

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

approve_payout_runA
Destructive
Inspect

Approve a payout run that is awaiting approval, and pay it: one Stripe Connect transfer per connected account, each with an idempotency key so a retry never pays twice. Never by the requester: whoever requested the run (the same API key or agent, or the same person through another of their keys, their sign-in or an agent they created) is refused with 403, so a run your own credential requested needs another person, or an agent a different person created, to approve it. Refused with nothing paid: 503 while Stripe is not ready for payouts, 409 when the run is not awaiting approval or the ledger changed since the request (the run becomes stale; request it again). Payouts run in Stripe test mode, so no real money moves until Last Price switches live payouts on. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
run_idYesThe payout run: id on a list_payout_runs or request_payout_run result.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the destructive/openWorld annotations: segregation-of-duties with 403 for the requester (including same-person-via-another-key), 503/409/404 refusal semantics with 'nothing paid' guarantees, staleness behavior, test-mode money movement, required billing write scope, and the unclaimed-workspace restriction. This is exactly the operational context an agent needs before a destructive financial action.

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

Conciseness4/5

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

The core action and its settlement effect are front-loaded, and every subsequent clause carries real information (auth, refusal codes, mode, scope). It is a single dense paragraph that could be broken up for scanning, but nothing is wasted.

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

Completeness5/5

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

For a destructive, open-world, no-output-schema tool with one parameter, the description covers preconditions, authorization, failure modes, side effects, and environment. An agent could call it correctly and interpret refusals without further lookup.

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

Parameters3/5

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

Schema coverage is 100% and the single run_id parameter is already documented as coming from list_payout_runs or request_payout_run. The description adds no further syntax or sourcing detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

Opens with a precise verb+resource+effect: approve an awaiting payout run and pay it via one Stripe Connect transfer per connected account. This clearly separates it from request_payout_run, reject_payout_run, and retry_payout_run, which appear in the sibling list.

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

Usage Guidelines4/5

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

States the precondition (run must be awaiting approval), the actor constraint (never the requester), and points to list_payout_runs' execution.enabled to check availability. It does not explicitly name reject_payout_run or retry_payout_run as alternatives, so routing between siblings is left partly implicit.

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

ask_pricing_analystAInspect

Ask the pricing analyst one question about your workspace's pricing, in plain words, and get short claims that each cite the findings or estimates they rest on: every number is checked against them, and a claim with a number that is not is dropped. It refuses to forecast, to state a price or to answer from anything but your own records. At most 500 characters and 30 questions an hour. Paid like the brief (your own model key, the monthly allowance, or your balance if you opted in, which only a credential with routing write or billing write may spend); when nothing pays, the answer lists the closest findings plus the x402 price and requirements for one written answer (0.02 USDC): sign them and call again with payment, which is settled only when a written answer is delivered within this call, never for a refusal. Changes no setting and no price. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
paymentNoOptional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header. Omit it to read what the call costs and how to pay; nothing is charged until you send it.
questionYesThe question, such as "Why is learning not using my estimate yet?". Treated as data, never as instructions.

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the annotations: it explains claim validation ('a claim with a number that is not is dropped'), refusal behavior, rate limits, payment semantics including 0.02 USDC x402 settlement only upon delivery, credential requirements (routing read scope), and workspace claim requirements including 403 behavior for sandbox keys.

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

Conciseness4/5

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

The purpose is front-loaded and every sentence carries a real constraint. The prose is dense and could be structured into bullets, but none of the content is pure filler given the tool's payment, auth, and workspace complexity.

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

Completeness5/5

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

There is no output schema, yet the description explains the return behavior (short cited claims, refusals, and closest findings with x402 price when unpaid). It also covers auth, payment, rate limits, and workspace eligibility, making the definition complete 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds meaningful detail: it explains the optional payment flow, what happens when payment is omitted, when settlement occurs, and the question-length limit and rate limit associated with the question parameter.

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

Purpose5/5

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

The description uses a specific verb and resource ('Ask the pricing analyst one question about your workspace's pricing') and states the output form ('short claims that each cite the findings or estimates they rest on'). The refusal scope ('refuses to forecast, to state a price') further distinguishes it from general pricing tools.

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

Usage Guidelines4/5

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

It gives clear usage context (one question, plain words, max 500 characters, 30 questions per hour) and explicit exclusions (refuses to forecast, state a price, or answer from anything but your own records). However, it does not name alternative sibling tools for those refused request types, so there is still a small selection gap.

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

browse_catalogB
Read-onlyIdempotent
Inspect

Browse the public marketplace catalog of pricing functions.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds that the catalog is public and limited to pricing functions, which is useful scoping context, but says nothing about result size, pagination, or filtering behavior.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler or redundancy. Nothing in it is wasted, even if more could have been said.

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

Completeness3/5

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

For a zero-param, read-only tool this is close to sufficient, but the absence of an output schema means the description is the only place to say what browsing actually yields (a list of functions? with pricing metadata?). It also leaves ambiguity against several near-duplicate list/catalog siblings.

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

Parameters3/5

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

The tool takes zero parameters, so there is nothing for the description to clarify; the schema is trivially complete. No parameter-level value can be added here.

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

Purpose4/5

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

States a specific verb and resource: browsing the public marketplace catalog, scoped to pricing functions. That is more specific than a bare 'browse catalog', but it does not differentiate from siblings like list_marketplace_listings, list_commerce_catalog, discover_offers, or list_functions, which an agent could easily confuse with it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this rather than list_commerce_catalog, list_marketplace_listings, or list_functions, and no stated prerequisites or exclusions. The agent must infer from the one-line purpose alone, which is risky with so many similar catalog/listing tools.

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

buy_day_passAInspect

Buy a day pass for your workspace: extra compute calls for 24 hours, paid with one x402 payment signed by your own wallet. Called without payment it spends nothing and returns the payment requirements (price, recipient, network, asset) to sign. Sign them, then call again with payment set to the base64 payment (the value of the X-PAYMENT or PAYMENT-SIGNATURE header). Only a self-registered agent workspace may buy one; list_day_passes shows the offer and your passes. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault
paymentNoOptional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header. Omit it to read what the call costs and how to pay; nothing is charged until you send it.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, it discloses the key behavioral facts: a payment-less call spends nothing and only returns price/recipient/network/asset, charges occur only on the second call, and a Last Price credential with price:compute scope is required. This is exactly the context an agent needs for a non-idempotent, money-spending, open-world operation.

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

Conciseness4/5

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

Four dense sentences, front-loaded with what the tool does before the flow and prerequisites. Every sentence carries information, though the long compound sentences could be split for faster scanning.

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

Completeness5/5

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

With no output schema, the description still characterizes the response of the unpaid call (price, recipient, network, asset) and names the prerequisite credential and workspace state. An agent has everything needed to invoke it correctly in both phases.

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

Parameters3/5

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

Schema coverage is 100% and the schema description already explains the base64 payment, the header origin, and the omit-to-quote behavior. The description restates essentially the same semantics, adding the header names but no new information beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource plus scope: buying a day pass granting extra compute calls for 24 hours, paid via x402. It is clearly distinguishable from siblings like list_day_passes (which is named as the discovery tool) and from generic payment tools such as create_payment.

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

Usage Guidelines5/5

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

Lays out an explicit two-step flow: call without payment to obtain requirements, then sign and call again with the base64 payment. It also gives an exclusion (only a self-registered agent workspace may buy) and points to list_day_passes for the offer, leaving nothing to inference.

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

calculate_taxA
Read-onlyIdempotent
Inspect

Preview the tax an invoice or order would get from the registrations saved on Settings, Tax (US nexus, EU VAT OSS, other VAT and GST), without saving anything: the subtotal, each jurisdiction's rate and amount, the total, and why (calculated, not registered, reverse charge, exempt). US rates are state-level only unless a registration overrides them. Early access: answers that it is not released until tax calculation is switched on for the workspace. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
dateNoThe sale date (YYYY-MM-DD); today when absent.
amountYesThe pre-tax amount, in the currency's major unit.
exemptNoTrue for a tax-exempt customer.
currencyYesISO 4217 code, like USD or EUR.
customer_idNoA customer whose saved address and tax id to use when destination is not given.
destinationNoWhere the customer is.
customer_tax_idNoThe customer's VAT or tax id; an EU business with one is reverse charged.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it guarantees nothing is saved, explains the US state-level rate fallback with registration override, discloses the early-access unreleased response, the required credential scope, and the 403 for unclaimed sandbox workspaces. That is exactly the operational context annotations cannot carry.

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

Conciseness4/5

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

The core purpose and the no-save guarantee are front-loaded. The prerequisite sentences at the end are dense and stacked into a single run-on block (early access, credential scope, claimed workspace), which costs some readability but each clause carries real information.

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

Completeness5/5

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

With no output schema, the description supplies the return shape (subtotal, per-jurisdiction rate and amount, total, and the reason code). Combined with the stated prerequisites and rate-resolution rule, an agent has everything needed to call this correctly and interpret the result.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter (date, amount, currency, exempt, customer_id, destination, customer_tax_id) already carries its own description. The description echoes a few of those relationships (customer_id supplying address, reverse charge via EU tax id) but adds no new syntax, precedence, or fallback rules beyond the schema. Baseline 3.

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

Purpose5/5

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

States a precise verb and resource (preview the tax an invoice or order would get) plus the data source (registrations saved on Settings, Tax) and the scope of jurisdictions covered (US nexus, EU VAT OSS, other VAT and GST). No sibling tool computes tax, and the wording makes clear it is a preview, not a persisted calculation.

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

Usage Guidelines4/5

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

Clearly frames that this is a non-persisting preview, which tells the agent when to reach for it instead of creating an invoice/order. It also covers gating conditions (early access, billing read scope, claimed workspace). It does not explicitly name an alternative tool or say when not to use it, so it falls short of a 5.

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

cancel_credit_bundle_subscriptionA
DestructiveIdempotent
Inspect

Stop a customer's credit bundle subscription from renewing. The customer keeps the credits of the period they are in, and invoices already written stay. Cancelling one already cancelled changes nothing. Early access. Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
subscription_idYesThe subscription id from list_credit_bundle_subscriptions.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds real value beyond them: the customer retains the current period's credits, already-written invoices persist, and repeated cancels are harmless. It also discloses auth-scope and workspace-claim failure modes, which annotations cannot express.

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

Conciseness4/5

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

The core effect on renewal is front-loaded and each subsequent sentence addresses a distinct behavior (credits retained, invoices kept, idempotency, auth, workspace). The telegraphic "Early access." fragment and the run of prerequisite clauses read slightly clipped, but nothing is wasted.

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

Completeness4/5

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

For a one-parameter destructive mutation with full annotation coverage, the description covers side effects, idempotency, and failure conditions thoroughly. The only gap is that with no output schema, it does not indicate what a successful cancel returns.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, and the schema already points to list_credit_bundle_subscriptions as the id source. The description adds nothing about the subscription_id itself, so the baseline 3 applies.

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

Purpose5/5

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

"Stop a customer's credit bundle subscription from renewing" is a specific verb plus resource with an explicit scope (renewal stops, not deletion of credits/invoices). That cleanly separates it from sibling tools like update_credit_bundle_plan and list_credit_bundle_subscriptions.

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

Usage Guidelines4/5

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

It gives prerequisites and exclusions that select correct use: idempotent re-cancel is a no-op, Early-access status, billing-write credential required, and a claimed workspace is mandatory (403 otherwise). It does not name a sibling alternative for changing rather than cancelling the bundle, which keeps it below a 5.

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

cancel_ucp_checkoutA
DestructiveIdempotent
Inspect

Cancel a UCP checkout session: pass checkout_id. A completed session cannot be canceled, and canceling one that is already canceled changes nothing. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
checkout_idYesThe checkout session: its id, as create_ucp_checkout and list_ucp_checkouts show it.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description adds important behavioral details: completed sessions cannot be canceled, already-canceled sessions produce no change, and sandbox self-registration keys receive 403 until the workspace is claimed. These details materially help an agent predict outcomes and avoid failed calls.

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

Conciseness5/5

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

The description is compact and front-loaded, starting with the action and target before covering edge cases and prerequisites. Every sentence adds useful operational context.

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

Completeness5/5

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

For a one-parameter mutation tool with annotations and no output schema, the description covers the important preconditions, no-op behavior, auth scope, and workspace claim requirement. Nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter's schema description already explains that checkout_id is the session id shown by create_ucp_checkout and list_ucp_checkouts. The tool description only says to pass checkout_id, adding little beyond the structured schema.

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

Purpose5/5

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

The description states a specific verb and resource: cancel a UCP checkout session. It is clearly distinguishable from siblings such as complete_ucp_checkout, update_ucp_checkout, get_ucp_checkout, and list_ucp_checkouts.

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

Usage Guidelines4/5

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

It gives clear usage conditions and exclusions: a completed session cannot be canceled, and canceling an already canceled session is a no-op. It also names required credential scope and workspace-claim prerequisites, though it does not explicitly route to sibling alternatives.

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

change_team_member_roleA
DestructiveIdempotent
Inspect

Change a team member's role. The last owner cannot be demoted. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
roleYesThe new role.
user_idYesThe person's user id: user_id on a list_team_members result.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, yet the description adds material context beyond them: the last-owner guard, the exact credential shape (x-api-key with team:admin scope, tokens refused), and the 403 on unclaimed sandbox workspaces. Failure modes and authorization requirements are disclosed, which is exactly what a mutation tool needs.

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

Conciseness4/5

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

The action is front-loaded in the first sentence, followed by the constraint and the auth requirements in a logical order. It is dense but every clause conveys a distinct rule; only minor tightening of the credentialed-workspace sentence would improve it.

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

Completeness5/5

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

For a two-parameter destructive mutation with no output schema, the description covers purpose, authorization, the key business invariant, and specific rejection conditions. An agent has everything needed to call it correctly or predict why it would fail.

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

Parameters3/5

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

Schema description coverage is 100% and role already carries an enum, so the schema fully documents both inputs. The description adds no detail on the role values or the user_id format, so the baseline 3 applies.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource ("Change a team member's role"), which cleanly separates it from add_team_member, invite_team_member and remove_team_member. It stops short of naming those siblings explicitly, so an agent must infer the boundary 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.

Usage Guidelines4/5

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

Gives clear, actionable context on who may call it (an owner or admin with a team:admin-scoped x-api-key) and on the one business rule that blocks the call (the last owner cannot be demoted). It does not explicitly contrast with sibling tools, but the preconditions are strong enough to steer correct invocation.

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

check_agent_readinessA
Read-onlyIdempotent
Inspect

Run the free agent-ready check on a store: pass url, the store address. It reports whether shopping agents can check out, whether bot blocking is in the way and whether margin survives an agent's cut. It fetches the store, so it is limited per address and answers 404 while the check is not released. Public: needs no credential.

NameRequiredDescriptionDefault
urlYesThe store address to check.

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the tool fetches the store, that calls are rate-limited per address, that it returns 404 while the check is unreleased, and that no credential is required. These are exactly the operational traits (network access, throttling, error behavior, auth) an agent needs before calling.

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

Conciseness4/5

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

The action and the resource are front-loaded, and each sentence carries distinct information (purpose, reported signals, fetch behavior/limits, auth). A slightly more compact phrasing would earn a 5, but there is no filler.

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

Completeness4/5

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

With no output schema, the description does the work of describing what the check returns (checkout, bot blocking, margin). Combined with the disclosed 404/rate-limit behavior and public access, an agent has enough to invoke it correctly; only the response shape remains qualitative.

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

Parameters3/5

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

With schema description coverage at 100% and only one parameter, the schema already fully documents 'url'. The description's 'pass url, the store address' restates rather than enriches it, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Run the free agent-ready check on a store') and enumerates what it reports: checkout capability, bot blocking, and margin impact. An agent can tell this apart from siblings like simulate_agent_cut or get_agent_capabilities, though the description doesn't explicitly name an alternative.

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

Usage Guidelines3/5

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

Implies usage context ('free', 'public: needs no credential') and gives the input ('pass url, the store address'), but never says when to prefer this over related checks such as run_agent_behaviour_tests or simulate_agent_cut, nor when not to use it.

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

check_purchaseAInspect

Before you pay for something, ask whether your owner's spend policy lets you pay this price to this seller. Works for any purchase, whatever wallet or checkout you pay with. Returns a decision (allow, deny or ask), a reason code and a reason. allow comes with a reservation: the amount is held against today's cap, so make the purchase, then call settle_purchase with outcome paid (and the amount paid) or failed. ask means a person approves first; once they have, send the same check again. deny means do not buy. With include_fair_price, or when the policy asks for it, the price is also judged by verify_price and its verdict and band come back with the answer. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
itemNoOptional: what you are buying.
amountYesThe price you are about to pay.
intentNoOptional: what the buyer approved for this purchase, from an American Express intent, an AP2 intent mandate, or declared by you. A purchase that names another seller, costs more than max_amount (counting every purchase under the same intent_id), is in another currency or comes after expires_at is denied, whatever the policy allows. evidence (the token or mandate) is kept only as a hash and is not verified yet. Only where the workspace has intents switched on (else an error with code not_released).
pay_toNoOptional: the wallet address (bare or CAIP-10) or merchant account id the money goes to. A person's approval is then for that account only, and confirm_purchase and settle_purchase must name the same one: another is refused with code payee_changed. Only where the workspace has payee binding switched on (else an error with code not_released).
quotesNoOptional: competing offers for this purchase, yours among them. A procurement policy needs two above its two-quote threshold.
sellerYesWho you are paying: a store, domain, API or wallet name.
agent_idNoOnly with a workspace-wide key: check on behalf of this agent. An agent key always checks as itself.
categoryNoOptional: its category, when the policy limits categories.
currencyNoThree-letter ISO currency code. Defaults to USD.
agentid_tokenNoYour AgentID ID token, issued for Last Price, when your owner's policy lets only verified agents spend. Sent as the AgentID-Token header.
include_fair_priceNoAlso judge the price with verify_price and return its band.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) only say 'this mutates state', and the description goes far beyond: it discloses the reservation hold against today's cap, the required Last Price credential with price compute scope, and the 403 refusal for unclaimed sandbox workspaces. Those auth and side-effect details are exactly the context annotations cannot convey.

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

Conciseness4/5

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

Front-loaded with the core question and the decision semantics; every sentence carries operational weight (reservation, resend-on-ask, credential scope, claimed-workspace rule). Some sentences are dense and run-on, but there is no filler.

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

Completeness5/5

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

For an 11-parameter nested-schema tool with no output schema, the description supplies the missing return contract (decision, reason code, reason, fair-price band) and the follow-up obligations after allow. Nothing an agent needs to invoke it correctly or interpret the result is absent.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-tool meaning the schema cannot: include_fair_price triggers a verify_price judgment whose verdict and band come back, and the intent evidence is stored only as a hash and not yet verified. It does not re-explain seller/amount/currency, which the schema already handles well.

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

Purpose5/5

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

States a specific verb and resource ('check whether your owner's spend policy lets you pay this price to this seller') and distinguishes itself from nearby siblings by naming settle_purchase, verify_price, confirm_purchase and their roles. An agent can tell it apart from get_price_check or reconcile_purchase without opening any schema.

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

Usage Guidelines5/5

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

Explicitly gates timing ('Before you pay for something') and spells out the full decision workflow: allow → make the purchase then call settle_purchase with paid/failed; ask → resend after human approval; deny → do not buy. It also names the alternative path (include_fair_price routes to verify_price), leaving nothing to inference.

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

check_variant_significanceA
Read-onlyIdempotent
Inspect

Is there a winner yet in a price test? Send the trials and conversions of two to ten variants and get, for each, its chance of being best, its expected loss and a 95% credible interval, and a verdict of winner, equivalent or continue. With exactly two variants, the first is the control and a sequential probability ratio test is added. Change the prior, win_probability, loss_threshold or sprt settings to be stricter or looser. Billed as one call to the significance function. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
sprtNoSequential test settings for two variants.
priorNoBeta prior on the conversion rate. Defaults to a flat prior.
variantsYesTwo to ten variants, each with a unique id, its trials and its conversions (never more than trials).
loss_thresholdNoExpected loss under which a variant is good enough.
win_probabilityNoChance of being best needed to call a winner.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already assert readOnly/idempotent/non-destructive, and the description layers on non-obvious operational facts: billed as one call to the significance function, requires a Last Price credential with price compute scope, and a sandbox key from self-registration is refused with 403 until the workspace is claimed. That is exactly the kind of auth and cost context annotations cannot convey.

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

Conciseness4/5

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

Front-loaded with the decision question and the output contract; every sentence carries information, including the auth and billing notes. It is dense and runs long without visual breaks, which costs a point, but there is no filler.

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

Completeness5/5

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

There is no output schema, and the description compensates by enumerating all four returned values plus the verdict vocabulary. Combined with the two-variant control/SPRT rule, credential scope, and workspace-claim gating, an agent has everything needed to call it correctly or predict why it would fail.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning the schema lacks: the first of exactly two variants is the control, SPRT is only added in the two-variant case, and the four tunables trade strictness against looseness. These are behavioral semantics not derivable from property descriptions.

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

Purpose5/5

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

Opens with a concrete question ('Is there a winner yet in a price test?'), then names the input (trials and conversions of two to ten variants) and the exact outputs (chance of being best, expected loss, 95% credible interval, verdict). This is clearly a statistical significance computation, distinguishable from experiment-lifecycle siblings like get_experiment_results or propose_experiment_variant.

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

Usage Guidelines4/5

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

The opening question plus the two-variant SPRT note give a clear sense of when this tool applies, and 'Change the prior, win_probability, loss_threshold or sprt settings to be stricter or looser' tells the agent how to tune strictness. It stops short of naming alternatives (e.g. get_experiment_stopping) 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.

close_spend_sessionAInspect

Close a session when its run of calls is done, once: what you drew counts as spent, and returned says how much of the maximum went back to today's cap. Close as soon as you are done rather than letting it lapse, so the rest of the budget is free for other purchases at once. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
noteNoOptional: why the run ended.
session_idYesreservation.id from open_spend_session.

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the settlement side effect (drawn counts as spent, remainder returns to cap), the single-use nature ("once", consistent with idempotentHint=false), and the two hard preconditions: a Last Price credential with price compute scope and a claimed workspace, with the specific 403 on sandbox keys. This is the kind of precondition detail an agent cannot get from the schema.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, with effects and then prerequisites following in logical order. Slightly padded — "rather than letting it lapse, so the rest of the budget is free for other purchases at once" restates the same incentive twice — but no sentence is wasted.

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

Completeness4/5

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

With no output schema, the description correctly explains the return value (how much of the maximum went back to the cap) and covers auth and workspace preconditions for a mutation call. It omits what happens on a double close or an expired session, a minor gap for a non-idempotent mutation.

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

Parameters3/5

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

Schema coverage is 100%, so session_id (reservation.id from open_spend_session) and the optional note are already documented. The description adds no further parameter-level detail such as format or constraints, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource ("Close a session") with the exact effect spelled out: drawn amounts count as spent and unused budget returns to today's cap. Clear enough for an agent to understand it, but it never distinguishes this from the sibling settle_session_draw, which sounds functionally adjacent.

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

Usage Guidelines4/5

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

Explicit timing guidance: close once the run of calls is done, and close promptly rather than letting the session lapse so budget frees immediately. No exclusion or alternative tool is named, so the agent gets a clear when but no when-not.

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

complete_ucp_checkoutA
Destructive
Inspect

Complete a UCP checkout session: pass checkout_id. Payment processing is not configured yet, so an open session answers 501 until a payment provider is set up; a session that is already completed is returned as it is. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
checkout_idYesThe checkout session: its id, as create_ucp_checkout and list_ucp_checkouts show it.

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations it discloses real behavioral traits an agent could not infer: the 501 payment-provider precondition, that an already-completed session is returned unchanged, the required Last Price credential with price compute scope, and the 403 workspace-claim gate. That is exactly the extra context annotations cannot carry.

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

Conciseness4/5

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

Three front-loaded sentences: action first, then failure modes, then credential/workspace requirements. Every sentence carries operative information, though the credential and workspace prerequisites are packed densely into the closing lines rather than split cleanly.

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

Completeness3/5

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

Auth requirements and error codes are well covered, which is most of what a one-parameter call needs. However, with destructiveHint=true and no output schema, the description never says what completion actually does or destroys (payment capture, order placement, irreversibility), leaving a material gap.

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

Parameters3/5

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

Schema coverage is 100% and the schema already explains that checkout_id is the id shown by create_ucp_checkout and list_ucp_checkouts. The description's "pass checkout_id" adds no format or sourcing detail beyond that, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Complete a UCP checkout session") plus the single required input, which cleanly separates it from the create/update/get/cancel siblings by verb. It does not explicitly name which sibling to use instead, but the action is unambiguous.

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

Usage Guidelines4/5

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

It gives concrete when-not conditions: open sessions answer 501 until a payment provider is configured, and unclaimed workspaces or sandbox self-registration keys are refused with 403. It stops short of naming an alternative tool to use in those failure cases, so it is clear context without full routing guidance.

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

compute_priceAInspect

Compute a price for a product/context via the Last Price Pricing Compute Network. Returns the computed price, the function that produced it, token metering/cost, and a trace listing each stage the request passed through (cache, route, execute, fallback, constrain, meter). For a competitor offer, put competitor_price, competitor_currency and competitive_action in metadata, then supply min_price or unit_cost with target_margin_pct. Missing business inputs return an error naming them. To pay for this one call with x402 instead of a key or a balance, pass payment: a signed payment for the price it asks (call it without payment to read what it asks). Where quote expiry is switched on for the workspace, the result carries valid_until (RFC 3339): quote or charge the price only before then, and compute again after.

NameRequiredDescriptionDefault
geoNoOptional geography hint, e.g. US.
channelNoOptional. The sales channel the price is for, such as a shopping agent or an agent marketplace. When your workspace saved a rate for it with set_channel_rates and channel pricing is on, the price is raised so you keep the same amount after the channel's cut.
paymentNoOptional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header. Omit it to read what the call costs and how to pay; nothing is charged until you send it.
currencyYesThree-letter ISO currency code, e.g. USD.
metadataNoOptional context. For competitive pricing: competitor_price, competitor_currency and competitive_action (match or undercut); undercut requires undercut_pct. Confirm product comparability before calling.
max_priceNoOptional maximum acceptable price.
min_priceNoOptional minimum acceptable price. A competitive offer needs this or a declared unit_cost and target_margin_pct.
unit_costNoWhat the work costs you. It lets lastprice/cost-plus price with no current_price, which is the usual case when pricing a task you are about to run. Routing picks a function that can use it; to require cost-plus, pass its UUID from list_functions as function_id.
buyer_typeNoOptional. Who the price is for: an AI agent or a person. Recorded with the quote only.
no_exploreNoIf true, give this price exactly as computed, without the small per-call variation a workspace may run so learned pricing can learn what buyers will pay (see get_price_exploration).
product_idNoOptional identifier of what is being priced.
buyer_agentNoOptional. The buying agent, e.g. chatgpt or agent.example.com. A label recorded with the quote only (while its release flag is on); never sent to the pricing function.
function_idNoOptional explicit pricing function UUID to use.
product_typeNoOptional category. Defaults to "custom".
current_priceNoThe current or reference price. Optional: functions that price relative to an incumbent need it, but lastprice/cost-plus prices from unit_cost instead.
outcome_termsNoOptional, for a price charged per outcome. When the outcome counts as failed and what is owed then. Where outcome terms are switched on for the workspace, the result carries outcome_terms: these terms normalised, the deadline as a time, the amount owed on timeout, and which terms are missing (complete is false without success_definition, resolve_by and on_timeout). Sending it marks the price as an outcome price; so does metadata.unit "outcome".
idempotency_keyNoOptional. A new value (e.g. a UUID) for each call you mean to make; send the SAME value if you retry after a timeout or error you cannot interpret, and the call is computed and charged once. Ignored without a credential.
learned_routingNoOptional. With routing_preference cheapest, fastest, round robin or weighted, let the router learn which of the functions that strategy chooses from serves your workspace best (from your own routed calls), falling back to the strategy while there is too little data. Ignored for any other preference or a function_id, and until learned routing is released for your workspace. get_learned_routing with strategy shows what it learned.
customer_segmentNoOptional segment, e.g. enterprise.
target_margin_pctNoMargin on price for cost-plus, not markup on cost: price = unit_cost / (1 - margin). Defaults to 30.
routing_preferenceNoHow to route across pricing functions. Defaults to "default".
include_explanationNoIf true, ask for an explanation and confidence with the price.
include_buyer_envelopeNoIf true, and metadata.category names a category, the result carries buyer_envelope: what buyers' own spend checks allowed in that category (p25 to p75, the median, and how often checks were refused over a limit, pooled over 5 or more buyer workspaces; no numbers below 5) and where this price sits. A limit, not a valuation: it never changes the price. Where it is not switched on for the workspace it is ignored.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations, the description discloses return contents, trace stages, error behavior for missing inputs, payment flow, and quote-expiry semantics. This is unusually rich behavioral disclosure for a complex pricing call.

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

Conciseness4/5

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

The description is dense but front-loads purpose and return values before detailing competitor, payment, and expiry behavior. It is appropriately sized for a complex pricing call, though individual sentences carry multiple distinct rules.

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

Completeness5/5

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

For a 23-parameter tool with no output schema, the description explains the main return fields and key operational edge cases. An agent has enough context to call it correctly in normal, competitive, payment, and expiry scenarios.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description still adds meaningful semantics for competitor metadata fields, min_price/unit_cost/target_margin_pct, payment, and valid_until, though it does not cover every one of the 23 parameters.

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

Purpose5/5

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

The description states a specific action and resource: 'Compute a price for a product/context' and names the pricing network. It distinguishes itself from general pricing-analysis tools by describing returned pricing outputs and competitive-offer handling.

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

Usage Guidelines4/5

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

It gives clear usage context for competitive offers, missing inputs, x402 payment, and quote expiry. It does not explicitly say when to prefer compute_prices_batch, estimate_task_cost, or price_from_capture instead.

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

compute_prices_batchAInspect

Price up to 100 requests in one call. Each item in requests is the same request compute_price takes: a context with a three-letter currency and optionally a product, current price, segment, geo and metadata, plus an optional function_id, routing preference, constraints and options. Every item is one metered call, drawn together from your prepaid balance, all or nothing: a balance short of the whole batch charges nothing. An item that does not price comes back as an error in its place and is given back. Send the same idempotency_key to retry safely: a repeat answers from the first answer and re-runs only the items that did not price. Needs a Last Price credential with batch price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
requestsYesThe price requests, at most 100, answered in the same order.
idempotency_keyNoA new value for each batch you mean to run; send the same value to retry it.

TDQS

A4.4/5.0
Behavior5/5

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

Goes far past the annotations: metered per-item billing, prepaid balance draw that is all-or-nothing ('a balance short of the whole batch charges nothing'), per-item failures returned in place and refunded, keyed retry semantics, required scope, and a 403 for unclaimed sandbox workspaces. This is exactly the cost/failure/auth context annotations cannot carry.

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

Conciseness4/5

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

Scope and batch limit are front-loaded, then billing, then error/retry, then auth — a sensible order with no filler. Some sentences are long and chain many clauses, which slows scanning slightly.

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

Completeness5/5

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

With no output schema, the description still covers the result shape an agent needs: answers in the same order as requests, per-item errors returned in their slot, and replays answering from the first response. Cost, failure and auth preconditions are all stated.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents context, options, constraints, function_id, routing_preference and idempotency_key. The description adds some meaning by restating the item shape and by explaining idempotency_key usage intent, but does not add format or range detail beyond the schema (e.g. the 100-item cap is repeated from maxItems).

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

Purpose5/5

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

States a specific verb, resource and hard scope ('Price up to 100 requests in one call') and explicitly anchors each item to the sibling 'compute_price takes', so an agent knows exactly what this batches. Distinguishable from compute_price, run_pricing_chain and contribute_price_data_batch without opening a schema.

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

Usage Guidelines4/5

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

Implies the selection rule well: use this for many requests, since each item is the same object compute_price accepts, and it explains the retry path via idempotency_key. No explicit 'do not use when' case (e.g. single request, or items spanning workspaces), which keeps it short of a 5.

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

confirm_purchaseAInspect

Call right before you pay for a purchase check_purchase allowed. If the workspace's owner changed the spend policy since the purchase was approved (a lower maximum, a lower daily cap, a blocked seller), it is checked again under the rules as they stand now. confirmed true: pay now. An error saying the policy changed: do not pay; the hold was released, so check the purchase again. Only while the workspace has confirming switched on (the reservation then names confirm). Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
pay_toNoThe account you are about to pay, when check_purchase named pay_to (then required). Another account releases the hold with code payee_changed: do not pay.
reservation_idYesreservation.id from check_purchase.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses revalidation under the current spend policy, release of the hold on policy-changed errors, the need to re-check before retrying, the conditional confirming mode, credential scope requirements, and the 403 behavior for unclaimed sandbox workspaces.

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

Conciseness5/5

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

The description is compact and front-loads the core instruction: call right before paying. Subsequent sentences each add necessary operational detail, including policy rechecks, error handling, prerequisites, and credential/workspace constraints.

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

Completeness5/5

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

For a non-idempotent purchase-confirmation mutation with no output schema, the description covers the critical operational context: timing, policy revalidation, error outcomes, hold release, credential scope, and workspace-claim prerequisites.

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

Parameters3/5

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

Schema coverage is 100%, so reservation_id and pay_to are already well documented in the input schema. The description reinforces the connection to check_purchase and payee-change handling, but the schema itself carries most parameter semantics.

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

Purpose5/5

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

The description states a specific action tied to a clear moment: call right before paying for a purchase that check_purchase allowed. It distinguishes this from check_purchase by positioning confirm_purchase as the final pre-payment confirmation step.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance: right before paying, only while the workspace has confirming switched on, and only with a claimed workspace and a Last Price credential with price compute scope. It also states the action to take when confirmation succeeds and what to do when the policy-changed error occurs.

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

contribute_price_dataAInspect

Share one observed price with the data exchange and earn 10 tokens. The data point joins the shared pool that other workspaces can read, so send only prices that are public. The same source, product and price within 24 hours is refused as a duplicate and earns nothing. Send source_url, product_name, price and a vertical such as saas. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
priceYesThe price seen, in currency units.
currencyNoThe currency code. Defaults to USD.
metadataNoAny extra detail to keep with the data point.
verticalYesThe market the price belongs to, for example saas.
plan_nameNoThe plan tier, when the product has several.
scraped_atNoWhen the price was seen, as an ISO 8601 date-time. Defaults to now.
source_urlYesThe public page the price was seen on.
product_nameYesThe product or plan the price is for.

TDQS

A3.9/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: the data joins a pool readable by other workspaces, duplicates within 24 hours earn nothing, and sandbox keys get a 403 until the workspace is claimed. This is effectively why idempotentHint=false matters and reinforces destructiveHint=false (pool is append-only, not overwriting), though the return value of a successful call is unspecified.

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

Conciseness4/5

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

Five tight sentences, front-loaded with the action and reward before constraints and prerequisites. The parameter listing sentence is the only one that borders on redundant given the schema.

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

Completeness4/5

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

Covers the reward, public-data constraint, dedup window, required fields, and auth prerequisite — enough to call correctly with 8 params and no output schema. It does not describe what the response returns on success, which is a small remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is already documented. The description restates the four required fields and gives one example vertical ('such as saas'), which is minor added value but largely overlaps the schema.

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

Purpose4/5

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

States a specific verb and resource — 'Share one observed price with the data exchange' — and the reward. The word 'one' implicitly separates it from the batch sibling, but it never names contribute_price_data_batch explicitly, so the differentiation must be inferred.

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

Usage Guidelines4/5

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

Gives clear when-to-use context (public prices only), a concrete exclusion rule (duplicate source+product+price within 24h is refused), and a prerequisite (claimed workspace required). It stops short of pointing to the batch tool as the alternative for multiple contributions.

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

contribute_price_data_batchAInspect

Share up to 100 observed prices with the data exchange in one call, 10 tokens for each one accepted. Each item is the same data point contribute_price_data takes. The data joins the shared pool other workspaces can read, so send only public prices. An item that repeats a source, product and price from the last 24 hours is reported as a duplicate, earns nothing and does not stop the rest. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
contributionsYesOne to 100 data points, each as contribute_price_data takes it.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (which only declare the operation is a non-idempotent write): it discloses the 10-token-per-accepted-item reward, the 24-hour duplicate window and that duplicates earn nothing but do not abort the rest of the batch, the shared-pool visibility consequence, and the 403 for unclaimed sandbox keys. These are the traits an agent needs before committing a batch.

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

Conciseness5/5

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

Four sentences, front-loaded with purpose and reward, then semantics, then the sharing warning, then the duplicate and auth rules—every sentence carries distinct, actionable information with no filler.

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

Completeness4/5

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

For a mutation tool with no output schema and only hint-level annotations, it covers cost, deduplication, visibility and authorization. It leaves unstated what the response reports per item (accepted/duplicate/rejected) and whether a malformed item aborts the batch the way duplicates do not.

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

Parameters3/5

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

Schema description coverage is 100%, so the nested item fields are already documented in the schema, and the description's 'up to 100' merely restates maxItems. The one genuinely additive element is the cross-reference that each item is the same data point contribute_price_data takes, which lets the agent reuse the sibling's semantics; otherwise the description does not add syntax or defaults beyond the schema.

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

Purpose5/5

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

States a specific verb, resource and quantity ('Share up to 100 observed prices with the data exchange in one call') and explicitly distinguishes itself from the single-item sibling by saying each item is the data point contribute_price_data takes. An agent can tell it apart from contribute_price_data without opening either schema.

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

Usage Guidelines4/5

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

Implies when to use it ('in one call', each item same as contribute_price_data) and adds a real exclusion—send only public prices because the data joins a shared pool. It also names an operational precondition (claimed workspace, sandbox key gets 403) rather than leaving the agent to discover it at call time. It stops short of an explicit 'use contribute_price_data for a single point' routing sentence.

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

create_card_topupAInspect

Add to your workspace's prepaid balance by card, when no crypto wallet is at hand to sign an x402 payment. amount is in US dollars with whole cents, such as "25". Nothing is charged by this call: it returns a checkout link, a card payment page for exactly that amount, and the top-up id. Give the link to the person who runs you; once they pay, the balance is credited one USDC per dollar. Poll get_card_topup with the top-up id until its status is paid. Not every workspace has card top-ups yet: a refusal lists the other ways to pay. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault
amountYesUS dollars to add, with at most 2 decimals, such as "25" or "25.50".

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations: discloses that nothing is charged at call time, exactly what is returned (checkout link, card payment page, top-up id), the credit conversion rate, the required credential and scope (Last Price with price:compute), and the possibility of a refusal with alternatives. That is the full behavioral picture for a mutation-ish creation call.

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

Conciseness4/5

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

Purpose is front-loaded and every sentence carries information (amount format, no-charge guarantee, return shape, polling loop, availability, auth). It is on the long side and the critical 'Nothing is charged by this call' sits mid-paragraph rather than up front.

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

Completeness5/5

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

No output schema exists, and the description compensates by naming all three return values and the follow-up polling tool. Combined with the auth scope and availability caveat, an agent has everything needed to call and then complete the flow.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the amount format and pattern, so baseline is 3; the description adds meaning beyond the schema by tying the amount to the credit rate ('one USDC per dollar') and restating the whole-cents convention. It does not add new syntax, but the conversion semantics are genuine value.

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

Purpose5/5

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

States a specific verb+resource ('Add to your workspace's prepaid balance') plus the mechanism ('by card') and the condition that selects it over the x402/crypto path. An agent can tell this apart from top_up_balance without opening either schema.

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

Usage Guidelines5/5

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

Gives the when ('no crypto wallet at hand to sign an x402 payment'), the follow-up workflow ('Give the link to the person who runs you... Poll get_card_topup with the top-up id until its status is paid'), and the fallback ('a refusal lists the other ways to pay'). Exclusions and alternatives are explicit.

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

create_commerce_connectorAInspect

Link a store to the commerce pipeline: platform is one of the platforms list_commerce_connectors offers. Store credentials go in credentials; they are kept encrypted and never returned, but they do pass through this conversation, so use a key made for the purpose. The metadata also sets where competitor prices come from. Needs the owner or admin role and a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
metadataNoPlatform settings, including where competitor prices come from.
platformYesThe store platform, e.g. memory for a demo store.
credentialsNoThe platform credentials. Write-only.
display_nameYesA name for the connector.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only state readOnly=false/destructive=false/idempotent=false. The description goes well beyond: credentials are encrypted and never returned yet transit the conversation (a real security caveat), and unclaimed workspaces are refused with 403 until a person claims them. That is exactly the failure-mode and side-effect context annotations cannot convey.

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

Conciseness4/5

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

Four dense sentences, purpose front-loaded, no filler. The prerequisites and credential warning are packed tightly, though the security caveat and the 403 rule could be split for easier scanning.

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

Completeness4/5

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

For a mutating 4-param tool with nested objects and no output schema, the description covers auth, scope, credential handling, and a specific failure code. The only notable gap is what happens on a duplicate/already-linked store, though idempotentHint=false partially covers it.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real semantics: the valid value space for `platform` comes from list_commerce_connectors, `credentials` is write-only and sensitive, and `metadata` controls competitor price sourcing. That exceeds what the schema text says.

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

Purpose5/5

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

Opens with a specific verb+resource: 'Link a store to the commerce pipeline', and names the sibling that supplies valid platform values (list_commerce_connectors). An agent can distinguish this from sync_commerce_connector or set_commerce_connector_active without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete preconditions for use: owner/admin role, a Last Price credential with commerce configure scope, and a claimed workspace, plus the routing to list_commerce_connectors for platform values. It stops short of explicitly naming when not to use it (e.g., when a connector already exists, use sync_ instead), so not a full 5.

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

create_commerce_policyAInspect

Create a commerce pricing policy: the rules the pipeline uses to draft price proposals, with an optional floor and ceiling and an approval mode. Starts active. Needs a Last Price credential with commerce configure scope, and a claimed workspace. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameYesA name for the policy.
rulesYesThe rules, tried in order; the first that produces a price wins. Each rule has an id, a kind and the fields its kind needs: a percent to undercut by, an amount to beat the lowest price by, a percent off the list price, a competitor to match, a fixed price, or a routing choice. The Pricing Policies section of the documentation lists them.
scopeNoWhich items the policy covers: skus, brands and marketplaces lists. Empty covers every item.
is_activeNoWhether the pipeline applies the policy.
descriptionNoWhat the policy is for.
floor_priceNoNo proposal goes below this price.
approval_modeNomanual queues every proposal for a decision, auto approves small changes, shadow records proposals without acting on them.
ceiling_priceNoNo proposal goes above this price.
auto_approve_max_delta_pctNoWith approval_mode auto: proposals that move the price by at most this percent skip the queue. Required for auto.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only say write, non-destructive, non-idempotent; the description adds materially more: the policy starts active (so it affects live pricing immediately), which credential scope is required, and that unclaimed workspaces get a 403. Those are exactly the operational facts an agent needs before committing a mutation.

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

Conciseness3/5

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

The front-loaded definition is efficient and useful, but the closing authority/workspace requirement is stated twice in slightly different words ('Needs a claimed workspace... Needs a claimed workspace: a sandbox key...'), which is redundant and could have been one sentence.

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

Completeness4/5

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

For a 9-parameter, nested-object mutation with no output schema, the description covers purpose, default active state, and access prerequisites. It does not say what is returned on success (the created policy) or that creates are non-idempotent, but the annotation already flags non-idempotency.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds the semantic link between floor_price/ceiling_price and the pipeline ('optional floor and ceiling') and names approval mode as a behavioral choice rather than a field. Rule ordering semantics are in the schema, not repeated here.

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

Purpose4/5

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

States a precise verb (create) and a precisely named resource (commerce pricing policy), then explains what the resource is: the rules the pipeline uses to draft price proposals. It is clearly distinct from create_routing_policy and update_commerce_policy by wording alone, though it never names a sibling to route away from.

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

Usage Guidelines4/5

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

Gives concrete preconditions for invocation: a Last Price credential with commerce configure scope and a claimed workspace, plus the fact that a self-registration sandbox key is refused with 403. It does not say when to prefer update_commerce_policy or list_commerce_policies instead, so no explicit exclusions or alternatives are offered.

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

create_contactAInspect

Add a contact to a customer: pass customer_id, name and email, and optionally external_id (unique within the customer), phone, address and metadata. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameYesThe contact name.
emailYesThe contact email.
phoneNoThe contact phone number.
addressNoThe contact address.
metadataNoAnything worth keeping with the record.
customer_idYesThe customer: its id, as list_customers shows it.
external_idNoYour own id for the contact, unique within the customer.

TDQS

A4.2/5.0
Behavior4/5

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

The description adds useful behavior beyond the annotations: workspace and credential prerequisites plus a specific 403 refusal condition. It does not cover return behavior or duplicate handling beyond stating that external_id is unique within the customer, but annotations already declare the non-read-only, non-destructive, non-idempotent safety profile.

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

Conciseness5/5

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

The description is front-loaded with the core action and required parameters, then adds prerequisites without unnecessary prose. Both sentences carry useful information and avoid repetition.

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

Completeness4/5

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

Given full schema parameter descriptions and annotations covering safety and idempotency, the description is complete enough to invoke the tool correctly. It could be stronger if it mentioned what the tool returns or how duplicate external_id conflicts are surfaced, since no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters. The description lists required and optional fields and repeats that external_id is unique within the customer, but adds little semantic detail beyond the schema.

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

Purpose5/5

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

The description states a specific action and resource: "Add a contact to a customer." It also names the customer relationship and required fields, which clearly distinguishes creation from sibling operations such as update_contact or delete_contact.

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

Usage Guidelines4/5

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

It gives important usage context: a claimed Last Price credential and claimed workspace are required, and sandbox self-registration keys are refused with 403 until claimed. It does not explicitly route the agent to alternatives such as update_contact for existing contacts, so it stops short of full 5-level guidance.

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

create_creditAInspect

Grant a customer a prepaid credit bundle: pass customer_id and amount, and optionally currency (default USD), expires_at and metadata. The balance starts at the amount. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountYesThe amount.
currencyNoThe currency code. Defaults to USD.
metadataNoAnything worth keeping with the record.
expires_atNoWhen the bundle expires, as an RFC 3339 date-time.
customer_idYesThe customer: its id, as list_customers shows it.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's added value is the behavioral detail: the new balance starts at the amount, and auth/sandbox constraints that produce a 403. It does not disclose the failure modes for invalid amounts, duplicate grants, or whether the grant can be reversed with delete_credit.

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

Conciseness5/5

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

Three sentences, front-loaded with the action, the required parameters and the resulting state, then the two authorization gates. Nothing is redundant with the schema and no sentence could be dropped without losing information.

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

Completeness4/5

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

For a mutating tool with five parameters, nested metadata and no output schema, the description covers action, required inputs, resulting state and authorization prerequisites. It is only short on what the call returns (the created credit record and its id) and on any rate-limit or duplicate-grant behavior, which matter because there is no output schema to fall back on.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it establishes that amount is the starting balance value, confirms currency defaulting to USD, and marks expires_at and metadata as optional. The meaning of 'amount' as a unit (major units vs. minor units) remains ambiguous, matching the schema's bare 'The amount.'

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

Purpose4/5

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

The description opens with a specific verb and resource ('Grant a customer a prepaid credit bundle'), which is far more precise than the tool name alone and clearly differentiates it as a per-customer credit issuance rather than a wallet top-up. It does not, however, name the adjacent operations (top_up_balance, create_card_topup, create_invoice) it should be distinguished from.

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

Usage Guidelines4/5

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

It states concrete preconditions for use: a claimed Last Price credential with billing write scope, and a claimed workspace, with the explicit note that a self-registration sandbox key gets a 403. That is strong 'when this will work' guidance, but there is no explicit 'when not to use this / use X instead' routing among the many sibling credit and billing tools.

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

create_credit_bundle_planAInspect

Create a credit bundle to sell: a name, price, billing frequency and credits (null for unlimited). status active puts it on sale now; inactive (the default) saves it to activate later. Without a code, one is made from the name. Early access. Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
codeNoUnique in the workspace; cannot change later.
nameYes
priceYes
statusNo
creditsYesCredits per period; null for unlimited.
currencyYesISO 4217 code in upper case; cannot change later.
descriptionNo
rollover_creditsNoMost credits that roll over; 0 for none, null for unlimited.
billing_frequencyYes

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: early-access status, a required Last Price credential with billing write scope, a concrete failure mode (403 for sandbox keys until the workspace is claimed), and the default mutating behavior that inactive saves rather than sells. It also discloses a side effect the schema only hints at: a code is auto-generated from the name when omitted.

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

Conciseness4/5

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

Front-loaded with the core action and its fields, then defaults, then prerequisites, then gating caveats — a sensible order for an agent scanning quickly. The telegraphic phrasing ('a name, price, billing frequency and credits') is slightly clipped, but no sentence is filler.

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

Completeness4/5

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

For a non-idempotent mutation with 9 parameters and no output schema, the description covers the major unknowns: defaults, auth scope, workspace claim requirement, and code generation. The remaining gap is that it never says what comes back on success (e.g., the created plan and its generated code) or how duplicates/conflicts are handled.

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

Parameters4/5

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

With only 44% schema description coverage, the description carries real load: it explains credits=null means unlimited, defines the two status values behaviorally, and clarifies code defaulting/derivation from name. It leaves billing_frequency's one_time-vs-recurring semantics and the required currency/description fields to the schema, so some required inputs remain thin.

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

Purpose5/5

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

States a specific verb+resource ('Create a credit bundle to sell') and immediately enumerates the defining attributes (name, price, billing frequency, credits). An agent can distinguish it from update_credit_bundle_plan, list_credit_bundle_plans, and grant_credit_bundle_plan without opening any schema.

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

Usage Guidelines4/5

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

Gives clear creation-time choices: 'status active puts it on sale now; inactive (the default) saves it to activate later' tells the agent which status to pick for which intent, and prerequisites (billing write scope, claimed workspace) gate the call. It stops short of naming the sibling to use for later changes (update_credit_bundle_plan) or for assigning bundles to customers (grant_credit_bundle_plan).

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

create_customerAInspect

Add a customer: pass name, and optionally email, external_id (your own id for it) and metadata. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameYesThe customer name.
emailNoThe customer email.
metadataNoAnything worth keeping with the record.
external_idNoYour own id for the customer.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare that this is a non-readonly, non-idempotent, non-destructive operation. The description adds valuable behavioral context not in the annotations: it requires a claimed Last Price credential and a claimed workspace, and specifically warns that a sandbox self-registration key is refused with 403 until a person claims the workspace.

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

Conciseness5/5

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

The description is two tight sentences, front-loads the action and parameters, then gives the prerequisite caveat. Every sentence carries useful information with no redundant filler.

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

Completeness3/5

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

The description covers the basic call shape and important auth/workspace prerequisites, but with no output schema it does not explain what is returned after creation. It also omits duplicate/uniqueness behavior for email or external_id, which matters for a create operation with external identifiers.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the schema and the baseline is 3. The description restates that name is required and email, external_id, and metadata are optional, but adds little semantic detail beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb and resource ('Add a customer') and lists the created fields, making the core operation clear. It does not explicitly distinguish itself from nearby siblings such as create_contact, update_customer, or get_customer_by_external_id, so it falls short of full sibling differentiation.

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

Usage Guidelines3/5

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

The description implies the tool is for creating a new customer and states prerequisites about a claimed credential and workspace. It does not say when to use this versus update_customer, get_customer_by_external_id, or create_contact, and it gives no explicit exclusions.

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

create_disputeAInspect

Open a payment dispute: pass payment_id and amount, and optionally currency (default USD), customer_id, reason, status (default open) and metadata. Workspace owners and admins are emailed and subscribed endpoints get dispute.opened. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountYesThe disputed amount.
reasonNoWhy it is disputed.
statusNoThe dispute status.
currencyNoThe currency code. Defaults to USD.
metadataNoAnything worth keeping with the record.
payment_idYesThe payment that is disputed.
customer_idNoThe customer who disputed it.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing side effects (workspace owners/admins are emailed, subscribed endpoints receive dispute.opened) and exact failure behavior (403 until the workspace is claimed). Annotations only cover the safe-mutation profile; the description adds the operational consequences of calling it.

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

Conciseness4/5

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

Three front-loaded sentences with no filler: purpose first, parameters second, side effects and auth third. Slightly run-on in the parameter list, but every clause carries information an agent needs.

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

Completeness5/5

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

For a 7-parameter mutation with annotations but no output schema, it covers purpose, required inputs, notification/webhook effects, and authorization/gating requirements. Nothing essential to a correct, non-failing call is missing.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds real value by marking which two fields are required vs optional and by supplying the default for status ('open'), which the schema description for status does not state. No format or validation detail beyond that.

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

Purpose5/5

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

Opens with a precise verb+resource ('Open a payment dispute') and immediately enumerates the key inputs, so an agent can distinguish it from get_dispute, list_disputes, update_dispute and refund_payment without opening the schema.

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

Usage Guidelines4/5

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

Gives clear preconditions for the call (claimed pricing credential, claimed workspace; sandbox keys get 403), which is strong context for when the tool will work. It does not, however, state when to prefer this over update_dispute or how it relates to refund_payment, 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.

create_experimentAInspect

Create a price experiment in draft. It needs two to ten variants, one named control, each with a price; weights are optional but must then be on every variant: relative for two variants, whole percentages adding up to 100 for more. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
keyYesA key for the experiment: lowercase letters, digits and underscores only.
nameYesA name for the experiment.
variantsYesThe arms to compare.
descriptionNoWhat the experiment tests.
target_sample_sizeNoHow many buyers to reach before reading a winner.

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag this as a non-idempotent, non-destructive write, but the description adds the failure mode (403 until the workspace is claimed) and the fact that the experiment lands in draft. Credential and account-state requirements are exactly the kind of context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the action and state, then constraints, then preconditions in a logical order. It is dense but every clause carries a real rule; the weight sentence is slightly run-on but still parses cleanly.

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

Completeness4/5

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

For a 5-parameter creation tool with no output schema, it covers the essentials: validation constraints, required credential, and workspace-claim gate. It could note what the call returns (e.g., the draft experiment identifier) since no output schema exists to cover that.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description earns above baseline by stating cross-field constraints the schema cannot express: weights must be consistent across variants, relative values for two variants versus whole percentages summing to 100 for more, and one variant must be the control.

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

Purpose4/5

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

Opens with a specific verb, resource and resulting state: "Create a price experiment in draft." That cleanly separates it from list_experiments, get_experiment_definition and propose_experiment_variant. It never names a sibling explicitly, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives concrete preconditions (Last Price credential, claimed workspace, self-registered sandbox key gets a 403) and structural requirements (2–10 variants, exactly one control). It does not contrast with alternatives such as propose_experiment_variant, so it lacks explicit when-not guidance.

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

create_functionAInspect

Register a pricing function in your workspace. execution_type is how it prices: rule based, ML model, LLM prompt, external API (your own endpoint) or composite. name is its unique lowercase id, such as acme/surge. Set is_public to list it for other workspaces. A new function starts as a draft unless status is active: make it active with update_function to have it routed to. A rule_based function prices by the rule you send (base, then steps such as margin, tiers, floor and price ending). Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameYesUnique lowercase id: letters, digits, hyphens, underscores and slashes.
ruleNoFor a rule based function: the rule it prices by. Its input schema is made from the rule, and a rule based function needs one before it can be active. On update null removes it.
tagsNoThe tag list. On update it replaces the whole list.
statusNodraft (the default) or active, to have it routed to at once. A self-registered sandbox saves drafts only.
is_publicNoList it for other workspaces to use. Defaults to false.
auth_configNoHow to authenticate to the endpoint, such as { type: "bearer", token: "..." }. Stored encrypted and never returned: a read says only whether one is saved. On update an object replaces it and null removes it. Treat the secret as sensitive: it passes through this conversation.
descriptionNoWhat the function does.
display_nameYesThe name people and agents see.
endpoint_urlNoFor a function that calls your own service: the https endpoint that returns the price.
input_schemaNoJSON Schema of what a price request supplies to the function.
cost_per_unitNoWhat one call to the function costs, in USD.
output_schemaNoJSON Schema of what the function returns.
execution_typeYesHow the function computes a price.
cost_multiplierNoMultiplies the cost of each call, for a more expensive model tier. 1 is the default; stored to 4 decimal places.
inference_configNoFor a function that runs on a model. On update an object replaces it and null removes it, so the function uses the rule-based formula.
quote_valid_secondsNoHow long a price this function computes stays valid, in seconds (30 to 86400). Prices carry it as valid_until where quote expiry is switched on for the workspace. Omit for the default of 15 minutes; on update null returns to the default.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare the write/non-idempotent/non-destructive profile; the description adds real behavioral context beyond that: new functions start as drafts, activation requires a second call, a scope-bound credential is mandatory, and an unclaimed workspace yields a 403. These are the failure modes an agent will actually hit.

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

Conciseness4/5

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

Front-loaded with purpose, then execution_type, then naming, then visibility, then lifecycle and prerequisites — a sensible order. A few clauses (the rule/steps enumeration) largely restate the schema, but the paragraph is dense and mostly earns its length for a 16-parameter tool.

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

Completeness4/5

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

With 16 parameters, nested objects and no output schema, the description covers the workflow essentials: what is created, default draft state, how to activate, and blocking prerequisites. It omits the secret-handling caution for auth_config and cost/expiry details, but those are documented in the schema, so the gap is minor.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds value by giving a concrete name example ('acme/surge') not present in the schema and by summarizing the rule shape (base, then steps such as margin, tiers, floor, price ending). Much of this overlaps the schema's own nested descriptions, which keeps it from a 5.

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

Purpose5/5

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

States a specific verb and resource ('Register a pricing function in your workspace') and immediately scopes it with the five execution_type variants, so an agent knows this creates a pricing function of any kind rather than a hosted model or routing policy. It also names the sibling used for the next step (update_function), separating creation from activation.

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

Usage Guidelines5/5

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

Explicit about prerequisites ('Needs a Last Price credential with function publish scope', 'Needs a claimed workspace: a sandbox key from self-registration is refused (403)') and about the follow-up path ('make it active with update_function to have it routed to'). The default-versus-active status distinction tells the agent exactly what state the function lands in.

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

create_hosted_modelAInspect

Create a hosted pricing model, with no version yet: add one with train_hosted_model or upload_hosted_model_version. A demand model outputs the chance of a sale and its price sensitivity, and the optimizer prices from that; a price model outputs a price, or a ratio of the current price. Names are unique in a workspace (409 when the name is taken). Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
kindYesdemand: outputs a demand curve the optimizer prices from. price: outputs a price or a ratio.
nameYesA name for the model, unique in your workspace.
descriptionNoWhat the model is for.
auto_promoteNoMake a nightly candidate active when it beats the active version on held-out quotes. Defaults to false.
auto_retrainNoA demand model only: train a new candidate every night from your outcomes. Defaults to false.

TDQS

A4.7/5.0
Behavior5/5

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

Goes far beyond the annotations by disclosing concrete failure modes and their codes: 409 on duplicate name, 404 not_released when the hosted-pricing-models release is off, 403 for unclaimed sandbox workspaces. It also states the auth prerequisite (Last Price credential with publish scope), which no annotation conveys.

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

Conciseness4/5

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

Front-loaded with purpose and next steps, and every sentence carries information (naming rule, release gate, credential, workspace claim). It is dense and slightly run-on, but nothing is filler.

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

Completeness4/5

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

There is no output schema, and the description does not say what a successful call returns (e.g. a model id to feed into train_hosted_model), which is the one piece an agent needs to chain calls. Prerequisites, error paths and model semantics are otherwise thoroughly covered for a mutation tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description earns a bump by explaining what each model kind actually outputs and how the optimizer consumes a demand model, giving the 'kind' enum meaning the schema's one-liner only sketches. Other parameters (auto_promote, auto_retrain) are left entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource ("Create a hosted pricing model") plus the key state constraint ("with no version yet"), and immediately names the siblings train_hosted_model and upload_hosted_model_version as the follow-on actions. An agent can distinguish this from those siblings without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: create here, then add a version via train_hosted_model or upload_hosted_model_version. It also explains the demand-vs-price choice in terms of which downstream component consumes the model, which is the decision an agent must make when picking the 'kind'.

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

create_invoiceAInspect

Add an invoice for a customer: pass customer_id and amount, and optionally invoice_number, currency (default USD), due_date, status (default draft) and metadata. It does not email the customer; send_invoice does. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountYesThe amount.
statusNoThe invoice status.
currencyNoThe currency code. Defaults to USD.
due_dateNoWhen the invoice is due, as an RFC 3339 date-time.
metadataNoAnything worth keeping with the record.
customer_idYesThe customer: its id, as list_customers shows it.
invoice_numberNoYour number for the invoice.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (which only declare it is a non-read-only, non-destructive write), the description discloses the required billing write scope, the need for a claimed workspace, and the concrete failure mode — a self-registered sandbox key is refused with 403 until a human claims the workspace. Defaults for currency and status are also stated, which an agent needs in order to predict the resulting record.

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

Conciseness4/5

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

The capability and required parameters come first, followed by the sibling distinction and then prerequisites — a sensible order with no filler. The workspace-claim sentence is slightly long but carries non-obvious failure information, so it earns its space.

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

Completeness5/5

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

For a 7-parameter mutation with no output schema, the description covers inputs, defaults, required scope, workspace preconditions, and the key sibling boundary. An agent has everything needed to decide to call it and to predict success or a 403.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning: it marks which parameters are optional, states status defaults to draft (not stated in the schema), and confirms the USD currency default. It does not elaborate on formats such as due_date or metadata contents, which the schema already covers.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Add an invoice for a customer') and immediately enumerates the fields it accepts, including which two are required. It also explicitly disambiguates from the most confusable sibling by naming send_invoice and the behavior that separates them.

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

Usage Guidelines4/5

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

'It does not email the customer; send_invoice does' gives an explicit alternative and the condition that selects it, and the credential/workspace prerequisites tell the agent when a call will fail. It stops short of covering update_invoice vs create_invoice for existing records, so it is strong but not exhaustive.

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

create_marketplace_listingAInspect

List one of your functions on the marketplace: pass function_id, and optionally is_public (default false), commission_rate (default 0.30), min_payout_threshold (default 50) and payout_currency (default USD). A listing made public is reviewed first; a function that fails the review is saved private and the refusal carries the report. Where payouts go is set by a person, not by this tool. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
is_publicNoList it publicly. Defaults to false.
function_idYesThe pricing function UUID: id on a list_functions result.
commission_rateNoThe share of each sale the marketplace keeps. Defaults to 0.30.
payout_currencyNoThe currency payouts are made in. Defaults to USD.
min_payout_thresholdNoThe least balance that is paid out. Defaults to 50.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations it discloses the review workflow (public listings are reviewed, failures are saved private and the refusal carries the report) and that payout destination is not controlled here. The auth prerequisites and the 403 refusal path add real behavioral context that no structured field conveys.

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

Conciseness4/5

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

Information-dense and front-loaded: action and parameters first, then review behavior, then prerequisites. The clause about payout destination is slightly cryptic in placement, but no sentence is filler.

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

Completeness4/5

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

With full schema coverage, annotations and no output schema, the description covers the pieces an agent needs before calling: required credential, workspace claim requirement, and the review outcome path. It stops short of saying what the call returns (a listing id/record), which would close the last gap for a creation tool.

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

Parameters3/5

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

Schema description coverage is 100% and each property already documents its default, so the description's restatement of defaults (is_public false, 0.30, 50, USD) adds nothing new. The one genuine addition is the note that payout destination is set by a person rather than by payout_currency, which mildly clarifies intent but not format.

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

Purpose4/5

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

The opening clause states a specific verb and resource: listing one of your functions on the marketplace, with the required identifier named. It is clearly a create-type operation, so an agent can separate it from update_marketplace_listing or delete_marketplace_listing by inference, but neither sibling is called out explicitly.

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

Usage Guidelines4/5

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

It gives concrete preconditions: a claimed Last Price credential and a claimed workspace, with the specific 403 behavior for self-registration sandbox keys. It does not name the alternatives (update_marketplace_listing, delete_marketplace_listing, list_my_marketplace_listings) or say when to favor them, 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.

create_orderAInspect

Add an order for a customer: pass customer_id, and optionally agent_id, billing_contact_id (a contact of that customer), status (default draft), total_amount (default 0), currency (default USD) and metadata. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
statusNoThe order status.
agent_idNoThe agent the order is for.
currencyNoThe currency code. Defaults to USD.
metadataNoAnything worth keeping with the record.
customer_idYesThe customer: its id, as list_customers shows it.
total_amountNoThe order total.
billing_contact_idNoThe contact: its id, as list_contacts shows it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent write; the description adds real value beyond them by naming the credential requirement and the specific 403 failure mode for unclaimed sandbox workspaces. It still doesn't say whether repeated calls duplicate orders or what is returned on success.

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

Conciseness4/5

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

Front-loaded with the action and its fields, followed by two short prerequisite sentences. Dense but every clause carries information; the only mildly awkward part is packing all field defaults into one long sentence.

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

Completeness4/5

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

For a 7-parameter mutation with no output schema and full schema coverage, the description covers the fields, defaults, and the authentication/workspace gates. It leaves out the success response shape and duplicate-handling behavior, which are the main remaining gaps.

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

Parameters4/5

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

Schema coverage is 100%, so a 3 is the baseline, but the description goes further: it states defaults the schema omits (status defaults to draft, total_amount defaults to 0) and constrains billing_contact_id as "a contact of that customer." That is genuine semantic enrichment beyond the parameter descriptions.

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

Purpose4/5

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

"Add an order for a customer" gives a specific verb and resource, and enumerates the fields that can be set, so an agent can tell it apart from list_orders, update_order, or add_order_line. It stops short of explicitly naming the sibling used for line items, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The description implies the usage context (create a new order record) and supplies prerequisites, but never states when to prefer this over create_invoice, sync_commerce_orders, or when an order should instead be built via add_order_line. No explicit exclusions or alternatives are given.

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

create_paymentAInspect

Record a payment against a customer: pass customer_id and amount, and optionally invoice_id, currency (default USD), status (pending, completed or refunded; default pending), payment_method and metadata. It records the payment in Last Price; it does not charge anyone. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountYesThe amount.
statusNoThe payment status. Defaults to pending.
currencyNoThe currency code. Defaults to USD.
metadataNoAnything worth keeping with the record.
invoice_idNoThe invoice: its id, as list_invoices shows it.
customer_idYesThe customer: its id, as list_customers shows it.
payment_methodNoHow it was paid.

TDQS

A4.1/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing auth requirements (claimed credential with billing write scope) and a concrete failure mode: sandbox keys from self-registration get a 403 until a person claims the workspace. Annotations already cover the safety profile (non-read-only, non-destructive, non-idempotent), so the remaining gap is that retry/idempotency consequences (a repeat call creates a second payment) are never stated.

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

Conciseness4/5

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

Front-loaded with the action and its primary parameters, then the non-charging clarification, then prerequisites. It is efficient overall, though restating the status enum and the USD default duplicates schema content and costs a few words.

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

Completeness4/5

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

For a 7-parameter mutation tool with no output schema, it covers the essentials: what is created, what is optional, defaults, authorization, and the workspace-claim precondition. It stops short of describing what the created record returns and what happens on duplicate submissions, which would fully close the loop.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, including defaults for currency and status and the enum. The description restates the same parameter list and defaults with no additional syntax or format guidance, which is the baseline case rather than added value.

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

Purpose5/5

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

States a specific verb and resource ("Record a payment against a customer") and immediately distinguishes the operation from charging money: "it records the payment in Last Price; it does not charge anyone." This separates it cleanly from siblings like refund_payment, create_invoice, and list_payments.

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

Usage Guidelines4/5

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

Makes the use case explicit (bookkeeping a payment against a customer, optionally tied to an invoice) and states a key exclusion ("does not charge anyone"). It does not explicitly name an alternative tool such as refund_payment or create_invoice, so routing for edge cases is left partly to inference.

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

create_routing_policyAInspect

Add a routing policy: how a price request picks a pricing function. The strategy is cheapest, fastest, explicit, round robin, weighted (needs weights with at least one above zero), policy (rules that send matching requests to a function) or default. Set is_default to make it the policy used when no function is named; that replaces the current default. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameYesA name for the policy.
configNoWhat the strategy needs. weights gives each function id a share (weighted). rules each send requests whose field matches to a function (policy). fallback_chain lists function ids to try in order when the strategy picks none.
strategyYesHow a function is picked.
is_defaultNoMake this the workspace default. Defaults to false.
fallback_function_idNoA function to use when the strategy picks none.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (non-readOnly, non-destructive, non-idempotent), and the description adds genuinely beyond-schema context: setting is_default replaces the current default, a routing-write-scoped Last Price credential is required, and unclaimed sandbox workspaces get a 403. It stops short of saying whether the policy is active immediately or what a duplicate-name collision does.

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

Conciseness4/5

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

Front-loads the core definition and strategy list before prerequisites; every sentence carries information. It is dense as a single block, and the auth/workspace sentences could be separated for scannability, but there is no filler.

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

Completeness4/5

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

For a 5-parameter tool with nested config objects and no output schema, the description covers purpose, strategy semantics, default-replacement side effect, and auth gating well. It leaves out what the created policy returns (no output schema to compensate) and per-strategy config requirements beyond weighted.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value by defining what each strategy enum value means and the constraint that weighted requires at least one weight above zero. The nested rules/weights config semantics are largely left to the schema's own descriptions.

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

Purpose5/5

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

States a specific verb and resource ('Add a routing policy') and immediately defines the resource in functional terms: 'how a price request picks a pricing function.' The enumeration of strategies and their meanings makes the tool's scope unmistakable versus siblings like delete_routing_policy or update_routing_policy.

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

Usage Guidelines4/5

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

Explains when each strategy applies (weighted needs weights with one above zero; policy uses rules; default as fallback) and when to set is_default. However, it never explicitly distinguishes this from update_routing_policy or says when to create a new policy versus modify an existing one.

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

create_scrape_jobAInspect

Create a hosted scrape job that reads prices from one public https page with CSS selectors, on a schedule or on demand with run_scrape_job. Try the selectors first with preview_scrape_job. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
urlYesThe public page to read. Must start with https://.
nameYesA name for the job.
enabledNofalse pauses the schedule.
currencyNoThree-letter ISO 4217 code, such as USD.
scheduleNoHow often the job runs. manual runs only with run_scrape_job.
verticalNoThe vertical the prices belong to, such as saas.
plan_selectorNoCSS selector for the plan name beside each price.
price_selectorYesCSS selector for the price elements.
auto_contributeNoWhether run results are contributed to the shared price pool.
extraction_modeNocss reads the selectors only; css_with_llm_fallback asks a model when they find nothing.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say this is a non-destructive, non-idempotent write with no open-world access. The description adds the behavior an agent cannot get elsewhere: the 501 hosted_scraping_not_enabled failure mode, robots.txt compliance, the https-only fetch restriction, the required commerce:configure credential scope, and the sandbox-key 403 refusal. This is exactly the beyond-annotation context that prevents wasted or failing calls.

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

Conciseness4/5

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

Front-loaded with the core purpose and the preview-first guidance, then the failure modes. Every sentence carries distinct operational value, though the run of short prerequisite sentences (flag, robots.txt, scope, workspace) reads as a checklist rather than prose and could be tightened slightly.

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

Completeness5/5

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

Ten parameters, three required, no output schema — the description covers creation semantics, the precondition chain, the credential and workspace requirements, and the sibling relationship for both validation and execution. Nothing material is missing for an agent to decide to call it and call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all ten parameters (including the two enums and their per-value semantics) are already documented in the schema. The description only reinforces 'CSS selectors' and 'one public https page'; it adds nothing about auto_contribute or extraction_mode trade-offs beyond what the schema states. Baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource with scope: 'Create a hosted scrape job that reads prices from one public https page with CSS selectors.' The addition of 'on a schedule or on demand with run_scrape_job' cleanly distinguishes it from preview_scrape_job (validation) and run_scrape_job (execution), which are the two closest siblings in a very large tool list.

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

Usage Guidelines5/5

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

Explicit routing: 'Try the selectors first with preview_scrape_job' gives the prerequisite step, and 'on demand with run_scrape_job' gives the execution alternative. It also states the gating conditions (release flag → 501, claimed workspace → 403) that determine whether calling it is even viable, which is stronger than most usage guidance.

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

create_storefrontAInspect

Create a storefront: an agent card, llms.txt and MCP endpoint listing a selection of your public offers at .store.last-price.ai (and /s/ on last-price.ai). display_name is required; the subdomain defaults to one made from it. It stays unpublished unless published is true. A workspace may run several, one per product line or audience, but each must list a different selection (offer_tags, product_ids or the kinds shown): the same offers twice is refused. Every storefront says it is powered by Last Price. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
taglineNoOne line on what it sells.
logo_urlNoAn https link to your logo.
publishedNotrue puts it live; false takes it down.
subdomainNoThe <subdomain> in <subdomain>.store.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved.
offer_tagsNoOnly functions with one of these tags. Empty lists every public function.
brand_colorNoA hex colour such as #0f766e.
contact_urlNoAn https link where people reach you.
descriptionNoA paragraph on the seller and its offers.
product_idsNoOnly these products open to offers. Empty lists every one.
display_nameYesThe name agents see.
show_functionsNoList your public marketplace pricing functions.
show_negotiationNoList your products open to offers.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare the generic mutation profile, but the description adds substantial behavioral detail: unpublished unless published=true, a uniqueness rule that refuses the same offer selection twice, mandatory 'powered by Last Price' branding, an error code for the feature being off, and the required credential scope. This is well beyond annotation coverage.

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

Conciseness4/5

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

Front-loaded with the purpose and required field, then constraints, then prerequisites. Dense and mostly earning its space, though the parenthetical domain alternatives and trailing prerequisite sentences make it longer than strictly necessary.

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

Completeness5/5

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

For a 12-parameter mutation with a fully documented schema, the description covers everything an agent needs to call it correctly: required field, defaulting behavior, publish state, uniqueness constraint, auth scope, and gating. No output schema exists, but nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every field with descriptions and constraints. The description adds only that display_name is required and that subdomain defaults from it – the latter being a useful defaulting rule not present in the schema, but the rest is repetition. Baseline 3 applies.

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

Purpose5/5

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

Names a specific verb and resource ('Create a storefront') and immediately defines what a storefront is: an agent card, llms.txt and MCP endpoint listing public offers at a subdomain. Clearly distinguishable from update_storefront, get_storefront, and list_storefronts.

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

Usage Guidelines4/5

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

Gives concrete context: a workspace may run several, one per product line or audience, each must list a different selection. Prerequisites and refusal conditions (not_released, 403 unclaimed workspace) are stated. It stops short of explicitly naming sibling alternatives like update_storefront for modifying an existing one, so a 4 rather than 5.

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

create_ucp_checkoutAInspect

Open a UCP checkout session: pass line_items, and optionally buyer, context, payment, signals, cart_id, fulfillment, discounts, currency, idempotency_key and agentid_token. Pass the same idempotency_key with the same body to retry safely: you get the first session back instead of a second one. Pass agentid_token to have the session record you as a verified buying agent. It answers the session with its id and status. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
buyerNoWho is buying.
cart_idNoThe cart this checkout comes from.
contextNoWhere the checkout happens: locale, country, channel and the like.
paymentNoThe payment handler and currency.
signalsNoWhere the buyer came from: referrer, utm values and device type.
currencyNoThe currency. Defaults to the first line item's, or USD.
discountsNoDiscount codes to apply.
line_itemsYesWhat is being bought.
fulfillmentNoHow the order is fulfilled: its methods.
agentid_tokenNoOptional: your AgentID ID token (from auth.agentid.com, issued for Last Price), sent as the AgentID-Token header so the quote records you as a verified buying agent. Leave it out to buy unverified.
idempotency_keyNoYour key for this checkout. Retrying with the same key and body returns the first session; the same key with a different body is refused.

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing auth scope requirements, the 403 failure mode for unclaimed workspaces, and the conditional idempotency behavior of key+body retries returning the original session. The only wrinkle is that this retry guarantee sits in mild tension with idempotentHint=false, which an agent must reconcile as 'safe only when a key is supplied'; the description does not state that without a key a second call creates a second session.

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

Conciseness4/5

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

Front-loaded with the action and required argument, then prerequisites and retry semantics. The one weak sentence is the roll-call of optional parameter names, which duplicates the schema and could be dropped; the rest earns its place.

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

Completeness4/5

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

For an 11-parameter creation tool with nested objects and no output schema, the description covers auth, workspace state, idempotency and the return shape ('session with its id and status'). What is missing is the completion path: an agent is not told that a session created here must later be driven to completion via complete_ucp_checkout.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter carries its own docstring, so the baseline is 3. The description's enumeration of optional parameter names largely repeats the schema, adding only a little (agentid_token's verified-buyer effect and the currency default, both already in the schema).

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

Purpose4/5

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

States a specific verb and resource: 'Open a UCP checkout session', with the required input (line_items) named up front. It is clearly distinguishable from cancel_ucp_checkout, complete_ucp_checkout, update_ucp_checkout and get_ucp_checkout by verb, but never names those siblings, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives concrete preconditions for use: a Last Price credential with price compute scope, and a claimed workspace (sandbox keys from self-registration 403 until claimed). It also explains the retry scenario for re-calling with the same idempotency_key. It does not say where this sits in the flow relative to complete_ucp_checkout or update_ucp_checkout, so exclusions/alternatives are absent.

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

create_webhookAInspect

Add an outbound webhook endpoint: Last Price sends a signed POST to the https url for each event you list. The answer carries the signing secret (whsec_...); keep it to verify deliveries. Events cover held agent calls awaiting approval, disputes, proposed price changes, a low balance, outcomes and changelog entries; the documentation lists their names, and an unknown name is refused. Send ping_webhook afterwards to check the endpoint answers. Needs the owner or admin role, and a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
urlYesWhere to send events. Must start with https://.
eventsYesThe events to send, at least one, e.g. ["approval.requested","dispute.opened"].
secretNoYour own signing secret. Omit it and one is made for you.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses that Last Price sends a signed POST for each listed event, that the response contains a whsec_ signing secret, and that unknown event names are refused. It also states the owner/admin role requirement, the key-scope/sign-in constraint, and the 403 refusal for sandbox keys until the workspace is claimed.

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

Conciseness5/5

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

The description is front-loaded with the core operation and then adds only consequential details: signing secret, event validation, ping follow-up, and access constraints. Every sentence carries information needed to call the tool correctly, with no filler.

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

Completeness5/5

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

Given the moderate schema, absent output schema, and non-destructive create annotations, the description is complete enough for correct invocation. It covers authentication prerequisites, workspace state, event-name validation, the returned signing secret, and the recommended verification step.

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

Parameters4/5

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

Schema coverage is already 100%, so the schema documents the three parameters. The description nonetheless adds useful meaning about the events field: it names event categories, says the documentation lists names, and states that unknown names are refused. It also clarifies that the returned signing secret is used to verify deliveries.

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

Purpose5/5

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

The first sentence gives a specific verb and resource: 'Add an outbound webhook endpoint,' then explains the signed POST behavior to the https URL. It also distinguishes this from ping_webhook by explicitly telling the agent to use ping_webhook afterward to verify the endpoint.

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

Usage Guidelines4/5

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

The description gives clear operational context, including prerequisite roles, key scope limits, and the claimed-workspace requirement. It also routes the agent to ping_webhook as the follow-up check, though it does not explicitly mention update_webhook or list_webhooks as alternatives.

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

decide_approvalA
Destructive
Inspect

Approve or reject an action held for approval. Approving lets whoever asked repeat the same request once; rejecting keeps it held back for good. Deciding is for the workspace owner: a person, or the owner's own key (made without scope limits and not bound to an agent). An agent never decides its own request, and an agent-bound key or token cannot decide at all. The audit log records who decided. Needs a Last Price credential with the commerce proposal approve scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonNoWhy, kept with the decision. Optional.
decisionYesapprove or reject.
approval_idYesThe approval id, as list_approvals gives it.

TDQS

A4.1/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it explains the effect of approving (one-time repeat) and rejecting (permanent hold), states who can decide, notes audit logging, and details required credentials and workspace state. These details are not present in the annotations and directly aid safe invocation.

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

Conciseness4/5

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

The description is front-loaded and every sentence conveys important information, but it is somewhat dense and could be tightened without losing clarity.

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

Completeness5/5

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

For a destructive mutation tool with no output schema, the description covers all essential aspects: effect of the operation, authorization requirements, audit logging, credential needs, and workspace claim prerequisites. Nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents each parameter. The description adds no additional parameter-level meaning, leaving the baseline of 3 appropriate.

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

Purpose4/5

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

The description states a clear verb (approve or reject) and resource (an action held for approval), and explains the effect of each decision. However, it does not explicitly differentiate from similar siblings like approve_commerce_proposal or approve_payout_run, which could lead to confusion.

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

Usage Guidelines4/5

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

It provides clear context for who may call it (workspace owner, not an agent) and prerequisites (Last Price credential with commerce proposal approve scope, claimed workspace), but it does not name alternative tools or explicitly state when to use this vs. specialized approval tools.

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

decide_learned_price_changeA
Destructive
Inspect

Approve or reject a learned pricing change waiting for approval (approve mode). Approving puts its estimate in force for that product, within your price guardrails; rejecting keeps the one in force, and the same estimate is not asked about again. change_id is the id from list_learned_price_changes or the webhook that announced the change. Needs a Last Price credential with routing write scope, or the key of the agent that registered an unclaimed workspace, which owns it.

NameRequiredDescriptionDefault
decisionYesapprove or reject.
change_idYesThe change id, as list_learned_price_changes or the webhook gives it.

TDQS

A4.2/5.0
Behavior4/5

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

Despite the destructive annotation, the description adds real value by explaining the outcome of each branch: approving puts the estimate in force within existing price guardrails, while rejecting keeps the current price and permanently stops the same estimate from being re-asked. It also names the credential/scope required, far exceeding what the annotations convey.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by consequences and then prerequisites in a logical order, with no redundant sentences. The parenthetical '(approve mode)' is slightly ambiguous and costs a bit of clarity.

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

Completeness5/5

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

For a 2-parameter mutation with no output schema, the description covers the decision semantics, the irreversibility of both branches, the guardrail interaction, the parameter source, and the required credentials. Nothing an agent needs in order to call this correctly is missing.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents both change_id and the approve/reject enum. The description only restates the same provenance for change_id ('from list_learned_price_changes or the webhook'), adding no format, constraint, or lookup guidance beyond the structured fields.

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

Purpose5/5

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

The description names a specific verb pair (approve/reject) and a specific resource (a learned pricing change awaiting approval), including the state the resource must be in. An agent can distinguish it from siblings like decide_approval or set_learned_pricing without opening any schema.

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

Usage Guidelines4/5

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

It states the precondition ('waiting for approval') and where change_id comes from ('list_learned_price_changes or the webhook that announced the change'), which is clear routing context. It stops short of naming an explicit alternative or when-not-to-use case, so it is a strong 4 rather than a 5.

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

decide_rosetta_reviewA
Destructive
Inspect

Approve or reject one mapping Rosetta held back, by id from list_rosetta_review. Pass action approve or reject, and reviewer to say who decided, otherwise the workspace is recorded. A decision is final: an item already decided answers 409. An agent or key that queued the item cannot decide it: that answers 403, and a person or a different agent or key decides. It sends the review-resolved webhook to the workspace's endpoints. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
idYesThe review item id from list_rosetta_review.
actionYesApprove the mapping or reject it.
reviewerNoWho decided. Defaults to the workspace.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond annotations: discloses that decisions are final (409 on already-decided), the self-decision block (403), that a review-resolved webhook fires, and that a claimed Last Price credential plus a claimed workspace are required (sandbox keys refused). These are exactly the operational facts an agent needs before invoking a destructive, non-idempotent action.

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

Conciseness4/5

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

Front-loads the core action, then layers on the id source, decision finality, the 403 self-decision rule, webhook behavior, and auth prerequisites. Dense but well-ordered; the reviewer sentence mildly duplicates the schema but nothing is wasted.

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

Completeness5/5

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

For a destructive, non-idempotent mutation with no output schema, the description covers finality, error codes, side effects (webhook), and credential/workspace prerequisites — everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, including the reviewer default. The description largely restates this ('Pass action approve or reject, and reviewer... otherwise the workspace is recorded'), adding little beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (approve/reject) applied to a specific resource (one held-back Rosetta mapping) and ties the id to list_rosetta_review, cleanly distinguishing it from that sibling. An agent knows exactly what this does before opening the schema.

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

Usage Guidelines4/5

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

Explicitly points to list_rosetta_review as the source of the id and states the key selection rule (the queuing agent/key cannot decide its own item). No guidance on when to choose approval vs rejection beyond the enum, but the operational context is clear.

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

delete_commerce_policyA
DestructiveIdempotent
Inspect

Delete a commerce pricing policy for good. To keep it but stop the pipeline using it, switch it off with update_commerce_policy. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
policy_idYesThe policy id, as list_commerce_policies gives it.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds value beyond them: irreversibility is restated in plain terms ('for good'), and it discloses two non-obvious preconditions – a Last Price credential with commerce configure scope, and a claimed workspace where self-registration sandbox keys are refused with 403. These are exactly the failure modes an agent would otherwise hit blind.

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

Conciseness4/5

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

Three short sentences, each with a distinct job: what it does, the alternative, the prerequisites. Front-loaded with the destructive action. The auth sentence is dense but earns its place given the 403 trap it prevents.

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

Completeness5/5

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

For a one-parameter destructive tool with no output schema, this covers everything an agent needs: permanence, the safe alternative, credential scope, and the workspace-claim blocker. Nothing material is omitted.

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

Parameters3/5

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

Schema coverage is 100% and the single policy_id parameter already carries a description pointing to list_commerce_policies as the source. The tool description says nothing further about the parameter, so the schema does all the work; baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Delete a commerce pricing policy') plus the permanence qualifier 'for good', which immediately separates it from the reversible sibling update_commerce_policy. No ambiguity about what the tool does.

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

Usage Guidelines5/5

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

Explicitly names the alternative path and the condition that selects it: 'To keep it but stop the pipeline using it, switch it off with update_commerce_policy.' That is a direct when-to-use-this-vs-that routing instruction, not an implied one.

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

delete_contactA
DestructiveIdempotent
Inspect

Delete a contact: pass contact_id. This removes the record, and it cannot be undone by another tool. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
contact_idYesThe contact: its id, as list_contacts shows it.

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true and idempotentHint=true, but the description adds important context: the record removal cannot be undone by another tool. It also discloses authentication and workspace-claim preconditions, including a specific 403 refusal mode for unclaimed sandbox workspaces.

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

Conciseness5/5

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

The description is short, front-loaded with the action and required parameter, and then adds irreversible-deletion and authentication context. Every sentence contributes useful information without unnecessary preamble.

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

Completeness4/5

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

For a destructive mutation with no output schema, the description covers the key safety and access constraints: record removal is irreversible and requires a claimed credential and workspace. It does not describe behavior for missing contacts or related-record effects, but the core context needed to call it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, and the single contact_id parameter is already documented as a UUID shown by list_contacts. The description repeats 'pass contact_id' but adds no format, validation, or lookup guidance beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: 'Delete a contact.' It also names the required identifier, making the operation immediately distinguishable from sibling contact tools such as get_contact, update_contact, and list_contacts.

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

Usage Guidelines3/5

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

It gives prerequisites for use, notably the claimed credential and claimed workspace requirements, including the sandbox 403 behavior. However, it does not explicitly say when to use this tool versus alternatives like update_contact, or whether deletion is appropriate only in specific lifecycle situations.

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

delete_creditA
DestructiveIdempotent
Inspect

Delete a credit bundle and the balance left in it: pass credit_id. It cannot be undone by another tool, so check it with get_credit first. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
credit_idYesThe credit bundle: its id, as list_credits shows it.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint and idempotentHint, but the description adds value beyond them: that the balance is destroyed along with the bundle, that no other tool can reverse it, the required billing write scope, and the self-registration 403 gate.

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

Conciseness4/5

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

Front-loads the destructive action and its consequence, then prerequisites. Four short sentences with little waste, though the repeated 'Needs a claimed...' framing is slightly redundant.

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

Completeness5/5

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

For a single-parameter destructive tool with no output schema, everything an agent needs — irreversibility, prerequisite read, auth scope, workspace claim gate — is present.

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

Parameters3/5

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

Schema coverage is 100% and the schema already explains credit_id as the id shown by list_credits; the description only repeats 'pass credit_id' without adding format or sourcing detail beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ('Delete a credit bundle') plus material scope — the remaining balance goes with it — so an agent knows exactly what disappears, distinct from create_credit, get_credit, list_credits.

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

Usage Guidelines5/5

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

Gives an explicit precondition step ('check it with get_credit first') and states the credential/scope and claimed-workspace requirements, including the concrete 403 failure mode for sandbox keys.

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

delete_customerA
DestructiveIdempotent
Inspect

Delete a customer: pass customer_id. This removes the record, and it cannot be undone by another tool, so check it is the right one with get_customer first. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
customer_idYesThe customer: its id, as list_customers shows it.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, so the irreversibility claim is consistent rather than contradicting, and the description adds value the annotations do not carry: the action cannot be undone by another tool, plus the auth and workspace-claim requirements with the 403 outcome. This is exactly the extra behavioral context destructive operations need.

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

Conciseness5/5

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

Front-loaded with the action and argument, then the caution, then the two gating requirements. Every sentence carries distinct information with no repetition.

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

Completeness5/5

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

For a destructive, single-parameter tool with no output schema, the definition covers what matters: irreversibility, how to verify the target, and both access prerequisites. No output-schema explanation is needed since none exists.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is fully documented in the schema ("The customer: its id, as list_customers shows it"), so the description adds nothing beyond "pass customer_id." Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ("Delete a customer") plus the required argument, and contrasts the operation with get_customer, which is the natural sibling check. An agent can distinguish this from update_customer or delete_contact without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use context (delete vs. verify with get_customer first) and names two prerequisites—a claimed Last Price credential and a claimed workspace—including the concrete failure mode (403) for self-registered sandbox keys. Nothing is left to inference about gating conditions.

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

delete_feature_contractA
DestructiveIdempotent
Inspect

Remove your workspace's feature contract: quotes are logged without contract labels again. Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds real value by spelling out the concrete effect on quote logging and the credential scope (routing write) and role (owner/admin) required. It stops short of saying whether the deleted contract configuration can be recovered.

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

Conciseness5/5

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

Two compact sentences: the action and its effect come first, prerequisites second. No filler or restatement of the title.

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

Completeness4/5

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

For a zero-parameter destructive tool with full annotation coverage and no output schema, the description covers effect, auth scope, and dashboard roles. The only omission is whether the contract can be re-created or the change undone.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to compensate for and it correctly introduces no spurious arguments.

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

Purpose4/5

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

States a specific verb and resource ("Remove your workspace's feature contract") and adds the observable consequence (quotes logged without contract labels again). It never names the obvious siblings set_feature_contract/get_feature_contract, so an agent must infer which one re-creates the contract, keeping it below 5.

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

Usage Guidelines3/5

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

The description implies when this applies (you no longer want quotes labeled by contract) and lists prerequisites, but gives no explicit when-not guidance or named alternative such as set_feature_contract to restore labeling. Usage is inferable rather than directed.

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

delete_functionA
DestructiveIdempotent
Inspect

Delete a pricing function your workspace owns, for good. Built-in functions and other workspaces' functions cannot be deleted. To stop routing to one without losing it, set its status to inactive with update_function instead. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, so the description is not required to establish that this mutates — yet it adds substantial non-redundant context: permanence ('for good'), ownership preconditions, the required credential scope ('Last Price credential with function publish scope'), and a concrete failure mode (403 on a sandbox key from self-registration until the workspace is claimed). That is exactly the beyond-annotation detail an agent needs before invoking an irreversible operation.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the action and its permanence, then constraints, then the alternative, then prerequisites. No sentence is filler; each carries a distinct operational fact.

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

Completeness5/5

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

For a one-parameter destructive tool with no output schema, the description covers everything that could block a correct call: ownership limits, credential scope, the 403 sandbox-claim trap, and the reversible alternative. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is fully documented in the schema (UUID, from list_functions). The description never mentions function_id but does imply the ownership constraint that governs which ids are valid, which is marginal added value. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb+resource (delete a pricing function) plus a scope qualifier ('your workspace owns, for good'). It explicitly carves out what it is not (built-in functions, other workspaces' functions) and names update_function as the non-destructive path, so it is distinguishable from all nearby siblings without opening any schema.

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

Usage Guidelines5/5

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

Gives when-to-use (permanent removal), an explicit when-not (built-in or foreign-owned functions cannot be deleted), and a named alternative with the exact mechanism ('set its status to inactive with update_function'). The exclusion and alternative are stated, not inferred.

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

delete_invoiceA
DestructiveIdempotent
Inspect

Delete an invoice: pass invoice_id. It cannot be undone by another tool. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
invoice_idYesThe invoice: its id, as list_invoices shows it.

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds materially new behavior: the deletion is irreversible, it requires a claimed Last Price credential with billing write scope, and a sandbox key from self-registration is refused with a 403 until the workspace is claimed. That last detail is exactly the kind of failure mode an agent cannot infer from structured fields.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and parameter, then the risk, then the auth gates. The opening 'pass invoice_id' is slight duplication of the schema but it does anchor the sentence; there is otherwise no waste.

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

Completeness5/5

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

For a single-parameter destructive tool with no output schema, everything an agent needs is present: what it does, that it is unrecoverable, the required credential scope, and the specific 403 precondition. Nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the property description already says 'its id, as list_invoices shows it', which the description merely restates as 'pass invoice_id'. No additional syntax, format, or edge-case guidance is offered beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Delete an invoice') and immediately names the key parameter. The verb alone cleanly separates it from the cluster of sibling invoice tools (get_invoice, update_invoice, list_invoices, send_invoice), so an agent can route to it without opening the schema.

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

Usage Guidelines3/5

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

The description supplies strong preconditions (billing write scope, claimed workspace) and warns that the effect is irreversible, which implicitly signals 'only use when you really mean to destroy'. However, it never names an alternative such as update_invoice or send_invoice, nor states the condition under which deletion is preferable to those — the when-to-use-vs-alternatives guidance is left implicit.

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

delete_marketplace_listingA
DestructiveIdempotent
Inspect

Remove one of your marketplace listings: pass listing_id. The function stays; it is no longer listed. Only the owner can remove a listing. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
listing_idYesThe marketplace listing: its id, as list_my_marketplace_listings shows it.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true), which only say the operation is a destructive write. The description adds the actual blast radius (listing withdrawn, function retained), the authorization model (owner-only), and a specific failure mode (403 for unclaimed sandbox workspaces). This is exactly the context structured fields cannot carry.

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

Conciseness4/5

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

Four short sentences, effect and identifier front-loaded, prerequisites after. Minor redundancy in restating 'pass listing_id' that the schema already covers, but no wasted clauses overall.

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

Completeness4/5

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

For a single-parameter destructive tool with no output schema, the description covers effect, ownership, credentials, and the 403 failure case. The only gap is what is returned on success (confirmation, any earnings impact), which an agent might want when reporting back.

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

Parameters3/5

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

Schema coverage is 100% and the schema property already explains that listing_id is the id as shown by list_my_marketplace_listings. The description's 'pass listing_id' adds nothing beyond that, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Remove one of your marketplace listings') and immediately clarifies the crucial semantics: the underlying function is preserved and only the listing is withdrawn. That distinction separates it from delete_function and update_marketplace_listing without requiring the agent to open another schema.

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

Usage Guidelines4/5

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

Gives concrete operating conditions: ownership required, a claimed Last Price credential required, and a claimed workspace required (sandbox keys get 403). It implies the alternative of keeping the function rather than deleting it, but never explicitly routes the agent to update_marketplace_listing for a simple edit or to list_my_marketplace_listings for discovery.

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

delete_orderA
DestructiveIdempotent
Inspect

Delete an order and its lines: pass order_id. Only a draft or cancelled order can be deleted; cancel it first otherwise. It cannot be undone by another tool. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
order_idYesThe order: its id, as list_orders shows it.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint and idempotentHint, but the description adds genuinely new behavior: line-level cascade, irreversibility by any other tool, the claimed Last Price credential, and the 403 refusal for self-registered sandbox keys. This is exactly the context annotations cannot carry.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action and cascade, then preconditions, then prerequisites. Every sentence carries distinct information; no filler.

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

Completeness5/5

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

For a destructive single-parameter mutation with no output schema, the definition covers state preconditions, cascade scope, irreversibility, and both auth gates. An agent has everything needed to call it correctly or route around it.

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

Parameters3/5

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

Schema coverage is 100% with a single required uuid parameter already documented as coming from list_orders. The description's 'pass order_id' repeats the schema without adding format or sourcing detail beyond it, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Delete an order') and immediately discloses the cascade ('and its lines'), which distinguishes it from the sibling update_order. An agent can tell exactly what this tool removes without opening the schema.

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

Usage Guidelines5/5

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

Explicitly bounds when the tool works ('Only a draft or cancelled order can be deleted') and names the remedy when it doesn't ('cancel it first otherwise'). It also states the credential and workspace prerequisites, leaving nothing to inference.

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

delete_price_guardrailsA
DestructiveIdempotent
Inspect

Remove your workspace's saved price guardrails so the defaults apply again. It answers the defaults. Read what is saved first with get_price_guardrails, because this cannot be undone by another tool. Needs a claimed Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true), which only signal that the call is destructive and repeatable. The description adds the concrete consequence (defaults take over again), the irreversibility ceiling ('cannot be undone by another tool'), the required credential/scope, and a specific 403 failure mode for unclaimed sandbox workspaces — exactly the context needed 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.

Conciseness4/5

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

The consequence is front-loaded and the prerequisites follow in a logical order. However, 'It answers the defaults' is a redundant, ungrammatical restatement of 'so the defaults apply again' and should have been cut.

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

Completeness4/5

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

For a zero-parameter destructive tool with no output schema, the description covers effect, irreversibility, prerequisite read, and the two authorization barriers. It leaves open what the response looks like and whether deletion is all-or-nothing versus partial, though the idempotent hint softens the gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. It correctly implies workspace-scoped, argument-free behavior rather than describing per-item selection.

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

Purpose4/5

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

Names a specific verb and resource ('Remove your workspace's saved price guardrails') and states the resulting effect ('so the defaults apply again'), which lets an agent distinguish it from set_price_guardrails and get_price_guardrails. The sentence 'It answers the defaults' is garbled and adds no meaning, slightly muddying an otherwise clear statement.

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

Usage Guidelines4/5

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

Explicitly prescribes an ordering: read with get_price_guardrails first, because deletion cannot be reversed by another tool. It gives a clear precondition but stops short of stating when-not-to-use (e.g., when only part of the guardrails should change).

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

delete_routing_policyA
DestructiveIdempotent
Inspect

Delete a routing policy. This cannot be undone. Price requests that named no function stop using it. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
policy_idYesThe routing policy UUID: id on a list_routing_policies result.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: destructiveHint already flags the write, but the description discloses irreversibility, the downstream effect (unmatched price requests stop using the policy), required auth scope, and a concrete failure mode (403 on sandbox keys until workspace is claimed). These are non-obvious operational facts an agent cannot infer from 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.

Conciseness5/5

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

Four short sentences, each carrying distinct information: action, irreversibility, consequence, and two preconditions. Effect is front-loaded ahead of prerequisites, which is the right ordering for a destructive tool.

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

Completeness5/5

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

No output schema exists, but none is needed here — for a delete the agent mainly needs to know it is irreversible, what breaks downstream, and what credentials/workspace state are required, all of which are present.

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

Parameters3/5

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

Schema coverage is 100% and the policy_id description already explains it is the UUID from list_routing_policies, so the description adds nothing about parameters. With a single fully-documented parameter, baseline 3 is appropriate.

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

Purpose5/5

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

Opens with a specific verb+resource ("Delete a routing policy") and immediately states the effect on routing behavior ("Price requests that named no function stop using it"). An agent can distinguish this from update_routing_policy or delete_commerce_policy without opening a schema.

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

Usage Guidelines3/5

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

Prerequisites are stated clearly (routing write scope, claimed workspace, 403 otherwise), which tells the agent when the call will succeed. However, it never contrasts with alternatives such as update_routing_policy for a non-destructive change, or get_routing_policy to confirm the target first — the core 'when to use this vs. a sibling' question is left implicit.

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

delete_scrape_jobA
DestructiveIdempotent
Inspect

Delete a scrape job and its run history. This cannot be undone: update_scrape_job with enabled false pauses it instead. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
job_idYesThe scrape job UUID: id on a list_scrape_jobs result.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description goes well past that: it names what is destroyed (the job plus its run history), declares irreversibility, explains the pause workaround, and documents two concrete failure modes with their status codes (501 and 403) plus the required credential and scope (commerce:configure).

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

Conciseness4/5

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

Front-loaded correctly: the destructive action and its irreversibility come first, then the alternative, then gating and prerequisites. Each sentence is doing work except 'Runs honour robots.txt and fetch only public https pages,' which concerns run-time fetching behavior rather than deletion and is tangential to this tool's invocation.

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

Completeness5/5

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

For a single-parameter destructive mutation with no output schema, the description covers everything material: what is removed, irreversibility, the safer alternative, availability gating, auth scope, and workspace-claim precondition. An agent has no open questions that would cause a wrong call.

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

Parameters3/5

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

Schema coverage is 100% and the job_id description already tells the agent it is the 'id on a list_scrape_jobs result,' so the parameter is fully documented in structured data. The description adds nothing further about the ID's format or origin, which is acceptable given the schema carries it, but it earns no credit above baseline.

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

Purpose5/5

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

Opens with a specific verb and resource and extends the scope beyond the object itself: 'Delete a scrape job and its run history.' That scope detail is the key fact an agent needs to distinguish this from a mere status change, and it immediately names the sibling it is not (update_scrape_job with enabled false).

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

Usage Guidelines5/5

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

Explicitly states the when-not ('This cannot be undone') and names the alternative and the condition that selects it ('update_scrape_job with enabled false pauses it instead'). It also gives preconditions that decide whether the call is even viable: release flag gating (501 hosted_scraping_not_enabled) and workspace claim status (403 for sandbox keys).

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

delete_storefrontA
DestructiveIdempotent
Inspect

Delete a storefront and its domains. Its addresses stop answering at once. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing immediate effect ("addresses stop answering at once"), the specific failure code not_released when the feature is off, and a 403 refusal for sandbox keys until the workspace is claimed. The annotations already cover destructiveHint/idempotentHint, so this additional operational context is the useful part; only the outcome of deleting a non-existent id is left unstated.

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

Conciseness4/5

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

The what and the cascade effect come first, followed by gating conditions, so the most decision-relevant information is front-loaded. Every sentence carries substantive information, though the final sentence about claimed workspaces is dense and could be trimmed.

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

Completeness4/5

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

For a destructive, open-world, single-parameter tool with no output schema, the description covers impact, authorization, and environment gating adequately. It stops short of describing the response or the behavior when the storefront id does not exist, which an agent may still need.

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

Parameters3/5

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

Schema description coverage is 100% and the single storefront_id parameter is already documented as a UUID sourced from list_storefronts. The description adds no format or sourcing detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

"Delete a storefront and its domains" states a specific verb and resource, and the phrase "and its domains" implicitly separates it from remove_storefront_domain, which only detaches one domain. The destructive scope is unambiguous, but no sibling is named explicitly, so an agent must infer the distinction.

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

Usage Guidelines4/5

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

Gives concrete preconditions for calling it: storefronts must be enabled in the workspace, the credential needs workspace settings write scope, and the workspace must be claimed. It does not, however, name an alternative tool or state when a caller should prefer update_storefront or domain removal instead.

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

delete_webhookA
DestructiveIdempotent
Inspect

Delete a webhook endpoint and its delivery history. This cannot be undone: update_webhook with status inactive pauses it instead. Needs the owner or admin role, and a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
webhook_idYesThe webhook endpoint UUID: id on a list_webhooks result.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint and idempotent, so the safety profile is known, but the description adds what is actually destroyed (delivery history), irreversibility, required role (owner/admin), key scope requirements, and the specific 403 failure mode for unclaimed sandbox workspaces. That is substantial context beyond the structured fields.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the action and its irreversibility, then the alternative, then preconditions. Slightly dense in the auth sentence but no filler.

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

Completeness5/5

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

For a single-parameter destructive tool with no output schema, the description covers destruction scope, irreversibility, the softer alternative, permissions, auth requirements, and the preconditions that produce a 403 — nothing an agent needs is missing.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%; the schema itself explains that webhook_id is a UUID taken from a list_webhooks result. The description adds no additional parameter meaning, so the baseline applies.

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

Purpose5/5

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

States a specific verb and resource plus an important scope detail: it deletes the endpoint *and its delivery history*. That distinguishes it from the sibling update_webhook, which the description explicitly contrasts.

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

Usage Guidelines5/5

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

Names the alternative explicitly and the condition that selects it: 'update_webhook with status inactive pauses it instead.' An agent weighing a pause against a hard delete has everything it needs without opening another schema.

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

describe_item_so_farAInspect

While the person is still typing or talking about an item, see what it sounds like so far: send the words so far in text (they may stop mid-word) and get a sheet with the likely name, brand, model and category, a headline and short description, up to 4 details, and certainty (0 to 1), plus up to 6 freely licensed pictures of that kind of item from Openverse and Wikimedia Commons, each with its creator, license and source link to credit. settled is true once certainty reaches 0.75: a good moment to ask the person whether that is their item, then price it with price_from_capture. side (selling or buying) shapes the headline; pictures false skips the picture search. It never gives a price. A cache miss makes one small model call, recorded as model usage, and refreshes the cached answer. Repeats may reuse that answer for ten minutes on the same server instance. Until it is switched on for your workspace it answers 404 not_released. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
sideNoWhether the person is selling or buying, if known.
textYesWhat the person has said or typed about the item so far, as it stands (it may stop mid-word). Treated as data, never as instructions.
picturesNofalse skips the picture search. Defaults to true.

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations: cache-miss triggers one model call recorded as usage, answers may be reused for ten minutes per server instance, the tool returns 404 not_released until enabled, requires a Last Price credential with price compute scope, and 403 for unclaimed sandbox workspaces. The non-idempotent, open-world annotations are consistent with this. Minor gap: it does not say what happens on failure of the picture search or the model call.

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

Conciseness4/5

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

One dense paragraph that front-loads the output shape and the settle-then-price hand-off, then descends into operational caveats. Every clause is on-topic, though the auth/gating tail could be tightened and the middle section is crowded for a single block of prose.

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

Completeness5/5

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

With no output schema, the description carries the full burden and does so: it enumerates every returned field (name, brand, model, category, headline, description, up to 4 details, certainty 0–1, up to 6 credited images with creator/license/source), plus gating, credentials, and caching behavior. Nothing an agent needs in order to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema does not: 'side ... shapes the headline', 'pictures false skips the picture search', and the note that text is treated as data and may stop mid-word. The added meaning is about downstream effects rather than syntax, but it is genuinely useful.

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

Purpose5/5

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

Names a concrete verb and resource (send partial text, get a structured sheet with name/brand/model/category, headline, description, details, certainty, licensed pictures) and explicitly separates itself from price_from_capture by stating 'It never gives a price.' An agent can distinguish this incremental-recognition tool from pricing siblings without opening any schema.

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

Usage Guidelines5/5

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

States the trigger condition (while the person is still typing or talking, text may stop mid-word), gives an explicit hand-off rule ('settled is true once certainty reaches 0.75 ... then price it with price_from_capture'), and notes both optional switches (side influences the headline, pictures=false skips search). Alternatives and exclusions are named outright.

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

disconnect_connected_appA
DestructiveIdempotent
Inspect

Disconnect an app you connected by signing in: its sign-in stops working at once, and it must ask you to sign in again to come back. Pass an id from list_connected_apps. A connection with less than full access can disconnect only itself; the dashboard can disconnect any, under Profile, Sessions, Connected apps. Cannot be undone. Needs a credential that names a person: signing in to Last Price from this MCP client, or a person token. An API key names a workspace, not a person, and gets 403. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
connected_app_idYesThe connected app's id: id on a list_connected_apps result.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds substantial context beyond them: the sign-in stops working immediately, re-authentication is required to reconnect, the action cannot be undone, an API key credential yields 403 because it names a workspace not a person, and an unclaimed sandbox workspace is also refused with 403.

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

Conciseness4/5

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

Front-loads the effect of disconnecting, then prerequisites and failure modes in a compact sequence. Dense but nearly every clause carries decision-relevant information; the dashboard parenthetical is slightly incidental.

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

Completeness5/5

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

For a single-parameter destructive mutation with no output schema, it covers effect, irreversibility, credential requirements, workspace prerequisites, and error codes (403). An agent has everything needed to call it and interpret failure.

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

Parameters3/5

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

Schema coverage is 100% and the property description already states 'id on a list_connected_apps result', so the description's 'Pass an id from list_connected_apps' largely restates the schema. The scoping note about limited-access connections is useful but is about authorization, not the parameter's format.

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

Purpose5/5

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

Opens with a specific verb and resource ('Disconnect an app you connected by signing in') and explains the effect of disconnecting. It is clearly distinguishable from the sibling list_connected_apps, which it names as the source of the id.

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

Usage Guidelines5/5

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

Gives explicit when-to-use routing ('Pass an id from list_connected_apps'), names an alternative surface for the same operation ('the dashboard can disconnect any, under Profile, Sessions, Connected apps'), and states the scoping rule that a less-than-full-access connection can only disconnect itself.

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

discover_offersA
Read-onlyIdempotent
Inspect

Find offers you can call for a task, ranked: describe what you are trying to do in task and get a short list of priced offers (marketplace pricing functions and paid x402 services), each with how to call it, its price per call, where that price sits against what paid x402 services list, and why it is in the list. Places marked ranked are earned on measured results (the Elo Index) and relevance; places marked explore are new offers not yet measured, about a fifth of the list by default. Nobody pays for a place. Narrow with category and max_price (USD per call). When you call an offer, send the feed reference it carries as the x-lp-feed-ref header. Public: needs no credential, limited per address. Until it is switched on it answers not released.

NameRequiredDescriptionDefault
taskYesWhat you are trying to do, in your own words.
limitNoHow many offers. Defaults to 10.
categoryNoOnly offers in this category (a marketplace vertical such as saas, or an x402 category such as inference).
max_priceNoMost you will pay per call, in USD.
explore_shareNoShare of places for new, unmeasured offers. Defaults to 0.2.

TDQS

A4.2/5.0
Behavior4/5

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

Adds substantial context beyond the read-only/idempotent annotations: the ranked-vs-explore split, the ~20% default exploration share, that ranking is earned via the Elo Index and payments cannot buy placement, rate limiting per address, an unreleased-state behavior, and the x-lp-feed-ref header requirement for subsequent calls. Loses a point only because the return shape is described narratively rather than precisely.

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

Conciseness4/5

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

Front-loaded with what the tool does and what it returns, then constraints. It is dense and occasionally run-on (ranking explanation, pricing context, and release state run together in a single long paragraph), but no sentence is wasted.

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

Completeness5/5

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

For a five-parameter, read-only discovery tool with full schema coverage and no output schema, everything an agent needs is present: how to phrase the query, how the list is ranked, how to narrow it, how to follow up with the returned reference, and what to expect when the feature is unavailable.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including defaults (limit 10, explore_share 0.2) is already documented. The description restates category and max_price ('USD per call') but adds no syntax or constraint detail the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource: it finds callable offers from a semantic task description, and it names exactly what comes back (priced marketplace functions and paid x402 services with price, ranking context, and rationale). It is clearly distinct from catalog/list siblings such as browse_catalog or list_marketplace_listings because the input is a free-text task, not a filter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the call pattern (describe the task, narrow with category and max_price) and the operating conditions (public, no credential, limited per address, answers 'not released' until switched on). It does not name sibling alternatives or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draw_session_spendAInspect

Right before you pay for one call in a session open_spend_session opened, draw the call's price from it. drawn true: pay for the call now. An error means do not pay for this call: the draws would pass the session's maximum (remaining says what is left), this one call costs more than the policy allows per purchase, your owner changed the policy and the session was closed (open a new one if it still allows), or the session is closed or expired. If the call then fails, settle_session_draw with outcome failed gives the draw back. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
itemNoOptional: what this call buys.
noteNoOptional: a request or payment reference.
amountYesThis call's price, in the session's currency.
pay_toNoThe account this call pays, when open_spend_session named pay_to (then required). Another account is refused with code payee_changed: do not pay; the session stays open.
session_idYesreservation.id from open_spend_session.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the annotations: it discloses auth requirements (Last Price credential with price compute scope), a workspace-claim gate that returns 403, the meaning of failure responses, and the refund path via settle_session_draw. It stops short of describing the success payload shape (only hinting at a 'drawn' flag) and does not warn against re-issuing a draw after a partial success, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition before the error catalogue, and every clause carries a decision the agent must make. It is dense to the point of being a run-on sentence, but no sentence is expendable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent state-mutating tool with no output schema, it covers the sequencing, the four failure modes, the credential and workspace prerequisites, and the recovery path. The remaining gap is the success response contract and double-draw behavior, which an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents session_id, amount, pay_to, item and note in detail, including the payee_changed code. The description adds only incremental context around pay_to's refusal semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('draw the call's price' from a session) and pins the exact moment in the lifecycle ('right before you pay for one call'). It implicitly and clearly separates itself from open_spend_session, settle_session_draw and close_spend_session by naming the surrounding steps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('right before you pay for one call in a session open_spend_session opened'), explicit follow-up alternative ('If the call then fails, settle_session_draw with outcome failed gives the draw back'), and explicit when-not ('an error means do not pay for this call'). The four refusal reasons each carry a prescribed remediation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_task_costA
Read-onlyIdempotent
Inspect

Estimate what a task would cost to do by people across countries: pass task_description and countries (names or ISO codes), and optionally currency (default EUR), complexity (low, medium or high) and estimated_time_minutes. It makes a model call, billed to your provider key when you set one and to the platform's otherwise. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
currencyNoThe currency to show costs in. Defaults to EUR.
countriesYesThe countries to estimate for, as names or ISO codes.
complexityNoHow hard the task is.
task_descriptionYesThe task to estimate.
estimated_time_minutesNoHow long the task takes one person, in minutes.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/idempotent/non-destructive, and the description adds real behavioral context the annotations cannot: the call invokes a model that is billed to the caller's provider key (or the platform's), plus an explicit failure mode (sandbox self-registered keys get 403 until a person claims the workspace). It stops short of describing cost magnitude, latency, or return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose, then inputs, then billing/auth constraints; there is no filler. The input enumeration sentence is slightly list-like and duplicates schema detail, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description never indicates what an estimate looks like (per-country amounts in the requested currency, one entry per country, etc.). Auth, billing, and parameter behavior are well covered, but the return-value gap is a real omission for a billed model call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters, including the EUR default and the low/medium/high enum. The description restates the same facts (countries as names or ISO codes, currency default) without adding syntax, formatting, or constraint guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('estimate what a task would cost to do by people across countries'), which is clearly distinct from price-computation siblings like compute_price or ask_pricing_analyst. It does not explicitly name or contrast an alternative tool, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent which inputs to pass and states prerequisites (claimed Last Price credential, claimed workspace), which implies when the tool is callable. However, it never contrasts this with adjacent tools such as compute_price, get_cost_analytics, or list_costs, so selection guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_commerce_proposalsA
Destructive
Inspect

Push every approved price proposal to its connected store now. This changes live prices on the store and cannot be undone from here. Needs a Last Price credential with commerce execute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint and openWorldHint annotations, the description spells out that live store prices change, that the action 'cannot be undone from here', the exact credential scope required, and a concrete failure mode (403 on sandbox keys until the workspace is claimed). That is meaningful behavioral context the structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action, then the risk, then the two prerequisites. Every sentence adds a distinct, actionable fact with no repetition of the annotations or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, an agent mainly needs to know blast radius, irreversibility, and blockers, all of which are covered. Remaining gaps are minor: what happens across multiple connected stores, whether a partial failure leaves some prices pushed, and what the call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-level detail is expected or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Push every approved price proposal') and scopes it to 'its connected store now'. The qualifier 'approved' implicitly separates it from approval tools like approve_commerce_proposal, but no sibling is named outright, so the differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Timing is clear ('every approved... now'), which implies it runs only after proposals have been approved, and the prerequisites (commerce execute scope, claimed workspace) tell the agent whether it can call it at all. It does not name an alternative tool or describe a when-not-to-use case, such as when only one proposal should go live.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeze_rosetta_adapterAInspect

Freeze a mapping plan into a pinned adapter: every mapping is stamped as frozen so the same input maps the same way every time with no model call. Pass plan from plan_rosetta_mapping. Returns the adapter; nothing is stored. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
planYesA plan as plan_rosetta_mapping returns it.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: deterministic re-mapping, no model call, "nothing is stored", and a concrete 403 failure mode for unclaimed sandbox workspaces. One tension is worth noting: "nothing is stored" reads as a side-effect-free operation while readOnlyHint=false and idempotentHint=false declare otherwise; this is a soft mismatch rather than a direct contradiction, since the adapter is returned rather than persisted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its effect, then prerequisites, in five tight clauses with no filler. Slightly dense comma-splicing keeps it from a 5, but every sentence carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, it covers what is produced ("Returns the adapter"), that nothing is persisted, and both auth gates that cause failures. The shape of the returned adapter is left unstated, but that is a minor gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents `plan` at 100% coverage (including nested mapping fields), so the baseline is 3. The description adds real value by specifying the provenance contract — the plan must come from plan_rosetta_mapping — which the schema only hints at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Freeze a mapping plan into a pinned adapter") and immediately explains the effect: mappings stamped frozen, deterministic output, no model call. This clearly separates it from plan_rosetta_mapping and translate_with_rosetta in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Pass plan from plan_rosetta_mapping" names the upstream tool and the exact input source, and the credential/workspace prerequisites tell the agent when the call will be refused. It stops short of saying when NOT to freeze (e.g. versus persisting elsewhere), so it is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_monetization_codeA
Read-onlyIdempotent
Inspect

Write the Last Price integration code for an app (Next.js, Express or FastAPI): a client that records signals, prices calls, creates customers and bills them through Stripe, plus an example, as files and one patch for git apply. Writes nothing anywhere. Early access. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idNoOne of your agents, filled into the code.
paymentsNoInclude billing through Stripe (default true).
customersNoInclude creating customers at sign-up (default true).
frameworkYes
event_nameNoThe billable event the example records, like chat.completed.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: 'Writes nothing anywhere' reinforces readOnlyHint, 'Early access' flags availability, and the auth/scope requirement plus the 403 failure mode on unclaimed workspaces are operational facts the agent cannot get from structured fields. Also clarifies the delivery mechanism (files + git-applicable patch) rather than mutating a repo.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what is generated and what it produces, then prerequisites. The clipped, telegraphic phrasing ('Writes nothing anywhere. Early access. Needs...') is efficient but slightly staccato; no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still tells the agent what it gets back (source files plus one patch for git apply) and what it must have before calling. Coverage of how the generated code is parameterized is thin, but the essential call-time requirements are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the schema already documents agent_id, payments, customers and event_name. The description only loosely echoes them ('Next.js, Express or FastAPI' maps to the framework enum; 'creates customers' and 'bills through Stripe' hint at the toggles) without explaining defaults or the event_name pattern, so it adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: writes Last Price integration code for Next.js/Express/FastAPI, including a client that records signals, prices calls, creates customers and bills via Stripe, delivered as files plus a git patch. The output shape ('files and one patch for git apply') plus 'Writes nothing anywhere' cleanly separates it from sibling `open_monetization_pull_request`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions: a Last Price credential with billing read scope and a claimed workspace, and warns that a self-registration sandbox key is refused with 403 until a person claims it. It does not explicitly name a contrasting sibling or say when to prefer it over opening a PR, so the routing is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_behaviour_test_runA
Read-onlyIdempotent
Inspect

Read one behaviour test run for one of your agents, with every scenario's result. In early access: it answers released false or not_released until it is switched on for your workspace. Runs never send real mail. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
run_idYesThe run: its id, as run_agent_behaviour_tests or get_agent_behaviour_tests returned it.
agent_idYesThe agent to test: its id, as an agent shows in your workspace. An agent's own credential can name only its own agent.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnly/idempotent annotations: discloses early-access gating (returns released false or not_released), that runs never send real mail, that a Last Price credential is required, and that sandbox self-registered keys get a 403 until the workspace is claimed. These are precisely the traits annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by gating, safety, and auth prerequisites in short declarative clauses with no filler. The early-access sentence ('it answers released false or not_released') is slightly compressed and takes a reread, which costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with rich annotations and no output schema, the description covers prerequisites, access gating, and side-effect safety. What the scenario result payload actually contains is only implied by 'every scenario's result', but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so agent_id and run_id are already fully documented, including the constraint that an agent's own credential can name only its own agent. The description adds no parameter-level syntax or format detail beyond the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one behaviour test run for one of your agents') plus the returned scope ('with every scenario's result'). This clearly separates it from the list-shaped sibling get_agent_behaviour_tests and the mutating run_agent_behaviour_tests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Read one ... run' signals the singular case versus the plural lister, and the credential/workspace prerequisites give context for when it will fail. It never names an alternative tool outright, so selection is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_behaviour_testsA
Read-onlyIdempotent
Inspect

Read what the behaviour tests offer for one of your agents: whether they are released for your workspace, the scenario pack for the agent's kind, whether your workspace's own Anthropic key is connected, the limits and the recent runs. In early access: it answers released false or not_released until it is switched on for your workspace. Runs never send real mail. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idYesThe agent to test: its id, as an agent shows in your workspace. An agent's own credential can name only its own agent.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: auth requirements, a specific error condition (403 for unclaimed self-registration workspaces), early-access degraded responses ('released false or not_released'), and a side-effect guarantee that runs never send real mail. That is real behavioral context an agent cannot get from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and the returned fields, then two short prerequisite sentences. The first sentence is a long comma-chained list, but every clause carries distinct information and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so enumerating the returned fields (release status, scenario pack, key connection, limits, recent runs) is exactly the compensating detail needed. Combined with the auth and 403 caveats, an agent has everything required to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single agent_id parameter is documented in the schema, including the UUID format and the credential-scoping rule. The description adds no parameter-level detail of its own, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb ('Read') plus resource ('behaviour tests') and the exact scope ('for one of your agents'), followed by an enumeration of what is returned: release status, scenario pack, Anthropic-key connection, limits, recent runs. It implicitly separates itself from get_agent_behaviour_test_run by covering 'recent runs' as a summary, but it never names that sibling or run_agent_behaviour_tests, so differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for use: it needs a Last Price credential and a claimed workspace, and a sandbox key from self-registration is refused with 403. It also explains the early-access state where the answer is 'released false or not_released'. It does not explicitly point to run_agent_behaviour_tests for actually executing the tests, so the when-to-use vs. alternative is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_capabilitiesA
Read-onlyIdempotent
Inspect

Read what one agent may do: its effective scopes with a description of each, how many approvals are pending for it, its rate limit and how idempotency keys work. Pass agent_id. Call it before a planned action to learn whether it will succeed instead of meeting a 403. An agent's own credential reads only its own agent; a workspace credential reads any agent in the workspace. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idYesThe agent: its id, as it shows in your workspace. An agent's own credential can name only its own agent.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, closed-world safety profile, and the description adds substantial context beyond them: required Last Price credential, credential-scoping rules (own agent only vs any agent in workspace), and the concrete 403 failure mode for unclaimed sandbox workspaces. This is exactly the kind of preconditions an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, each front-loaded around purpose, usage, and access preconditions, with no filler. There is mild redundancy between the credential-scoping sentence and the schema's agent_id description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the return contents (scopes plus descriptions, pending approvals, rate limit, idempotency keys), and it covers all preconditions for a one-parameter read tool. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's own description already states that an own credential may name only its own agent; the description's 'Pass agent_id' and credential note largely restate that. Baseline 3 is appropriate since the schema carries the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read what one agent may do') and enumerates exactly what is returned: effective scopes with descriptions, pending approval count, rate limit, and idempotency key behavior. An agent can distinguish this from neighboring tools like check_agent_readiness or get_agent_value_receipt without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage trigger ('Call it before a planned action ... instead of meeting a 403') and defines the access conditions under which it may be called (own credential vs workspace credential, Last Price credential, claimed workspace). It does not name alternate tools for overlapping checks, so it stops short of a full when-not/alternatives statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_protocolA
Read-onlyIdempotent
Inspect

Read your Personal Agent Protocol file: the organization name and domain saved for it, whether the domain is verified, the file to publish (the poppy.json a personal agent reads to learn what you let it do) and the address to publish it at. Answers released false until agent protocol files are switched on for your workspace. Read-only. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: fields return 'released: false' until agent protocol files are enabled for the workspace, and self-registered sandbox keys are refused with 403 until claimed. That is exactly the auth/state 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and list of returned fields, then appends preconditions. The first sentence is long and carries a heavy nested parenthetical, which costs some readability, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return values, and it does so by naming each field including the released flag semantics. Only minor gaps remain, such as error shapes beyond the 403 case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument read scoped to the caller's own workspace.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Read your Personal Agent Protocol file') and enumerates exactly what is returned: org name, domain, verification status, the poppy.json to publish, and its address. It does not name the sibling write/verify tools (set_agent_protocol, verify_agent_protocol), so differentiation is implied by 'Read' rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions — a Last Price credential with routing read scope and a claimed workspace (sandbox keys get 403) — which helps an agent decide it can call this at all. But it never says when to prefer this over set_agent_protocol or verify_agent_protocol, so the alternative-selection guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_value_receiptA
Read-onlyIdempotent
Inspect

Read one agent's Value Receipt, measured: its signals over the period with the human value the workspace set for each, what it cost (Last Price compute plus costs recorded in the workspace) and the return when both are known. A figure that cannot be measured is null, with the reason under missing. Pass agent_id, and start_date and end_date to choose the period (default the last 30 days, at most 366). An agent's own credential reads only its own receipt. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idYesThe agent: its id, as it shows in your workspace. An agent's own credential can name only its own agent.
end_dateNoThe end of the period, as an ISO 8601 date and time.
start_dateNoThe start of the period, as an ISO 8601 date and time.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds important behavioral context: it explains that unmeasurable figures are null with a reason under 'missing', that an agent's own credential reads only its own receipt, and that a claimed workspace and Last Price credential are required, with a specific 403 refusal for sandbox keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then covers output details, parameter usage, and prerequisites in a logical order. While slightly dense, every sentence contributes necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (measured receipt with multiple components, authentication constraints) and the absence of an output schema, the description provides a fairly complete picture: it explains what is returned (signals, cost, return, null handling), parameter defaults and limits, and credential/workspace requirements. Minor gaps like error handling beyond 403 are acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it states the default period (last 30 days) and the maximum range (366 days), and reiterates the agent credential restriction on agent_id, which enhances understanding of the parameter's behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Read) and resource (one agent's Value Receipt) and details what the receipt contains (signals, cost, return). It clearly distinguishes this from a generic receipt tool, though it does not explicitly name alternatives like list_receipts or get_receipt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides parameter usage guidance (default last 30 days, at most 366 days) and mentions credential/workspace prerequisites, but it does not explicitly say when to use this tool versus sibling tools such as get_receipt or list_receipts. The usage context is implied rather than contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_aitune_profilingA
Read-onlyIdempotent
Inspect

Read the latest profiling report for a model on the AITune sidecar: measured latency, throughput and memory per backend, so you can choose how to serve it. Pass the model name as model. Read-only; it does not start a run. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
modelYesThe model to read the profiling report for.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses the required 'Last Price' credential and a concrete failure mode: sandbox keys from self-registration get a 403 until a human claims the workspace. That is exactly the pre-call context an agent needs and would otherwise have to discover by failing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences: what it returns and why, then the read-only boundary, then prerequisites. Purpose is front-loaded and no sentence is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully described parameter, no output schema, and annotations covering safety, the description still names the returned metrics and the credential/workspace prerequisites. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'model' parameter is already documented, so the schema carries the weight. The description only restates 'Pass the model name as model' without adding format or naming conventions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the latest profiling report') plus the exact payload ('measured latency, throughput and memory per backend') and the decision it supports. It also disambiguates from the run-starting sibling by saying 'Read-only; it does not start a run.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case ('so you can choose how to serve it') and an implicit exclusion of the alternative profiling tool ('it does not start a run'). It lacks an explicit pointer naming start_aitune_profiling as the tool to use when no report exists yet.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_aitune_system_statsA
Read-onlyIdempotent
Inspect

Read the AITune sidecar's current GPU and CPU load: utilisation, memory and temperature. Pass history true to get the readings over the last duration_minutes (1 to 1440, default 60) instead. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
historyNoReturn the readings over time instead of the current ones.
duration_minutesNoHow far back the history goes, in minutes. Defaults to 60.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral context: a required Last Price credential and the concrete failure mode (403 refusal) for sandbox keys from self-registration until the workspace is claimed. That is exactly the kind of operational detail annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what is read, then how to switch modes, then safety, then auth preconditions. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-param read tool with no output schema, it covers the returned metrics, the history mode, range semantics, and both auth gates. An agent has everything needed to call it correctly or diagnose a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining the dependency the schema leaves implicit — that duration_minutes only matters when history is true — and restating the 1–1440 bounds and default in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the AITune sidecar's current GPU and CPU load') and enumerates the returned signals (utilisation, memory, temperature). This is clearly separable from nearby siblings such as get_aitune_profiling and list_aitune_backends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to pass history=true to switch from current readings to a time-series, with the range and default spelled out. It gives prerequisites (credential, claimed workspace) but does not name a sibling alternative or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alert_preferencesA
Read-onlyIdempotent
Inspect

Read your email alert settings for your workspace: for each alert type, whether it is on and whether it comes right away or in one daily summary, whether your role gets alerts at all, and whether alert email is switched on. The agent that owns an unclaimed workspace reads its own settings. Needs a Last Price credential with notifications read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious context beyond that: a specific auth requirement ('Needs a Last Price credential with notifications read scope') and the ownership/identity semantics for unclaimed workspaces. It does not discuss failure modes if the credential is missing, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and followed by the concrete return shape, then the credential prerequisite in last position. The middle clause listing four returned properties is dense but each item earns its place since there is no output schema. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations already covering safety, the description carries the right load: it explains the return shape, the workspace/agent ownership model, and the required credential scope. The main residual gap is the set of alert types and whether output is grouped or flat, which an agent would only learn by calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (empty object, additionalProperties=false), so there is no parameter semantics to explain and the baseline is 4. The description instead spends its words on what the call returns, which is valuable given no output schema exists, though it does not specify ordering or the alert-type enumeration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Read your email alert settings for your workspace') and enumerates exactly what is returned: per-alert-type on/off state, immediate vs. daily digest, role eligibility, and the workspace-level toggle. That makes the tool's scope unambiguous. It does not name the sibling update_alert_preferences, so the read-vs-write distinction is implied by the verb rather than stated explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'The agent that owns an unclaimed workspace reads its own settings' gives a useful calling context and implicitly scopes the tool to self/workspace settings rather than arbitrary targets. However, there is no explicit statement of when to prefer this over update_alert_preferences, no exclusion of other cases, and no guidance on what to do if the credential lacks the required scope. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analyst_briefA
Read-onlyIdempotent
Inspect

Read the latest weekly brief the pricing analyst wrote for your workspace: short claims, each citing the findings it rests on (every number checked against them), the findings themselves, and the proposals it recorded as pending approvals, each with the exact call that would apply it. The analyst never applies anything: whoever approves sends that call. brief is null before the first one. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, closed-world, and non-destructive behavior, but the description adds material context beyond them: the brief is null before the first one, the credential scope needed, the claimed-workspace requirement and 403 refusal, and the fact that approval is external to the analyst.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core read action and return content, then prerequisites and edge case. The sentences are dense but every clause contributes useful selection or invocation information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero params, no output schema, and clear annotations, the description is complete: it explains what the brief contains, the null-before-first behavior, the auth/workspace prerequisites, and that proposals are pending rather than applied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema imposes no semantic burden and the baseline is 4. The description does not need to explain parameter meanings and correctly focuses on the brief's content and prerequisites.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Read' plus resource 'latest weekly brief' written by the pricing analyst, and it enumerates exactly what the brief contains: claims, findings, and pending proposals with the exact applying call. It also distinguishes the brief from the act of applying proposals by stating the analyst never applies anything.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for when to read it and strong prerequisites: a Last Price credential with routing read scope and a claimed workspace, with a sandbox key refused 403 until claimed. It does not explicitly name alternative tools or when not to use it, so it lacks a full when/when-not/alternatives matrix.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analyst_settingsA
Read-onlyIdempotent
Inspect

Read whether the pricing analyst writes your workspace a brief, how often, whether a written brief may be paid from your Last Price balance and up to what monthly cap, whether the brief is switched on for your workspace (released), the funding terms (with the x402 price of one question), and whether the commerce cycle runs on a schedule, how often, and what its latest run drafted. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world behavior, yet the description adds genuinely new information: the required credential scope and the specific 403 failure mode for unclaimed sandbox workspaces. It also discloses which data the read exposes. It does not describe response shape or any rate/limit behavior, but the safety profile is fully covered elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with 'Read' and wastes little, but the whole definition is a single ~90-word run-on sentence with six comma-separated clauses. Splitting return fields from auth prerequisites would make it far more scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read with no output schema, the description carries the full load and does: it enumerates the returned settings and states the auth and workspace-claim prerequisites up front. Nothing an agent needs before calling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the description has nothing to disambiguate and the baseline of 4 applies. No parameter language is present, and none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb ('Read') and enumerates the exact settings returned: brief enablement/frequency, paid-brief funding with monthly cap, release state, funding terms with x402 price, and commerce-cycle schedule plus last run. An agent can tell this is the settings-read tool rather than a brief-content or mutation tool, though it never names the siblings set_analyst_settings or get_analyst_brief to make the distinction airtight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: a Last Price credential with routing read scope and a claimed workspace, explicitly noting that a self-registration sandbox key is refused with 403 until a person claims the workspace. That is unusually actionable context. It stops short of stating when to prefer get_analyst_brief or set_analyst_settings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_approvalA
Read-onlyIdempotent
Inspect

Read one approval: the held action, who asked, its status, the reason given and when it was decided. approval_id is the id from list_approvals or the notification that announced it. Needs a Last Price credential with audit read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
approval_idYesThe approval id, as list_approvals gives it.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), so the bar is lower, yet the description still adds real operational context: a Last Price credential with audit read scope is required, and a sandbox key from self-registration is refused with 403 until a human claims the workspace. That pre-empts the most likely failure mode for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned, then id provenance, then gating prerequisites. Every sentence earns its place and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description compensates by naming the fields returned (action, requester, status, reason, decision timestamp). Combined with the auth/workspace preconditions, an agent has everything needed to call this correctly and to interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is already documented as "the approval id, as list_approvals gives it." The description's provenance note ("or the notification that announced it") adds only a marginal source hint beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read one approval") and enumerates the content an agent will get back: the held action, requester, status, reason, decision time. That distinguishes it cleanly from list_approvals (many, summarized) and decide_approval (mutates state), so no schema inspection is needed to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear retrieval context – the id comes "from list_approvals or the notification that announced it" – which tells the agent how this tool chains after a listing or notification call. It stops short of explicitly ruling out alternatives (e.g. use list_approvals when you don't yet have an id), so it is strong but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_billing_settingsA
Read-onlyIdempotent
Inspect

Read your workspace's prepaid balance and billing settings: the balance in USDC, whether balance billing and outcome pricing are on, the auto top-up offer, the latest ledger rows and the terms. Needs a Last Price credential with price compute scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior; the description adds useful context by listing returned billing data and the required 'Last Price credential with price compute scope.' It does not cover error modes or rate limits, but it adds substantive transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first front-loads the operation and enumerates contents; the second supplies the credential prerequisite. No filler, and structure supports quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only tool with no output schema, the description supplies the key return categories and auth requirement. It could be more complete by specifying ledger row count/term shape or disambiguating overlapping balance tools, but it is sufficient to call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero input parameters, so the baseline is 4. The description appropriately adds no parameter detail because none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (workspace prepaid balance and billing settings) and enumerates what is included. It does not name or contrast sibling balance/settings tools such as get_wallet_balance or get_workspace_settings, so sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the general use case clear and adds a credentials prerequisite, but never states when to prefer this over get_wallet_balance/get_workspace_settings or when not to use it. Usage is therefore implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_buyer_aware_pricingA
Read-onlyIdempotent
Inspect

Read buyer-aware pricing for your workspace: models learned nightly from your own quotes (a contextual bandit and a boosted demand model, plus a hosted model if you promoted one) that price by the kind of buyer, such as agents versus people and the sales channel. Shows the mode (shadow logs what each model would charge; live lets the chosen model price), each model with its elasticity per kind of buyer, and the last 30 days: how often each model priced, how its price compared with the price quoted, and acceptance of live-priced quotes against the rest. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, and the description adds substantive behavior: models retrain nightly, shadow mode only logs what each model would charge while live mode actually prices, and the reported window is the last 30 days. It also discloses the required credential and scope, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the opening clause, and the remainder enumerates return content that has nowhere else to live since there is no output schema. The parenthetical stacking ('a contextual bandit and a boosted demand model, plus a hosted model if you promoted one') makes it dense and slows scanning, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining returns, and it does: mode semantics, per-model elasticity, pricing frequency, price-vs-quote comparison, and acceptance of live-priced quotes. Auth requirements and data freshness are also covered, so an agent can decide to call it without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the 4 baseline applies. The description correctly describes a workspace-scoped, fixed-window read with no inputs to document, though it does not explicitly say the workspace is inferred from the credential.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read buyer-aware pricing for your workspace') and scopes exactly what is returned: models learned nightly, per-buyer-kind elasticity, mode, and 30-day statistics. It is clearly a read operation distinct from set_buyer_aware_pricing, but it never names that sibling explicitly, leaving the agent to infer the pairing from the shared name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage context clear — inspecting per-buyer-kind pricing models, current mode, and recent performance — and adds a concrete prerequisite ('Needs a Last Price credential with routing read scope'). It does not state exclusions or point at alternatives such as get_learned_pricing or set_buyer_aware_pricing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_card_topupA
Read-onlyIdempotent
Inspect

Read one card top-up of your workspace by topup_id: pending (with its checkout link), paid (the balance holds it), expired (the payment page lapsed unpaid) or failed, with the amount in US dollars and the USDC credited. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault
topup_idYesThe card top-up UUID: topup_id on a create_card_topup result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses the auth prerequisite ("Last Price credential with the price:compute scope") and explains what each status means — pending carries a checkout link, paid means the balance holds it, expired means the payment page lapsed unpaid — plus that the amount is in USD with USDC credited. That is substantive behavioral context the annotations cannot provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense but well-ordered sentence: identity and scope first, state semantics second, auth requirement last. Every clause adds information, though the long parenthetical status list makes it slightly run-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so for the important parts (status meaning, checkout link presence, USD amount and USDC credited) and for auth scope. It does not enumerate the full response field set, leaving a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single topup_id param is already documented as "The card top-up UUID: topup_id on a create_card_topup result." The description restates rather than extends that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ("Read one card top-up of your workspace by topup_id") and enumerates the four possible states the record can be in. An agent can tell immediately this is a single-record fetch, distinct from the create_card_topup write path implied by the topup_id provenance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is clear: you need a topup_id (obtained from a create_card_topup result) and the tool is for inspecting a single top-up's state, which implies the polling/verification scenario. It stops short of explicitly stating when to prefer this over any listing or creation alternative, 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.

get_changelogA
Read-onlyIdempotent
Inspect

What changed in Last Price: the newest release notes, optionally for one feature, written for agents as well as people. Pass feature (a tag such as billing, webhooks, mcp, agent-payments, approvals) to follow one part of the product, and since (YYYY-MM-DD, for example the date you last checked) to see only newer notes. Each note has its date, title, summary, category, feature tags, a link to the full note and, when there is one, the docs section and app screen it is about. Public: needs no credential. Check it at the start of a session and before changing integration code.

NameRequiredDescriptionDefault
limitNoHow many notes at most, newest first.
sinceNoOnly notes dated after this day (YYYY-MM-DD).
featureNoA feature tag slug, for example billing. Omit for every feature.
audienceNoOnly notes written for this audience. Omit for both.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value with 'Public: needs no credential' and by enumerating the returned fields, though it does not mention pagination or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core question, then parameters and usage advice. Mostly efficient, though the return-field enumeration in mid-sentence makes it slightly dense rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description specifies the response shape (date, title, summary, category, feature tags, link, docs section, app screen), and the auth stance is stated. An agent has everything needed to call and consume it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents each parameter. The description adds concrete tag examples ('billing, webhooks, mcp, agent-payments, approvals') and the practical 'date you last checked' framing for since, going slightly beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('What changed in Last Price: the newest release notes') and scopes it (optionally one feature). It is clearly distinguishable from the many sibling tools, none of which return release notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing: 'Check it at the start of a session and before changing integration code', and explains how to use feature and since to follow one area or only newer notes. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channel_ratesA
Read-onlyIdempotent
Inspect

Read the channel rates saved for your workspace: what each sales channel, such as a shopping agent or an agent marketplace, keeps of a sale, and how much of that cut is added to the price. released says whether channel pricing is on for your workspace; rates are saved either way and apply only while it is on. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, so the bar is low, but the description still adds substantial non-obvious behavior: the required auth scope, the sandbox-key 403 refusal until the workspace is claimed, and the 'released' flag semantics including that stored rates only apply while it is on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with what the data means before the operational caveats. The middle sentence about 'released' is dense but each sentence carries new information; slight friction from cramming pricing semantics, credential scope, and claiming into one paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still conveys what comes back conceptually: per-channel retained cut and the portion added to price, plus the workspace-level 'released' flag. It stops short of describing the response shape (list vs object, ordering, empty case), which is the only remaining gap for a zero-parameter read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond scope, which it does (workspace-scoped, no filtering arguments).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (channel rates saved for the workspace), then defines the domain concept explicitly: what each sales channel keeps of a sale and how much of that cut is added to price. An agent can tell this is a read of per-channel commission/markup configuration, distinct from set_channel_rates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions for use (Last Price credential with routing read scope, claimed workspace, otherwise a 403) and explains that rates are saved whether or not channel pricing is on. It never names an alternative such as set_channel_rates for modification, so there is no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_commerce_policyA
Read-onlyIdempotent
Inspect

Read one commerce pricing policy: its scope and rules. policy_id is the id from list_commerce_policies. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
policy_idYesThe policy id, as list_commerce_policies gives it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real value by naming the required credential scope and the exact failure mode (403 for sandbox keys from self-registration until a person claims the workspace). It says little about what the returned policy content looks like beyond "scope and rules".

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose, then id provenance, then prerequisites. Zero filler; every sentence is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-param read with full annotation coverage and full schema coverage, the description covers the risky parts (auth scope, claim requirement). Minor gap: no indication of behavior when the policy id is unknown or from another workspace, and the return payload is described only in one clause with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single property already documents "The policy id, as list_commerce_policies gives it" — the description repeats that fact rather than extending it (no format, no not-found behavior). Baseline 3 applies when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: "Read one commerce pricing policy: its scope and rules", with "one" implicitly contrasting against list_commerce_policies, which is named as the id source. An agent can tell this is a single-resource fetch, though it doesn't explicitly disambiguate from update/delete_commerce_policy siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete routing rule for the required input ("policy_id is the id from list_commerce_policies") and states prerequisites: Last Price credential with commerce catalog read scope, plus a claimed workspace. No explicit when-not or alternative-tool exclusions, but the context needed to invoke it is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contactA
Read-onlyIdempotent
Inspect

Read one contact: its name, email, phone, address, external id and metadata. Pass contact_id. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
contact_idYesThe contact: its id, as list_contacts shows it.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description goes beyond them by disclosing two real operational constraints the annotations cannot convey: a Last Price credential is required, and an unclaimed workspace returns 403 until a person claims it — a failure mode an agent would otherwise misdiagnose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return fields, then requirements; every sentence carries information. "Pass contact_id" mildly duplicates the required field in the schema, a small redundancy in an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-param read tool with no output schema, the description covers the return shape, the auth requirement, and the notable error condition, which is enough to call it correctly. It stops short of stating what happens when the id does not exist (404 vs empty), the only material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage and a single required param, the schema already carries the meaning (including the hint that the id matches what list_contacts shows). The description only restates "Pass contact_id" and adds no format or sourcing detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Read one contact") and enumerates the fields returned (name, email, phone, address, external id, metadata), making the scope concrete. The instruction to pass contact_id implicitly separates it from get_contact_by_external_id and list_contacts, but those siblings are never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the single-record scope and the id-based lookup, and prerequisites for a successful call are spelled out. However, it never says when to prefer this over get_contact_by_external_id, list_contacts, or update_contact, so the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contact_by_external_idA
Read-onlyIdempotent
Inspect

Read one contact by the id your own system gives it: pass external_id and customer_id, because an external id is only unique within one customer. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
customer_idYesThe customer: its id, as list_customers shows it.
external_idYesThe id your own system gives the contact.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds important operational context: a Last Price credential is required, and a claimed workspace is required because sandbox keys receive 403 until claimed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core operation and the critical uniqueness rationale front-loaded. The credential and workspace prerequisites follow without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read tool with only two fully documented parameters and no output schema, the description covers operation, scoping, authentication, and workspace prerequisites. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: both parameters are required because external IDs are only unique within a customer. That explains the joint constraint rather than merely repeating field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: read one contact by an externally supplied ID. It also explains the external_id/customer_id pairing, which distinguishes this from get_contact and list_contacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear about when to use it: when the caller has its own external ID rather than Last Price's internal contact ID, with the uniqueness caveat stated up front. It does not explicitly name get_contact as the alternative for internal-ID lookups, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cost_analyticsA
Read-onlyIdempotent
Inspect

Total the costs recorded in your workspace over a period, grouped by day (the default), week, month, agent, customer or type: count, total, average, smallest and largest amount for each group and currency, and overall totals. Pass start_date and end_date to choose the period. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
end_dateNoThe end of the period, as an ISO 8601 date and time.
group_byNoHow to group. Defaults to day.
start_dateNoThe start of the period, as an ISO 8601 date and time.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful non-obvious behavior: a Last Price credential is required and self-registered sandbox keys get a 403 until the workspace is claimed. It stops short of stating rate limits or result-size behavior, but the auth gates are a meaningful addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and aggregation detail, then the period parameter, then the two hard prerequisites. It is dense but every clause is relevant; the only mild redundancy is the explicit instruction to pass start_date and end_date, which the schema already conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining results, and it does by enumerating per-group and per-currency count/total/average/min/max plus overall totals. Auth and workspace-state requirements are covered. Only pagination/row-limit behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter has a description, so the baseline is 3. The description restates the group_by default of 'day' and confirms that start_date/end_date delimit the period, which the schema already says; it adds no format or boundary semantics beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Total the costs recorded in your workspace over a period') plus the grouping dimensions and aggregate statistics produced. It implicitly separates itself from the sibling list_costs by being an aggregation rather than a row listing, but never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Pass start_date and end_date to choose the period' gives the calling pattern, and the credential/claimed-workspace prerequisites are spelled out. However, there is no guidance on when this aggregation is preferable to list_costs or get_usage_breakdown, nor any exclusion of cases where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_creditA
Read-onlyIdempotent
Inspect

Read one prepaid credit bundle: its customer, amount bought, balance left, currency and expiry. Pass credit_id. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
credit_idYesThe credit bundle: its id, as list_credits shows it.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation, and the description goes clearly beyond that by naming the required credential ('Last Price credential with billing read scope') and the claimed-workspace requirement, including the specific 403 refusal for sandbox keys from self-registration. It also enumerates the fields returned, which is useful because there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main purpose and returned fields, followed by the required parameter and then the auth/workspace constraints. Every sentence carries operational value and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read, the description covers what it returns, the single required parameter, and the non-obvious credential and workspace prerequisites that can cause failures. With annotations and schema handling the structured safety and parameter typing, nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines credit_id as a UUID and explains that it is the id 'as list_credits shows it.' The description adds only 'Pass credit_id,' which is a minimal restatement rather than additional semantic detail; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read one prepaid credit bundle,' and immediately scopes it to a single bundle via credit_id. It also lists the returned business fields (customer, amount bought, balance left, currency, expiry), which distinguishes it from list_credits and aggregate balance tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage clear in context: retrieve one bundle by passing credit_id, and it adds prerequisites for credential scope and workspace claim. However, it does not explicitly say when to use this instead of list_credits or get_credit_balance; the alternative relationship is only implied by the singular 'one' scope and the schema's reference to list_credits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_credit_balanceA
Read-onlyIdempotent
Inspect

The credit a customer has left to spend: the total of their unexpired bundles with a balance, per currency. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
customer_idYesThe customer UUID.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: a billing-read credential scope and a concrete failure mode (403 until a sandbox workspace is claimed). It stops short of saying what comes back when the customer has no live bundles.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the definition, then the two prerequisites. Every clause carries information; the only minor cost is the repeated 'Needs... Needs...' phrasing that reads as a list rather than a flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full annotations and no output schema, this covers purpose, auth scope, and the workspace-claim gate. The only gap is return-shape behavior in edge cases (zero balance, multiple currencies), which the annotations don't supply either.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single required parameter and 100% schema description coverage, the schema already documents customer_id. The description's 'per currency' hints at result grouping but adds nothing about the identifier itself, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and computed scope: the customer's remaining credit, defined as the total of unexpired bundles with a balance, broken out per currency. That definition alone separates it from get_credit (a single credit) and list_credits, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to reach for this rather than get_credit, get_wallet_balance, or list_credits. Usage is only implied by the resource name and by the prerequisites listed, so the agent must infer selection from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_customerA
Read-onlyIdempotent
Inspect

Read one customer: its name, email, external id and metadata. Pass customer_id. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
customer_idYesThe customer: its id, as list_customers shows it.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it discloses the required 'Last Price' credential and the workspace-claim prerequisite, including the concrete 403 refusal for self-registration sandbox keys. That failure mode is exactly the kind of context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what it returns and what to pass. The credential and workspace notes are relevant, though the workspace sentence is slightly long relative to the rest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description names the returned fields and covers both auth and the claim-based access gate, which is the main complexity here. Nothing critical is missing for a simple single-record read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes customer_id as a uuid shown by list_customers. 'Pass customer_id' adds no format or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read one customer) and enumerates the returned fields, which distinguishes it clearly from list_customers and update_customer. The sibling get_customer_by_external_id is never named, so the id-vs-external-id split is only implied by 'Pass customer_id'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is the single-record read by id, but it never states when to use it instead of get_customer_by_external_id or list_customers. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_customer_by_external_idA
Read-onlyIdempotent
Inspect

Read one customer by the id your own system gives it: pass external_id. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
external_idYesThe id your own system gives the customer.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real value beyond that by disclosing the required credential and the workspace-claim requirement, including the 403 refusal for self-registered sandbox keys. It stops short of describing return shape or 404 behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and parameter, followed by prerequisites. No sentence is wasted, and the 403 detail is stated compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup tool, the description covers the parameter, authentication requirement, workspace eligibility, and the specific failure mode. No output schema exists, but the description supplies everything needed to decide whether and how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and its schema description already explains that external_id is the id from your own system. The description restates 'pass external_id' without adding format or validation details, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one customer') and scopes it by external id ('the id your own system gives it'). That phrasing inherently distinguishes it from the sibling get_customer, which uses the internal customer id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes clear when to use it: when you have an external_id from your own system. It also states prerequisites (credential and claimed workspace) and the 403 failure mode. It does not explicitly name alternatives such as get_customer, but the context is otherwise unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cut_advisor_settingsA
Read-onlyIdempotent
Inspect

Read the settings behind simulate_agent_cut: whether the cut advisor is released for your workspace, the defaults it applies and the limits on each input. Free to call; read it before simulate_agent_cut to see what it will accept. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing cost ('free to call'), an authentication requirement (Last Price credential), and a concrete failure mode: sandbox keys from self-registration get a 403 until the workspace is claimed. Annotations already cover the read-only/idempotent profile, so this is pure added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences ordered by importance: what it reads, why to call it, cost, prerequisites. No filler and no repetition of the annotation flags.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by naming the three categories of settings returned and explaining that calling it reveals what simulate_agent_cut will accept. Prerequisites are fully specified, so an agent has everything needed to invoke and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description adds partial return-shape information (release flag, defaults, per-input limits) rather than parameter syntax, which is the right emphasis for a no-arg tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (settings behind simulate_agent_cut), then enumerates what the settings contain: release status, defaults, and per-input limits. Ties itself to the sibling tool simulate_agent_cut, so an agent can place it immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'read it before simulate_agent_cut to see what it will accept', giving a clear sequencing rule. It also names the two hard preconditions (Last Price credential, claimed workspace) that decide whether the call succeeds at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_disputeA
Read-onlyIdempotent
Inspect

Read one payment dispute: its payment, customer, amount, status and reason. Pass dispute_id. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
dispute_idYesThe dispute: its id, as list_disputes shows it.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, closed-world safety. The description adds meaningful non-schema context: authentication requirements and a workspace-claiming gate that produces a 403 — a real failure mode an agent would otherwise hit blind.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose and return fields, then prerequisites. No sentence is redundant; the 403 detail earns its place as actionable troubleshooting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description compensates by enumerating the returned fields. Combined with disclosed auth/workspace prerequisites and a single fully documented parameter, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains the uuid format and that list_disputes surfaces the id. The description's "Pass dispute_id" adds essentially nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read one payment dispute") and enumerates the returned fields (payment, customer, amount, status, reason). The singular scope implicitly separates it from list_disputes, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete prerequisites: a Last Price credential and a claimed workspace, with the exact failure mode (403) for sandbox self-registration keys. It does not explicitly say when to prefer this over list_disputes or update_dispute, but the context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_experiment_definitionA
Read-onlyIdempotent
Inspect

Read one experiment's definition: its key, name, description, status, variants with their prices and weights, target sample size and dates. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
experiment_keyYesThe experiment key: key on a list_experiments result, lowercase letters, digits and underscores.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes beyond them by adding authentication requirements and a concrete failure mode ('sandbox key ... is refused (403) until a person claims the workspace'). It stops short of describing error behavior for a bad key or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the call returns, followed by the two access requirements; no filler sentences. Slightly denser than necessary in the last sentence, but every clause carries new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the payload contents, and for a single-parameter read tool it also covers auth prerequisites and the 403 workspace case. Nothing essential for calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter's format, length bounds, and origin ('key on a list_experiments result') are fully documented in the schema. The description adds no additional meaning about the parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Read one experiment's definition') and enumerates the returned fields (key, name, status, variants with prices/weights, sample size, dates), which is exactly what separates it from get_experiment_results, get_experiment_stopping, and get_experiment_bandit-adjacent siblings. An agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies the preconditions for success (Last Price credential, claimed workspace, 403 on sandbox keys) but never says when to prefer this over get_experiment_results or list_experiments. Usage is only implied by the 'read one definition' framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_experiment_resultsA
Read-onlyIdempotent
Inspect

Read how an experiment is doing: for each variant the views, conversions, conversion rate and revenue, and a comparison of every variant against the control. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
experiment_keyYesThe experiment key: key on a list_experiments result, lowercase letters, digits and underscores.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely new context: the credential requirement and the claim-workspace gate that causes a 403 — an error mode the schema and annotations do not reveal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and return fields are front-loaded, and prerequisite constraints follow in two dense sentences with no filler. It is slightly compressed but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what is returned per variant and the comparison to control. It also covers the two environmental prerequisites an agent must satisfy before calling. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the experiment_key description already specifies the key format and where to find it (list_experiments). The description adds no additional param semantics, so this sits at the baseline for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read how an experiment is doing') and enumerates the returned metrics (views, conversions, conversion rate, revenue, comparison to control). It naturally separates itself from get_experiment_definition/list_experiments by framing this as performance data, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states prerequisites: a Last Price credential and a claimed workspace, including the 403 failure mode for sandbox keys. It does not say when to prefer check_variant_significance or get_experiment_stopping, so the alternative-selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_experiment_stoppingA
Read-onlyIdempotent
Inspect

Read whether one of your stored experiments can stop: the verdict (stop, keep running, or no winner yet) with its reason and a one-line headline, from a sequential test against control that stays valid however often you look (mSPRT, adjusted for the number of arms), with each arm's chance to beat control and expected loss. Also the traffic split in force now, whether bandit allocation is on with its floors and the weights it would set now, and the weight history: every change the bandit made and every change to its settings. Answers "not enabled" until sequential testing is switched on for your workspace. Needs a Last Price credential for the workspace that owns the experiment. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
history_limitNoMost weight history entries to return. Defaults to 50.
experiment_keyYesThe experiment key, as created (lowercase letters, digits and underscores).

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substantial context the annotations cannot: the statistical basis (mSPRT adjusted for arm count, valid under repeated peeking), the exact verdict vocabulary, the 'not enabled' degenerate response, the credential dependency, and the 403 refusal path for self-registered sandbox keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first clause, but the body is two long run-on sentences that pack the statistical method, bandit floors, weight history and two auth/claim failure modes into undifferentiated prose. Much of it is genuinely useful, yet a bulleted or segmented layout would make the return payload scannable rather than a wall of comma-spliced clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the full burden of describing return values — and it does, covering verdict, reason, headline, per-arm win probability, expected loss, traffic split, bandit weights/floors and history. Combined with the auth and 'not enabled' states, an agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, making 3 the baseline. The description earns a notch above by clarifying what history_limit actually counts ('every change the bandit made and every change to its settings'), which tells the agent the history feed is a union of two record types rather than a single log.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Read whether one of your stored experiments can stop', and enumerates the verdict, per-arm chance to beat control, traffic split, bandit state and weight history. The scope is unmistakable against generic readers like get_experiment_definition, though it never names the nearest sibling (check_variant_significance or get_experiment_results) to draw the line explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions that gate invocation: sequential testing must be switched on (otherwise 'not enabled'), a Last Price credential for the owning workspace is required, and an unclaimed sandbox workspace is refused with 403. It stops short of stating when to prefer this over get_experiment_results or check_variant_significance, so the when-not-to-use side is inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_feature_contractA
Read-onlyIdempotent
Inspect

Read your workspace's feature contract: which fields of a pricing request, nested metadata included, your buyer-aware pricing models learn from, each named by its path in the API, and the column each one gets in an ONNX export. While one is saved, each logged quote keeps only these labels, never raw metadata. Not available until feature contracts are switched on for your workspace. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: the availability gate, the required credential and scope, and the effect that logged quotes keep only the contract labels and never raw metadata. It stops short of describing error behavior or rate limits, but it is substantially more informative than the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and contains no filler; each sentence adds information about what is returned, how logged quotes behave, and what prerequisites apply. The first sentence is long and syntactically dense, which slightly reduces readability, but overall the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return content, and it does: the contract's fields, their API paths, and their ONNX export columns. It also covers availability and authorization prerequisites. For a zero-parameter read tool, this is complete 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the schema carries no parameter semantics burden. Per the scoring baseline for zero-parameter tools, the description is adequate and does not need to compensate for undocumented inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource ('Read your workspace's feature contract') and explains the contract's contents in detail: pricing-request fields, nested metadata, API paths, and ONNX export columns. The read-only purpose clearly distinguishes it from siblings like set_feature_contract, delete_feature_contract, and infer_feature_contract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives prerequisites ('Not available until feature contracts are switched on' and 'Needs a Last Price credential with routing read scope') but does not explicitly state when to use this read tool versus alternatives such as set_feature_contract or infer_feature_contract. Usage is implied by 'Read', but there are no explicit exclusions or alternative-routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_feature_launch_planA
Read-onlyIdempotent
Inspect

Read one launch kit's plan, for Last Price staff only: its checks, its steps in the order the launch runs them (marking the ones that send something outside Last Price), its go code, and the exact words the owner says to launch it ("go CODE", "go CODE at ", or "go CODE without announcements"). Read only: it never switches, schedules or sends anything; launching needs the owner's go code through the launch command. Needs an API key holding the launches:read scope by name, made by someone who is still Last Price staff, sent as x-api-key or as Authorization: Bearer lp_...; any other credential gets 404. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
flagYesThe release flag the kit launches, such as capability-servers: flag on a list_feature_launches result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations: names the required launches:read scope, the staff-only and claimed-workspace preconditions, the 404 returned for any other credential, and the 403 for sandbox keys from self-registration. It also discloses the three accepted launch-phrase formats and the x-api-key / Bearer transport options.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what is returned before the auth and error preconditions, and every clause carries information. The opening sentence is long and heavily parenthetical, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the returned contents (checks, ordered steps, go code, launch words). Combined with the auth/permission failure modes, an agent has everything needed to call it and interpret failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the flag parameter is fully described in the schema as 'the release flag the kit launches'. The description adds only the notion that the flag identifies one kit's plan, with no extra syntax or format detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one launch kit's plan') and enumerates exactly what the plan contains: checks, ordered steps, outbound-action markers, go code, and the launch phrase. It is clearly distinguishable from list_feature_launches, which returns multiple launches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says it is read-only and that it 'never switches, schedules or sends anything', routing actual launching to the launch command and the owner's go code. There is no explicit 'when not to use / use X instead' for the sibling list tool inside the description itself, which only appears in the flag's schema text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forge_statusA
Read-onlyIdempotent
Inspect

Read Forge for your workspace: the pricing models the nightly job trained on your own reported quotes (for the workspace and its busiest products, the model and data window it chose and how often the market drifted), each with the rung it reached on the promotion ladder (bench, then replay on your logged quotes) and every gate's evidence; the recent runs; and the pricing experts the self-recoding coder wrote and tested on the test bench, without their source. Nothing here changes a price. Not available until Forge is switched on for your workspace. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
loopNoOnly candidates from this loop.
limitNoMost candidates to return. Defaults to 50.
stageNoOnly candidates at this rung, e.g. replay.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the description's added value is real: it discloses that experts are returned 'without their source', that a Last Price credential with routing read scope is required, that Forge must be switched on, and that an unclaimed workspace gets a 403. Those auth and failure-mode details go meaningfully beyond the annotation block.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core content is front-loaded, but the payload is delivered as one sprawling run-on sentence with deeply nested parentheticals, followed by four clipped fragments. Every clause carries information, yet the density and lack of paragraphing make it harder to parse than it needs to be for a read-only status call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of enumerating what comes back (models, data windows, drift frequency, ladder rungs, gate evidence, runs, experts minus source), and it covers the activation and credential preconditions. Only the relationship between returned collections and the loop/stage/limit filters is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both enums are already documented, so baseline 3 applies. The description does add conceptual framing that helps interpret the enums ('the rung it reached on the promotion ladder', 'self-recoding coder' vs the nightly training job), but it never mentions the `limit` parameter or how the filters compose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Read Forge for your workspace') and enumerates the concrete payload: trained pricing models, promotion-ladder rungs with gate evidence, recent runs, and auto-written pricing experts. That is far more specific than the tool name alone and distinguishes it from mutation siblings like reject_forge_candidate and from get_learned_pricing, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than routed: 'Nothing here changes a price' and 'Not available until Forge is switched on' tell the agent this is a read-only status check gated on Forge being enabled, but no alternative tool is named for adjacent needs (e.g. rejecting a candidate, reading learned pricing). The prerequisites are clear; the when-vs-what-else guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_frontier_modelA
Read-onlyIdempotent
Inspect

Read the frontier price model: one network trained on millions of simulated markets across every vertical, pricing topology, unit, buyer and channel, run inside Last Price on every request with no GPU. Shows which version runs (a stored one, or the seed that ships with Last Price), how much profit it gives up on the eval's one-look markets (lower is better) and the stored versions. Answers released: false while it is not switched on for your workspace. Read only. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the description only needs to add. It does: no GPU, executed inline on every request, credential scope required, and the notable caveat that 'answers released: false while it is not switched on for your workspace.' That caveat is genuinely useful context an agent wouldn't get from annotations, though rollback/persistence behavior of stored versions is left vague.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the middle is a breathless run-on stacking jargon ('across every vertical, pricing topology, unit, buyer and channel') and the fragment 'Answers released: false while it is not switched on for your workspace' reads awkwardly. Tightening into two clean sentences would preserve all meaning at half the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and it does: version identifier, profit given up on one-look eval markets (with direction stated, 'lower is better'), stored versions, and the released flag. Auth requirements are also covered. Only the shape of 'stored versions' and how eval profit is measured remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description adds no parameter meaning because none is needed, and the empty schema with additionalProperties=false is fully self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Read the frontier price model') and immediately characterizes what that model is (a network trained on simulated markets, run on every request with no GPU). It is clearly distinct from siblings like get_learned_pricing or suggest_frontier_price. The dense run-on phrasing ('every vertical, pricing topology, unit, buyer and channel') adds noise but doesn't obscure the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: you read this to see which version runs, what profit it gives up, and whether it's released for your workspace. There is no explicit when-to-use/when-not guidance and no mention of alternatives such as suggest_frontier_price or get_learned_pricing, so an agent must infer the choice. The prerequisite (Last Price credential with routing read scope) is stated but that is a gate, not a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_functionA
Read-onlyIdempotent
Inspect

Read one pricing function your workspace can use: its name, description, status, tags, cost per unit, cost multiplier, and input and output schemas. Its owner also sees whether a credential is saved for it. Needs a Last Price credential with function read scope.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-destructive operation. The description adds useful behavioral context beyond the annotations: the required Last Price credential scope and the owner-specific visibility of whether a credential is saved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences, front-loads the read operation, then lists the returned fields and prerequisite auth scope. Every sentence adds relevant information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-ID tool with a fully described single parameter and no output schema, the description is complete enough: it names the returned fields, the credential scope, and the owner-specific visibility nuance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter is documented as a UUID that is the id from a list_functions result. The description does not add meaning beyond that schema text, so the baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read one pricing function.' It also scopes the tool to a single workspace-usable function and enumerates the fields returned, distinguishing it from list_functions and mutation siblings like create_function or update_function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context by identifying the resource as one function and stating the required credential and scope. It does not explicitly name alternatives such as list_functions for discovery, but the context is sufficient for an agent to know this is a detail lookup by ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_function_healthA
Read-onlyIdempotent
Inspect

Read the endpoint health of one of your external functions: the most recent probes, newest first, each with when it ran, whether it passed, its latency and any error, and whether the hourly probe covers the function. Pass function_id. Only the owner can read it. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the readOnly/idempotent annotations: what the payload contains (recent probes, newest first, timestamp, pass/fail, latency, error, hourly-probe coverage flag), the authorization model, and the specific 403 failure mode for unclaimed workspaces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then return shape, then prerequisites — a sensible order with no filler. The first sentence is a long comma-chained list that could be split, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description's enumeration of returned probe fields is exactly the compensation needed. Auth, failure mode, and result ordering are all covered; nothing an agent needs to call and interpret this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents format (uuid) and provenance ('id on a list_functions result'). The description's 'Pass function_id' adds no meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb + resource and scope: 'Read the endpoint health of one of your external functions' — clearly a diagnostic read on a single function, distinguishable from get_function (config) and run_function_health_probe (which triggers a probe rather than reading results).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for use: owner-only, Last Price credential required, and a claimed workspace (sandbox key refused with 403). It stops short of naming alternatives (e.g., 'use run_function_health_probe to generate a new probe' or 'use list_functions for the id'), 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.

get_function_reviewA
Read-onlyIdempotent
Inspect

Read the latest marketplace review of one of your functions, from its listing: the report, whether the listing is public and the listing id. The review is null when the function has no listing or was never reviewed. Pass function_id. Only the owner can read it. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral facts: the review is null when there is no listing or no review, access is owner-restricted, a specific credential type is required, and unclaimed workspaces are refused with 403. These are auth and empty-result semantics the structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Return content is front-loaded, followed by the null case, the parameter, then access prerequisites — a sensible order. Slightly telegraphic fragments ('Needs a Last Price credential. Needs a claimed workspace:...') and the redundant 'Pass function_id' keep it just short of ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so, plus auth and failure modes for a simple one-parameter read. The remaining gap is the lack of any statement about how this relates to run_function_review, which matters in a catalog this large.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents itself as 'The pricing function UUID: id on a list_functions result.' The description's 'Pass function_id' merely restates the requirement without adding format, sourcing, or edge-case guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the latest marketplace review of one of your functions') and enumerates the return payload: the report, listing visibility, and listing id. It is unambiguous what the tool fetches, but it never names its closest sibling run_function_review, so an agent must infer that this reads an existing review while the other presumably triggers one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: 'Only the owner can read it', 'Needs a Last Price credential', and 'Needs a claimed workspace' with the specific 403 failure mode for sandbox keys. What is missing is a when-to-use statement relative to run_function_review or list_marketplace_listings, so alternative selection is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_github_app_connectionA
Read-onlyIdempotent
Inspect

Whether the workspace can open its billing code as a pull request: if that is switched on, whether the Last Price GitHub App is set up on this deployment, and which GitHub account the workspace installed it on. A person installs the App from the Monetization page, Automated tab. Early access. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavior: a required 'Last Price credential with billing read scope', an early-access caveat, and a concrete failure mode (403 for sandbox keys from self-registration until the workspace is claimed). It also discloses that installation is a human action performed from the Monetization page, Automated tab — telling the agent it cannot do setup itself. It stops short of describing the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core content is front-loaded, but the opening sentence is a long nested 'Whether X, if so whether Y, and which Z' construction that is hard to parse on first read. The setup sentence about the Monetization page and Automated tab is useful context but sits awkwardly between the purpose and the credential/workspace requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with full annotations and no output schema, the description covers purpose, authorization, prerequisites, and the main failure case, which is enough to call it correctly. The one remaining gap is that the return value is never described (presumably a set of booleans plus an account identifier), and no output schema exists to cover that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly implies the workspace/deployment context is derived from the credential rather than passed in.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (the Last Price GitHub App connection for this workspace/deployment) and enumerates the three facts it reports: whether PR-based billing is enabled, whether the App is installed, and which GitHub account it is on. It is distinguishable from siblings like get_stripe_connection or list_connected_apps, though it never uses an explicit verb form ('returns'/'checks') and reads as a noun clause rather than a statement of action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: by describing a PR-enablement preflight, the description hints you'd call this before open_monetization_pull_request, but it never states that or names any alternative. The prerequisites (billing read scope credential, claimed workspace) are stated clearly, which is the strongest usage signal present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hosted_modelA
Read-onlyIdempotent
Inspect

Read one hosted pricing model and its versions, newest first: each version's number, source (trained or uploaded), status (candidate, active or retired), size, input spec, training metrics and ONNX operators. The ONNX file itself is downloaded from GET /api/hosted-models/{model_id}/versions/{version}, not through this tool. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
model_idYesThe hosted model's id: id on a list_hosted_models result.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, discloses the exact contents of each version, the newest-first ordering, a separate ONNX download endpoint, the 404 not_released state, read-scope credential requirement, and the claimed-workspace 403 behavior. This is unusually rich behavioral context for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and then packs return details, endpoint exclusion, error state, and auth prerequisites into a short paragraph with no obvious filler. Despite the density, every sentence carries operational value for a tool with no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry the return shape, and it does by naming the version fields. Combined with annotations covering read-only safety and the description covering auth and error states, nothing material is missing for a one-parameter getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single model_id parameter is fully documented there as the id from list_hosted_models. The description adds no syntax or selection guidance beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (one hosted pricing model plus its versions), and enumerates the version-level fields returned. The phrase 'one' versus the sibling list_hosted_models makes the single-record scope clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides required credential scope, claimed-workspace prerequisite, and the 404 not_released condition, so an agent knows when it can call and what failure to expect. It does not explicitly name list_hosted_models as the alternative for enumerating models, so the alternative routing is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_invoiceA
Read-onlyIdempotent
Inspect

Read one invoice: its customer, number, status, amount, currency and due date. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
invoice_idYesThe invoice UUID: id on a list_invoices result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, closed-world and non-destructive, so the bar is lower. The description still adds material context the annotations cannot: the required credential scope and the 403 refusal for self-registered sandbox keys, which is exactly the kind of precondition 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is read and what comes back, followed by the two access prerequisites. Nothing is redundant with the annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description covers the operation, the returned fields, the credential scope, and the workspace-claim precondition. An agent has everything needed to call it and to interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself explains that invoice_id is the UUID from a list_invoices result. The description mentions only that one invoice is read and adds nothing about the identifier's format or source, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read one invoice") and enumerates the fields returned (customer, number, status, amount, currency, due date), which implicitly separates it from list_invoices and update_invoice. It never names a sibling explicitly, so an agent must infer the single-vs-list distinction from the word "one".

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: a Last Price credential with billing read scope and a claimed workspace, with the specific failure mode (403) when unclaimed. It stops short of stating when to prefer this over list_invoices or how to obtain the invoice_id beyond the schema note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_jale_token_balanceA
Read-onlyIdempotent
Inspect

Read your balance of data-exchange tokens: what you hold, what you have earned by contributing price data and what you have spent reading the shared pool. Pass history true to also get the latest token movements, with limit to say how many (up to 100). Free to call. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many movements to return with history. Defaults to 20.
historyNoAlso return the latest token movements.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real value: it is free, and it will be refused with a 403 for self-registered sandbox keys until the workspace is claimed by a person. That auth/eligibility constraint is a meaningful behavioral trait not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the balance semantics and following with history/limit then eligibility. No filler, though the sentences are long and could be split for easier scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only two-parameter tool with no output schema and full annotation coverage, the description covers what the balance represents, what the history option returns, and eligibility constraints. What is missing is the concrete response shape (fields, ordering of movements), but it is otherwise sufficient to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters document their behavior including the max of 100 and default of 20, so the schema does the heavy lifting. The description restates the history/limit interplay and the 'up to 100' cap, adding little beyond what the schema already says; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Read your balance of data-exchange tokens') and decomposes the balance into held/earned/spent components, which makes the tool's purpose concrete. However, it never names or distinguishes itself from close siblings such as get_wallet_balance or get_credit_balance, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational context ('Free to call') and a hard prerequisite (a claimed workspace; sandbox keys get 403), which is useful when deciding whether to call. But it offers no guidance on when to use this versus siblings like query_jale_pool or list_jale_contributions, and no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_learned_elasticity_curveA
Read-onlyIdempotent
Inspect

See how buyers react to price, the data behind the chart on the learned pricing page: quotes with a reported outcome grouped into bins of quoted over current price (counts only), the fitted acceptance line with its 95% band, what a 10% raise does to sales by that line, and how the estimate moved over time. Covers the pooled workspace estimate, or one product with product_id. Owners and admins only. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
product_idNoOne product. Omit for the pooled workspace estimate.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: an authorization requirement (owners and admins only) and a credential/scope prerequisite (Last Price credential with routing read scope), plus the note that bin data is 'counts only'. That prerequisite disclosure is exactly the kind of behavioral detail annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and returned components are front-loaded in the long first sentence, with scope, permissions, and credentials trailing as short sentences. It is dense but every clause carries information; the enumeration of four outputs is long but justifies itself for a tool with no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it does: it names the four components the caller will receive. Combined with the stated auth and credential requirements, an agent can decide and call correctly. It stops short of describing format or shape of the response, which leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter's schema already says 'Omit for the pooled workspace estimate', which the description then repeats almost verbatim. The description adds no syntax, constraints, or lookup guidance beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete resource (the learned elasticity curve) and enumerates what it contains: quoted-vs-current price bins, the fitted acceptance line with 95% band, the effect of a 10% raise, and the estimate's history over time. That is more than a restatement of the name. It does not, however, explicitly distinguish itself from the many related pricing read tools (get_learned_pricing, get_pricing_analysis, get_price_exploration) by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional scope: 'the pooled workspace estimate, or one product with product_id', which tells the agent how to choose between the two modes of this tool. It also notes 'Owners and admins only', a gating condition. But there is no when-to-use/when-not guidance relative to the sibling pricing tools, so the agent must still infer whether to call this or get_pricing_analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_learned_pricingA
Read-onlyIdempotent
Inspect

Read learned pricing for your workspace: whether the default optimizer prices from the elasticity learned from your own quotes and their outcomes, how new estimates are applied (auto or approve, null until chosen), the mode it runs in now (off, preview, auto or approve), whether owners and admins are emailed, every estimate per product and pooled over the workspace with an example price it gives against the assumed default (also while learning is off, as a preview), progress toward what an estimate needs, and the recent changes. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds valuable behavioral context: it lists the exact information returned (mode, approval state, per-product estimates, pooled example price, progress, recent changes) and states the credential requirement 'Last Price credential with routing read scope'. It does not mention rate limits or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but the bulk is a single run-on sentence that lists many return fields in a dense, comma-separated clause. It is not repetitive, but the structure would be clearer as separate sentences or a bulleted list. The length is justified by the number of return aspects covered, but readability suffers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of explaining what the tool returns. It does so thoroughly, covering settings, estimates, progress, and recent changes. The credential requirement is also stated. The only minor gap is the lack of explicit error conditions or pagination behavior, but these are not central for a zero-parameter read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. There are no parameter semantics to clarify, and the description correctly does not waste words on inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read learned pricing for your workspace'. It then enumerates the exact information returned, making the tool's purpose unmistakable. However, it does not explicitly differentiate itself from close siblings like get_learned_elasticity_curve or list_learned_price_changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it state any exclusions or prerequisites beyond a credential requirement. The only contextual note is that estimates are included 'also while learning is off, as a preview', which describes behavior rather than usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_learned_routingA
Read-onlyIdempotent
Inspect

Read what learned routing has learned for one of your routing policies: for each function the policy can choose, the calls seen, the success rate, the latency and rate the reward used, the expected reward with an interval, and the share of calls it would route there now. learning says whether it decides the policy's traffic; reason says why not: it is not released for your workspace, the policy has not turned it on, the policy's strategy is not one it can stand in for, or it is still collecting data, and meanwhile the policy's own strategy decides. Read only. Leave policy_id out for your default policy. Pass strategy instead to read what it learned for compute_price calls that name that strategy and turn learned routing on (no policy). Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
strategyNoInstead of a policy: the strategy that compute_price calls named while turning learned routing on.
policy_idNoThe routing policy UUID. Leave it out to read your workspace's default policy.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/idempotent/destructive annotations it adds real operational context: the required Last Price credential with routing read scope, the fallback semantics when learning is not active, and the meaning of the 'learning' and 'reason' fields (not released, not turned on, strategy unsupported, still collecting data). It does not mention failure modes or timing of data refresh, which keeps it below 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded correctly, but the core is one sprawling sentence where the four-way 'reason' enumeration and return-field list are chained with commas, making it hard to scan. The content largely earns its place, but the structure does not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining return semantics and does so: it lists every reported field and explains the two status fields and their fallback behavior. Authentication scope and both parameter modes are also covered, leaving nothing essential for correct invocation unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding the mutual-exclusivity framing the schema omits ('Instead of a policy... pass strategy') and by clarifying that strategy refers specifically to compute_price calls that enabled learned routing — meaning that is not derivable from the field alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Read what learned routing has learned for one of your routing policies') and then enumerates the exact contents returned per function: calls seen, success rate, latency, reward rate, expected reward with interval, and current routing share. That enumeration distinguishes it clearly from neighbors like get_routing_policy (configuration) and get_learned_pricing (pricing), so an agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete selection rules for both calling modes: omit policy_id to read the default policy, or pass strategy to read what was learned for compute_price calls that named that strategy with learned routing on. What it lacks is an explicit contrast against siblings such as get_routing_policy, so the agent must infer that this tool reports learned behavior rather than configuration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_llm_usageA
Read-onlyIdempotent
Inspect

See what model calls cost your workspace over a period (this month so far by default): totals, how much ran on your own provider key and how much on the platform's, and a daily series. Pass start_date and end_date to choose the period. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
end_dateNoThe end of the period, as an ISO 8601 date and time.
start_dateNoThe start of the period, as an ISO 8601 date and time.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint/idempotent/destructive false), the description discloses a Last Price credential requirement, a claim-workspace precondition with the exact failure mode (sandbox self-registered keys get 403 until claimed), and the default time window. That is meaningful operational context; only rate limits/pagination-ish concerns for the daily series are unmentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight paragraph: purpose and return shape first, then period control, then safety, then prerequisites, ordered by what an agent needs before calling. No filler sentences and nothing repeated from the annotations beyond a single confirming 'Read-only'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, it covers what comes back at a summary level, the default window, auth and workspace prerequisites, and the 403 failure path. Remaining gaps (timezone semantics, response shape details) are minor but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description adds value by stating that both parameters are optional and that omitting them yields month-to-date, which the schema does not say. It still does not clarify timezone or inclusive/exclusive boundary handling for the date-time range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (model call costs for the workspace) and names the breakdown dimensions (totals, own provider key vs platform key, daily series). It is clear on its own, but never distinguishes itself from near-identical siblings such as get_usage, get_usage_breakdown, get_cost_analytics, or list_llm_usage_events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one concrete usage cue (default is the current month so far; pass start_date/end_date to change the period) and implicitly frames the tool as an aggregate cost view. However, it never says when to prefer it over get_usage_breakdown or list_llm_usage_events for event-level detail, so the agent must guess among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_marketplace_earningsA
Read-onlyIdempotent
Inspect

Read the payout ledger for the functions you own on the marketplace: what each call earned, its commission and its payout status. Filter by payout_status and page with limit and offset. Read-only. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 50.
offsetNoHow many to skip, for the next page.
payout_statusNoOnly entries with this payout status.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent, but the description adds genuinely non-derivable behavior: it requires a Last Price credential with billing read scope, requires a claimed workspace, and warns that sandbox keys from self-registration get a 403 until claimed. That pre-empts a real failure mode an agent would otherwise hit blindly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with what the tool returns, then controls, then prerequisites. Every sentence carries distinct information; nothing is repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, and it covers auth, error behavior and filtering. It is slightly thin on pagination semantics (whether a total/has-more indicator is returned) and on payout_status value vocabulary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents limit, offset and payout_status. The description only restates their roles ('filter by payout_status and page with limit and offset') and adds no format detail — notably no guidance on valid payout_status values, since the parameter is a free-form string with no enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the payout ledger') and narrows the scope to 'the functions you own on the marketplace', which separates it from operator-side siblings like get_payout_run or list_payout_runs. It also enumerates the ledger fields, so an agent knows what data comes back without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context: seller-side earnings, filterable by payout_status, pageable with limit/offset. It does not name an explicit alternative or a when-not condition, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_negotiationA
Read-onlyIdempotent
Inspect

Read your own negotiation with a seller: its status, the rounds used and left, the standing counter, the agreed price and the history. Needs the negotiation id and the buyer token the negotiation opened with, not an account. A wrong token and a missing negotiation answer the same not found. Public: needs no credential.

NameRequiredDescriptionDefault
handleYesThe seller's public handle, from the terms they publish.
buyer_tokenYesThe buyer token the first answer gave you, once. Keep it: it is the only way back into the negotiation.
negotiation_idYesThe negotiation id from the first answer.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond the annotations: the auth model is a buyer token rather than an account credential, and a wrong token returns the same 'not found' as a missing negotiation — a security detail that stops an agent from fruitlessly retrying with different tokens. It also clarifies that no credential is needed at the platform level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then the return contents, then the auth requirement. Dense and mostly waste-free, though the required-id/token sentence partly restates what the schema already marks as required.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by listing the returned fields. Auth requirements and the not-found ambiguity are covered, so an agent has everything needed to call this correctly and interpret a failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters (including the seller handle, which the description never mentions) are already fully documented in the schema. The description adds only the nuance that buyer_token is the token the negotiation opened with rather than an account token, which is useful but marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read your own negotiation with a seller') and enumerates exactly what is returned: status, rounds used and left, standing counter, agreed price, history. It is clearly the single-record read versus the sibling list_negotiations, though it never names that alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear prerequisites: you need the negotiation id and the buyer token the negotiation opened with, explicitly 'not an account'. It stops short of routing the agent to list_negotiations when it has no id, so the alternative path is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_offer_settingsA
Read-onlyIdempotent
Inspect

Read how your workspace takes offers and counter-offers from buyers: whether offers are on, your public handle, the rounds, concession and expiry limits, the products open to offers with their list and floor prices, the last 30 days' negotiations, and the public URLs a buyer's agent uses. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still earns credit by disclosing the auth scope required, the concrete 403 failure mode for unclaimed sandbox workspaces, and the 30-day window on negotiations data. These are failure and scope facts an agent cannot get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and purpose before the contents list and the two prerequisites. The middle enumeration is long but each item is a distinct data class an agent may be looking for; only slight tightening would be possible without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe the return contents, which it does item by item. Combined with stated auth scope and failure behavior, an agent has everything needed to decide whether to call it and to interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing for the description to disambiguate – baseline 4. No parameter claims are made that could mislead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and a precise resource (how your workspace takes offers and counter-offers), then enumerates the concrete contents: on/off flag, public handle, rounds, concession and expiry limits, products with list and floor prices, 30-day negotiations, and public URLs. The read-only framing makes it distinguishable from the sibling set_offer_settings, and the enumeration prevents confusion with get_offer_terms or discover_offers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Preconditions are explicit: a Last Price credential with routing read scope, and a claimed workspace (self-registration sandbox key is refused with 403). What's missing is explicit routing to alternatives – it never says to use set_offer_settings to change these values or get_offer_terms for a single offer. Strong context, but no named when-not/alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_offer_termsA
Read-onlyIdempotent
Inspect

Read a seller's negotiable terms by their public handle: which products are open to offers, at what list price and currency, how many offers a negotiation allows and how long a counter stands. Never the floor price. Pass product_id to narrow it to one product. Public: needs no credential. An unknown handle, a seller with offers off and a product that is off all answer not found.

NameRequiredDescriptionDefault
handleYesThe seller's public handle, from the terms they publish.
product_idNoThe seller's id for the product.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the description's added value is the credential requirement (public, no auth) and the disclosure that the floor price is never returned — a meaningful data-boundary fact an agent cannot infer from the schema. It omits anything about response shape or rate limiting, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and handle requirement before the enumeration and the product_id filter. Four sentences, all carrying information; the enumeration is dense but each clause maps to real returned data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so by listing the specific terms exposed, plus not-found behavior. It doesn't say whether the response is a single object or per-product array, which is the one remaining ambiguity for a caller.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented as the seller's public handle and the seller's product id. The description only adds the intent hint that product_id narrows the result to one product, which is marginal beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — "Read a seller's negotiable terms by their public handle" — and enumerates exactly what is returned (open products, list price/currency, offer count, counter duration). The "Public: needs no credential" framing implicitly separates it from the authenticated get_offer_settings sibling, but that sibling is never named, so differentiation stops just short of explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational context: pass product_id to narrow to one product, and states the three not-found conditions (unknown handle, offers off, product off). It never names an alternative tool or says when to prefer get_offer_settings versus this one, so the routing guidance is implicit 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_orderA
Read-onlyIdempotent
Inspect

Read one order: its customer, status, total, currency and metadata. Pass order_id. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
order_idYesThe order: its id, as list_orders shows it.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds meaningful auth context: it needs a Last Price credential and a claimed workspace, and sandbox keys are refused with 403 until the workspace is claimed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose, then the required parameter, then credential and workspace prerequisites. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full schema coverage and annotations, the description is complete: it covers the resource, the fields returned, the required id, and the credential/workspace conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already explains order_id as a UUID shown by list_orders. The description's 'Pass order_id' adds no syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: read one order. The phrase 'one order' distinguishes it from list_orders and other order siblings, and it names the fields the read exposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent to pass order_id, which implies usage when a single order id is known. However, it does not explicitly compare this with list_orders or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_paymentA
Read-onlyIdempotent
Inspect

Read one payment: its invoice, customer, amount, currency, status and method. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
payment_idYesThe payment UUID: id on a list_payments result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false. The description adds important behavioral context beyond annotations: it requires a Last Price credential with billing read scope and a claimed workspace, and it warns that self-registration sandbox keys get 403 until the workspace is claimed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the purpose and fields before the credential and workspace requirements. Every sentence carries useful information, with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately names the main fields returned. It also includes the authorization scope and workspace-claim caveat that an agent needs before calling this read-only single-payment tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for the single payment_id parameter, including that it is the id from a list_payments result. The description does not add further parameter syntax or meaning beyond what the schema already provides, so this is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Read one payment', and enumerates the fields returned (invoice, customer, amount, currency, status and method). The singular 'one payment' distinguishes it from list_payments and the read framing distinguishes it from create_payment and refund_payment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying it reads one payment, which fits fetching a single known payment. However, it does not explicitly name alternatives such as list_payments for browsing or state when not to use this tool. The credential and workspace notes are prerequisites rather than alternative-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_payout_runA
Read-onlyIdempotent
Inspect

Read one payout run with its Stripe transfers: each transfer's status (pending, processing, paid, waiting for a retry, or failed), attempts, last error, next retry time, Stripe transfer id and idempotency key. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
run_idYesThe payout run: id on a list_payout_runs or request_payout_run result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, and the description adds context those annotations cannot carry: the 404-when-disabled behavior, the billing read scope requirement, and the 403 claim gate. This is exactly the kind of auth and failure-mode disclosure that earns credit beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the return shape and then the operational constraints. The enumeration of transfer statuses is slightly long, but it substitutes for a missing output schema, so the length mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of describing return values and does so thoroughly (status values, attempts, last error, next retry, Stripe id, idempotency key). Combined with the auth and availability notes, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single run_id parameter is already documented as a UUID from a list_payout_runs or request_payout_run result. The prose adds no syntax or format detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Read one payout run with its Stripe transfers') and enumerates the fields returned, so an agent can tell it apart from list_payout_runs without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when the tool is unavailable (404 while payout runs are off, 403 with an unclaimed sandbox key), how to check availability via list_payout_runs' execution.enabled, and the required scope. That is the full when/when-not/alternative picture.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_payout_scheduleA
Read-onlyIdempotent
Inspect

Read your workspace's payout schedule: whether it is on, weekly or monthly, its run day, whether it retries transfers on its own, the next run day, the period that day will request and what the last run day did. schedule is null when none is saved. Payout schedules are part of payout runs: while those are not switched on for your workspace, execution.enabled is false and schedule is null. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: null semantics, the coupling to payout-run enablement, a required billing-read credential scope, and a concrete failure mode (403 for unclaimed sandbox keys). This is the kind of prerequisite and failure information an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then the field list, then the null/prerequisite caveats — a sensible ordering with no filler. The middle sentence about payout runs is slightly tangled ('while those are not switched on...'), costing a bit of readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return values and does so field by field, including the null case. Combined with the credential-scope and claimed-workspace prerequisites, an agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly spends no words on parameter semantics and instead documents the response shape, which is the only relevant surface here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb ('Read') on a specific resource ('your workspace's payout schedule'), followed by an enumeration of exactly which fields come back (on/off, weekly vs monthly, run day, auto-retry, next run day, requested period, last run result). It also positions the resource relative to payout runs, so an agent can separate it from get_payout_run/list_payout_runs without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context on when the tool is applicable and when it will return nothing: schedule is null when none is saved, and execution.enabled is false while payout runs are not switched on. It never explicitly routes to the alternative (set_payout_schedule to change it, list_payout_runs for history), so it stops short of naming alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_checkA
Read-onlyIdempotent
Inspect

One check from the workspace's price history with its whole answer, as price_from_capture first gave it: the item and its condition, the price, range and confidence, the reason, prices read off tags or listings, what would make it sharper, and the listing (selling) or message to the seller (buying). check_id is the id from list_price_checks, or the check_id price_from_capture returned. The photos, files, links and text sent are never kept, only the answer. Another workspace's id, or an unknown one, is a 404. Changes nothing. Until price history is switched on for your workspace it answers 404 not_released. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
check_idYesThe check's id, from list_price_checks or the check_id price_from_capture returned.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: source photos/files/links/text are never retained, cross-workspace or unknown ids yield 404, a not_released 404 until price history is enabled, 403 for unclaimed sandbox workspaces, and the required credential scope. These are exactly the failure modes an agent needs before calling, and they do not merely restate readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return contents are front-loaded, and most sentences carry unique information (preconditions, 404 cases, credential scope). Minor deductions for a long comma-chained first sentence and for 'Changes nothing', which duplicates the readOnlyHint annotation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so by enumerating the answer fields, and it covers the id source, error cases, and auth/workspace prerequisites. An agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's schema description already says 'from list_price_checks or the check_id price_from_capture returned', which the prose essentially repeats. No additional syntax, format, or validation meaning is contributed, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource precisely — 'One check from the workspace's price history with its whole answer' — and enumerates the returned contents (item/condition, price, range, confidence, reason, tag/listing prices, improvement hints, listing or seller message). It distinguishes itself from the sibling list_price_checks by naming it as the id source, so an agent can tell retrieval-by-id apart from enumeration without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: check_id comes from list_price_checks or from the check_id returned by price_from_capture, and states the preconditions (price history enabled, Last Price credential with price compute scope, claimed workspace). It stops short of an explicit 'use this instead of X when you already have an id' routing statement or a when-not clause, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_explorationA
Read-onlyIdempotent
Inspect

Read whether your workspace explores prices: learned and optimizer prices for the same product then vary slightly from call to call, by up to the rate either way (steered toward the best price, at most 10%, once enough is learned), so Last Price can learn what buyers will pay. Never below cost and always inside your price guardrails. Shows whether it is on and why, the rate, and the bounds. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the safety profile is handled. The description adds real value beyond that: it discloses the exploration cap (at most 10%, steered toward best price), the invariants (never below cost, always inside guardrails), and the required credential scope. It does not say what happens if exploration is off or how the 'why' is expressed, but the coverage is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead clause is well front-loaded, but the first sentence is a long run-on that spends most of its length explaining pricing dynamics ('vary slightly from call to call... so Last Price can learn what buyers will pay') rather than what the tool returns. That material would be better placed in set_price_exploration or a conceptual doc, so the definition is bulkier than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so explicitly: 'Shows whether it is on and why, the rate, and the bounds.' Combined with the auth prerequisite and the safety invariants, an agent has enough to call it correctly; only the semantics of the 'why' field remain vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The credential/scope note is a call-level prerequisite and is appropriately placed here rather than in a schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Read whether your workspace explores prices', which cleanly distinguishes this reader from the sibling set_price_exploration. The rest elaborates on pricing mechanics rather than sharpening the tool's scope, so it stops short of a fully differentiated 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Read' framing implies this is the inspection counterpart to set_price_exploration, but the description never names the setter or states when to call this versus get_learned_pricing, get_price_guardrails, or get_buyer_aware_pricing, all of which are adjacent siblings. It does give a prerequisite (Last Price credential with routing read scope), which is useful context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_guardrailsA
Read-onlyIdempotent
Inspect

Read the price guardrails saved for your workspace, and the defaults set_price_guardrails fills in for an omitted field. saved is false when none are saved, and then no workspace limit applies. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotations, the description discloses credential requirements, routing read scope, claimed-workspace prerequisites, and the specific 403 behavior for unclaimed sandbox keys. It also explains the saved=false state and that no workspace limit applies in that case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences, front-loading what is read and following with the saved=false semantics and access requirements. Every sentence contributes useful calling context without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the important context: it explains the saved/default distinction, the no-limit case, and the credential and workspace-claim prerequisites. An agent has enough information to call it and interpret the key response state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to clarify. The baseline score for a no-parameter tool is 4; the description does not need to add parameter guidance here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific read operation over a precise resource: price guardrails saved for the workspace. It also clarifies the relationship to set_price_guardrails by describing the defaults that tool fills in, which helps distinguish this read tool from its write sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context makes clear that this tool is used to read saved guardrails and workspace defaults, and it explains the meaning of saved=false. It does not explicitly name when to use it versus other pricing or policy read tools, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pricing_analysisA
Read-onlyIdempotent
Inspect

Read what your workspace's own records say about its pricing, as findings, most urgent first: learned estimates ready while learned pricing is off, estimates that cannot be used yet and exactly what each needs, whether enough quotes have a reported outcome, how often your guardrails held prices back, and approvals waiting or about to expire. Each finding states its numbers and names the call that would act on it; nothing is changed. Free, and computed without an AI model. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, and the description still adds substantial context beyond them: nothing is changed, computation is free and model-free, a Last Price credential with routing read scope is required, and a sandbox key from self-registration is refused with 403 until a person claims the workspace. The 403 precondition in particular is a failure mode the agent could not infer from any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payoff (what the findings say) and back-loaded with prerequisites; every clause carries information. The long semicolon-chained first sentence is dense and slightly run-on, costing a little readability, but no sentence is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the finding categories, their ordering, and the fact that each finding carries its numbers plus a suggested acting call. Auth, sandbox restriction, cost, and side-effect status are all covered, so an agent can decide, prepare, and interpret a call from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4 and there is no parameter semantics to add. The description correctly implies a no-argument call rather than leaving the agent hunting for optional filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (your workspace's own pricing records) and a specific output form (findings, most urgent first), then enumerates the finding types: learned estimates ready, unusable estimates with what each needs, quote-outcome coverage, guardrail holds, and expiring approvals. That enumeration distinguishes it clearly from point-read siblings like get_learned_pricing, get_price_guardrails, and list_approvals, which each return one slice of the same evidence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Sets clear context: this is a read-only aggregated review of what your records say, and each finding names the call that would act on it, which gives the agent an explicit handoff path to sibling mutation tools. It never states when NOT to use it (e.g., for a single estimate, use get_learned_pricing), so it falls short of the exclusion-plus-alternative bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prompt_class_benchmarksA
Read-onlyIdempotent
Inspect

Per-prompt-class quality benchmarks across pricing functions and providers: for each kind of request (no text, code, extraction or JSON, multilingual, long form, short factual, general), how good (quality), how fast (p50 and p95 latency) and how cheap (mean cost) each function or provider is. Every cell names its source (simulated bench, recorded bench, or your workspace's own routed calls), its quality metric and its sample size; sources are never mixed. Your workspace's cells appear once a cell has min_events routed calls. Only aggregates: no prompt text is stored. Use it to choose a routing preference or function per kind of request. Needs a Last Price credential with routing read scope; answers 404 until prompt-class benchmarks are on for your workspace. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
min_eventsNoFewest routed calls a cell of your own needs to be shown.
window_daysNoDays of your routed calls to aggregate.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the readOnly/idempotent annotations: it discloses that sources are never mixed, that workspace cells only appear past the min_events threshold, that only aggregates are stored (privacy-relevant), the required read scope, the 404-until-enabled behavior, and the 403 for unclaimed sandbox keys. That is exactly the operational context an agent needs to avoid misinterpreting empty responses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and its metrics; prerequisites and failure modes follow in a logical order. It is dense to the point of being a run-on (one sentence carries the request-kind enumeration, another the source rules), but nearly every clause carries operational information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still conveys return structure (every cell carries source, quality metric, sample size), the provenance model, and the auth/entitlement failure modes. An agent can predict what it will get and why it might get nothing, which is complete for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, setting the baseline at 3. The description ties min_events to the observable behavior (workspace cells appear once a cell hits that count), but window_days is not mentioned at all in the description, so no meaningful value is added over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (per-prompt-class quality benchmarks) plus the exact dimensions returned: quality, p50/p95 latency, mean cost, broken out across pricing functions and providers. The enumerated request kinds (code, extraction/JSON, multilingual, long form, short factual, general) make the output shape concrete enough that an agent can distinguish it from get_cost_analytics or get_learned_routing without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it to choose a routing preference or function per kind of request" gives a clear selection context, and the credential/workspace prerequisites read as gating conditions. It does not name competing siblings (e.g. get_cost_analytics, get_learned_routing) or say when this is the wrong choice, so it stops short of explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_public_leaderboardA
Read-onlyIdempotent
Inspect

Read the public pricing-function leaderboard: the functions the community uses most, ranked by distinct outside consumers, with their rating. Pass window as 7d, 30d, 90d or all (default all). Public: needs no credential, limited per address.

NameRequiredDescriptionDefault
windowNoHow far back to rank. Defaults to all.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral facts: no credential required and throttling per address. It stops short of saying what the rate limit actually is or how many entries are returned, but against an annotated safe-read tool this is solid added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the leaderboard is before the parameter and the access constraints. Every sentence carries distinct information (purpose, argument format, access rules).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of describing the return shape (ranked functions, distinct consumer counts, ratings), which is exactly what is needed. Only the truncation/pagination of results and the concrete rate limit are left unstated, a minor gap for a one-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum with default is already documented in the schema. The description restates the allowed values and the default, adding no syntax or interpretation beyond structured data, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('public pricing-function leaderboard') and goes further to define what is being ranked (functions used most, by distinct outside consumers) and what is attached (rating). There is no sibling leaderboard tool, so no differentiation is required, and the agent can tell exactly what this returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the when: public, unauthenticated, rate-limited reads of community usage data. It does not name an alternative (e.g. get_x402_price_index or browse_catalog for other catalogue views), so there is clear context but no explicit routing away from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_purchase_intentA
Read-onlyIdempotent
Inspect

Read one buyer intent across every check made under its intent_id: the intent as recorded (source, merchant, maximum, currency, expiry, the evidence hash, and verified, false until Last Price can check the evidence), how many checks were allowed, denied or asked about, and how much of the maximum is held, spent and left. Use it before the next purchase under the same intent. An agent key sees only its own checks. Only where the workspace has intents switched on (else an error with code not_released). Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
intent_idYesThe intent_id a check_purchase carried.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/idempotent annotations, the description discloses visibility scoping for agent keys, workspace feature gating with the not_released error, required credential scope, and the 403 behavior for unclaimed sandbox workspaces. It also describes what data is returned and the meaning of the verified flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core read operation and every sentence carries necessary operational detail. The first sentence is dense and long, but the information is relevant for a tool with no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return-value shape, including recorded intent fields, check counts, and held/spent/remaining amounts. It also covers the authorization, feature-flag, and workspace-claim prerequisites an agent needs to call it successfully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single intent_id parameter is already documented as the intent_id carried by a check_purchase. The description reinforces the intent_id context but does not add format or lookup semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: reading one buyer intent and all checks under its intent_id. It clearly distinguishes the read/status view from purchase-mutating siblings such as check_purchase, confirm_purchase, and settle_purchase by describing what it returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: 'Use it before the next purchase under the same intent.' It does not explicitly name the alternative tools or exclusion cases, but the timing guidance is strong and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_receiptA
Read-onlyIdempotent
Inspect

Get the receipt for one of your workspace's priced calls, by its usage event id (the id list_usage_events returns and report_outcome takes): what was priced, by which function and agent, when, the amount, how it was paid, and the outcome if one was reported. Receipts are made only when you ask, never sent for every call. For CSV or a printable page, call GET /api/receipts/{id} with format=csv or format=html. Needs a Last Price credential with price compute or billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
usage_event_idYesThe priced call's usage event id, as list_usage_events returns it.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description adds genuinely new behavior: receipts exist only when requested ('never sent for every call'), required credential scope (price compute or billing read), and a concrete 403 failure mode for unclaimed workspaces with unclaimed sandbox keys. That is exactly the kind of operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and key are front-loaded, then contents, then the format escape hatch, then auth requirements — a sensible ordering. It is slightly dense in long clauses but every sentence carries actionable information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields (what was priced, function and agent, timing, amount, payment method, outcome). Combined with the auth/403 notes and the CSV/HTML alternative, an agent has everything needed to call it correctly and interpret failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented, so the baseline would be 3. The description adds marginal provenance value by tying the value to two producers (list_usage_events returns it, report_outcome takes it), which helps the agent source a valid UUID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the receipt for one of your workspace's priced calls') and pins the retrieval key to its producer ('by its usage event id (the id list_usage_events returns ...)'), which distinguishes it from the plural list_receipts sibling. It goes on to enumerate the receipt's contents, so an agent knows exactly what it gets back.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete routing information: get the id from list_usage_events, and use the REST endpoint with format=csv or format=html when CSV or a printable page is needed. It does not explicitly contrast with list_receipts, but the single-receipt-vs-list distinction is implied by the framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reelAInspect

Run a reel live and read its transcript: each step's tool, arguments, status, time and answer, the outcome in one line, and an Ed25519 signature over the transcript checkable at /.well-known/quote-keys.json when signing is configured. Every read is a fresh run on the keyless demo, so it shows what the API answers now, not a recording. It spends your own demo allowance. Public: needs no credential. Until it is switched on it answers not released.

NameRequiredDescriptionDefault
reel_idYesWhich reel to run; list_reels lists them.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds substantial behavioral context: it runs live each time, spends the demo allowance, requires no credential, returns 'not released' until enabled, and includes an Ed25519 signature verifiable at a well-known URL. This covers cost, auth, side effects, output shape, and availability, which is far richer than the annotation hints alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary action and return content, followed by short sentences on freshness, cost, auth, and availability. The first sentence is long and uses a colon list, but every clause earns its place with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity, complete schema coverage, and presence of annotations, the description is largely complete: it explains the return format (without a separate output schema), the live-run nature, cost, and preconditions. It does not describe error handling for invalid reel IDs or the precise behavior when signing is not configured, but those gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single enum parameter is fully documented in the schema ('Which reel to run; list_reels lists them.'). The description adds no additional parameter meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Run a reel live and read its transcript', and then enumerates exactly what the transcript contains. It is clear what the tool does, but it never explicitly contrasts itself with siblings like list_reels, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides useful context for when to use the tool: 'Every read is a fresh run ... shows what the API answers now, not a recording.' It also warns about spending the demo allowance and states public/no-credential and availability constraints. However, it does not name alternatives or explicitly exclude use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rosetta_healthA
Read-onlyIdempotent
Inspect

Check that the Rosetta translator is up: its status, the canonical schemas it serves and the time on its clock. Public: needs no credential.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description's added value is the return content (status, canonical schemas, clock time) and the no-credential access note — meaningful context beyond the structured fields. It says nothing about failure modes or what an unhealthy response looks like, keeping it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence plus a short access qualifier, front-loading the purpose and return contents. Every clause adds information; nothing is redundant with the title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only health probe with no output schema, the description supplies everything an agent needs: what is checked, what comes back, and that no credential is required. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param schema applies. No parameter claims are made or needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check that the Rosetta translator is up') and enumerates exactly what the check returns: status, served canonical schemas, and server clock time. This scopes it clearly apart from siblings like translate_with_rosetta or list_canonical_schemas, which fetch data rather than report availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'is it up' framing makes the usage context clear: availability/diagnostic probing. It also states a prerequisite ('Public: needs no credential'), removing the auth question. It stops short of naming alternatives or stating when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_routing_policyA
Read-onlyIdempotent
Inspect

Read one routing policy: its name, strategy, config, fallback function and whether it is the default. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
policy_idYesThe routing policy UUID: id on a list_routing_policies result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the bar is low, and the description adds genuinely new context: the required credential type and 'routing read' scope. That auth prerequisite is exactly the kind of detail annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste: the operation and its return shape come first, the prerequisite second. Everything earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read with no output schema, the description covers return fields and the auth requirement, which is what an agent needs to attempt the call. Missing only failure behavior (e.g., not-found handling), a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself explains that policy_id is the UUID from a list_routing_policies result. The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read one routing policy') and enumerates the returned fields (name, strategy, config, fallback function, default flag), which clearly separates it from list_routing_policies. It does not name the sibling explicitly, but 'one' vs. listing is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'Read one' — the agent can infer this is the single-record lookup after list_routing_policies, but no alternative or condition is stated outright. Nothing tells the agent what to do if the policy doesn't exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spend_policyA
Read-onlyIdempotent
Inspect

Read the spend policies your workspace's buyer agents spend under (the most per purchase, a daily cap in UTC days, when a person approves first, which sellers and categories), the defaults a save fills in, and what today's reservations hold. An agent key sees its own policy and the workspace default. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idNoOptional: also say which policy governs this agent.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is given. The description still adds real value beyond them: the required credential scope, the 403 on unclaimed sandbox workspaces, and how an agent key narrows the visible set to its own policy plus the workspace default. It does not describe pagination or response shape, so it is solid but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct load-bearing information: what is returned, what credential scope is required, and which workspace state is a hard prerequisite. Purpose is front-loaded and the long parenthetical enumerates return fields rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description compensates by enumerating the returned policy facets, the defaults, and today's reservations. Combined with the credential and workspace-claim prerequisites, an agent has everything needed to predict success or failure before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is only one optional parameter, whose schema text already says it names the policy governing a given agent. The description's note that "an agent key sees its own policy and the workspace default" hints at scoping behavior but refers to the auth key rather than to agent_id, so it adds only marginal meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Read the spend policies") and enumerates the exact contents returned: per-purchase max, daily UTC cap, approval gating, seller/category scope, save-time defaults, and today's reservations. It is unmistakably a read of spend policy rather than the write-side set_spend_policy, but it never explicitly names a sibling (e.g. list_commerce_policies or get_commerce_policy) 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions for successful use: needs a Last Price credential with routing read scope and a claimed workspace; a self-registered sandbox key gets a 403. It also explains the agent-key viewing scope. It stops short of naming an alternative tool to call instead in any scenario, so it is context rather than explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spend_sessionA
Read-onlyIdempotent
Inspect

Read a session: whether it is open, expired or closed, its maximum, what it has drawn and what remains, and its draws, newest first, each drawn, unknown or returned. Use it to resume a run, or to find a draw to settle. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
session_idYesreservation.id from open_spend_session.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses critical operational constraints: a required Last Price credential with price compute scope, a claimed workspace requirement, and a specific 403 refusal for sandbox keys from self-registration. It also describes the returned draw ordering (newest first), which is behavior an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then usage, then prerequisites. The first sentence is dense with a long list of returned fields, and the phrase "each drawn, unknown or returned" is slightly cryptic, but overall there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, single-parameter tool with no output schema, the description is complete: it covers purpose, usage, authentication prerequisites, workspace claiming behavior, and the shape and ordering of returned data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains that session_id is the reservation.id from open_spend_session. The description adds no further parameter-level detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ("Read a session") and then enumerates exactly what is returned: status, maximum, drawn, remaining, and draw history. This clearly distinguishes it from siblings like open_spend_session, close_spend_session, draw_session_spend, and settle_session_draw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage contexts: "Use it to resume a run, or to find a draw to settle." This implicitly routes the agent toward settlement via settle_session_draw, but it does not explicitly name alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_storefrontA
Read-onlyIdempotent
Inspect

Read one storefront with its domains, addresses and the offers it lists right now. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, and the description adds substantial non-structured context: two distinct auth/entitlement gates, a named error code, and an HTTP status for the unclaimed-workspace case. It stops short of describing result shape or error payload beyond the one code, but for a read tool this is well above the bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, purpose first, all content relevant — nothing is filler. The prerequisite detail is packed into dense prose (parenthetical error codes, scope names) rather than broken out, which costs a little read speed but no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description covers what is returned, the entitlement prerequisite, the credential scope, and the specific refusal condition. An agent has everything needed to call it correctly and to interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents itself (uuid, sourced from list_storefronts). The description adds no further detail about the id's format or origin, so the baseline 3 for a fully-documented single parameter applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ("Read one storefront") and enumerates what comes back (domains, addresses, currently-listed offers), which cleanly separates it from the sibling list_storefronts. An agent can tell immediately whether this is the single-record fetch it wants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicit preconditions and the failure mode when they are not met: storefronts must be switched on for the workspace (else not_released), a Last Price credential with workspace-settings read scope is required, and an unclaimed sandbox workspace is refused with 403. That is unusually strong when/when-not guidance for an agent deciding whether to invoke the tool at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stripe_connectionA
Read-onlyIdempotent
Inspect

Read whether your workspace has a Stripe account connected for invoices (Connect with Stripe on the Monetization page), its account id and mode, and whether this deployment can connect one. Connecting needs a person in a browser. Early access. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations confirm it is read-only, the description adds crucial behavioral context like 'Early access', the specific credential requirement ('Last Price credential with billing read scope'), and the failure state regarding sandbox keys, which are behaviors not captured by simple hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is densely packed with highly specific information regarding prerequisites and behaviors. While it could benefit from bullet points for maximum readability, every sentence provides essential, non-redundant value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (requiring specific credentials, workspace claims, and being in an early access phase), the description is highly complete. It provides all the necessary environmental and functional context for an agent to invoke the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the tool has 0 parameters and 100% schema coverage, the description must carry all semantic weight. It successfully explains the scope of the read operation and the operational context surrounding the connection, providing significant informational value despite the lack of structured parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the resource and the action: it reads the current Stripe connection status, account ID, and mode. It is distinct from other payment or billing tools in the sibling list by its explicit focus on Stripe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The definition includes critical usage context, such as the requirement for 'a person in a browser' for connection, and explains the operational state necessary for the tool to work (e.g., workspace must be claimed, or a 403 error is expected).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ucp_checkoutA
Read-onlyIdempotent
Inspect

Read one UCP checkout session: pass checkout_id. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
checkout_idYesThe checkout session: its id, as create_ucp_checkout and list_ucp_checkouts show it.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds substance beyond them: required credential scope, the workspace-claim requirement, and the specific 403 refusal path for unclaimed sandbox keys. That is exactly the extra operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and parameter, then the two hard prerequisites. No filler and nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool, auth requirements and the workspace gate are fully spelled out, which is what an agent needs to avoid a 403. Absent an output schema, it could say slightly more about what a checkout session contains, but the intent is clear enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, already at 100% schema coverage with a description pointing at create_ucp_checkout and list_ucp_checkouts as the source of ids. The description's "pass checkout_id" adds nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read one UCP checkout session" names a specific verb (read) and resource, and "one" implicitly contrasts with list_ucp_checkouts. It does not explicitly name the sibling tools it supersedes or complements (list_ucp_checkouts, get_ucp_quote), 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for invocation — a Last Price credential with price compute scope and a claimed workspace — and states the failure mode (403) for sandbox keys from self-registration. It never says when to prefer this over get_ucp_quote or list_ucp_checkouts, but the prerequisites are unusually clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ucp_profileA
Read-onlyIdempotent
Inspect

Read Last Price's Universal Commerce Protocol business profile: the services, capabilities and payment handlers a UCP agent discovers before it shops here. Public: needs no credential.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds value beyond them with 'Public: needs no credential' — a concrete auth constraint an agent otherwise would have to discover by failing. No caching or rate-limit behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses, front-loaded with the verb and resource, then the discovery-timing rationale and the auth note. No filler and nothing an agent must read twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description partly discharges that burden by enumerating the returned contents (services, capabilities, payment handlers) and confirming no credential is needed. Minor gaps remain around exact shape/versioning of the returned document, but nothing that would cause a mis-call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies. There is nothing parameter-wise for the description to compensate for, and it correctly implies the call is unparameterized and scoped to the calling tenant's storefront.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Read ... UCP business profile', with the profile's contents (services, capabilities, payment handlers) spelled out so the agent knows exactly what comes back. It is clearly distinct from the many other UCP siblings (get_ucp_checkout, get_ucp_quote), though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'the ... profile ... a UCP agent discovers before it shops here' places the call in the discovery phase that precedes checkout, which is genuine usage context. It stops short of explicit when-not conditions or named alternatives, so it does not reach a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ucp_quoteAInspect

Price a cart the UCP way: pass cart with line_items, and optionally request_id, function_id, routing_preference, currency, stage (quote, cart, checkout or order), checkout, order, payment, context and agentid_token. It routes the cart through the pricing network and answers a UCP quote. Pass agentid_token (an AgentID ID token issued for Last Price) to be recorded as a verified buying agent; the answer then names you, marked verified. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
cartYesThe cart to price.
orderNoOrder details.
stageNoWhere in the funnel the quote is for. Defaults to quote.
contextNoAnything that shapes the price: product type, country, channel.
paymentNoPayment details.
checkoutNoCheckout details.
currencyNoThe currency to price in.
request_idNoYour id for this request.
function_idNoThe pricing function to use.
agentid_tokenNoOptional: your AgentID ID token (from auth.agentid.com, issued for Last Price), sent as the AgentID-Token header so the quote records you as a verified buying agent. Leave it out to buy unverified.
routing_preferenceNoHow to pick a function when none is named.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is non-read-only, non-idempotent and non-destructive; the description adds the real behavioral context: credential scope, workspace claiming, the 403 refusal path, and that passing agentid_token causes the caller to be recorded as a verified buying agent. It doesn't say whether repeated calls create separate quote records (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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core is front-loaded and the credential/workspace requirements earn their place, but the middle sentence is a flat laundry list of eleven parameter names that duplicates the schema without adding meaning. Trimming that enumeration would tighten it considerably.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, nested-object tool with no output schema, it covers prerequisites, funnel stage, token semantics and a failure mode — enough for an agent to attempt the call correctly. The shape of the returned quote is only loosely implied ('answers a UCP quote').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter, and the description's opening sentence largely re-lists parameter names. It does add a little: stage defaults to quote and routing_preference applies 'when none is named' — but that is already in the schema descriptions too. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: prices a cart through the UCP pricing network and returns a UCP quote. It is distinguishable from catalog/compute tools by naming the UCP cart funnel, but it never explicitly contrasts itself with close siblings like compute_price or compute_prices_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: needs a Last Price credential with price compute scope and a claimed workspace, and the sandbox-key 403 case is spelled out. There is no explicit 'use this instead of X' routing against compute_price / compute_prices_batch, which keeps it below 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usageA
Read-onlyIdempotent
Inspect

Total your workspace's priced calls over a period, this calendar month by default: requests, units, compute time, cost, cached and prepaid calls, and the part of this month's cost still to be billed. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
end_dateNoEnd of the period, ISO 8601. Defaults to now.
start_dateNoStart of the period, ISO 8601. Defaults to the first of this month.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, so the description correctly spends its words elsewhere: it discloses the Last Price credential requirement and the concrete failure mode (403 for unclaimed sandbox keys from self-registration). It does not describe response shape or any rate limits, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core operation and default period are front-loaded in the first clause, followed by the enumerated metrics and then the preconditions. Every sentence carries distinct information with no restatement of the tool name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the aggregated metrics, and it covers the two realistic call-time blockers (credential type, unclaimed workspace). The missing piece is differentiation from get_usage_breakdown, which an agent needs to avoid picking the wrong usage tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description only restates the period/default behavior already documented on start_date and end_date. It adds no syntax, format, or edge-case details beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Total') and resource ('your workspace's priced calls') plus a default time window, and enumerates exactly what is aggregated (requests, units, compute time, cost, cached/prepaid calls, unbilled remainder). It does not, however, distinguish itself from close siblings like get_usage_breakdown or list_usage_events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Default scope ('this calendar month by default') and prerequisites are stated, which implies when the tool applies. But there is no explicit guidance on when to prefer this over get_usage_breakdown, list_costs, or list_usage_events, leaving the agent to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usage_breakdownA
Read-onlyIdempotent
Inspect

See your usage grouped by pricing function: calls, spend and outcomes for each function over a period. Pass start_date and end_date to choose the period, and group_by function, the only grouping there is. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
end_dateNoThe end of the period, as an ISO 8601 date and time.
group_byNoHow to group. Only function is available.
start_dateNoThe start of the period, as an ISO 8601 date and time.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes beyond them by disclosing the required Last Price credential and the 403 refusal for unclaimed sandbox workspaces. Those auth/access preconditions are exactly what an agent needs before calling. It stops short of describing pagination or result shape, keeping it just shy of full marks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose first, then parameters, then access requirements. All sentences carry information (what it returns, how to scope, auth caveats). Slightly dense but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description names the returned metrics (calls, spend, outcomes) and covers the credential and workspace-claim preconditions, which are the main failure modes. Complete enough for an agent to call it correctly; only return-format/pagination detail is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all three parameters are self-documented (ISO 8601 dates, single-value group_by enum). The description restates the date-range purpose and that function is the only grouping, which is mildly redundant with the enum. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: usage grouped by pricing function, returning calls, spend and outcomes over a period. That is clear and more specific than a generic usage getter, but the description never names the closest siblings (get_usage, get_cost_analytics) so the agent has no explicit routing signal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives the mechanics (pass start_date/end_date, group_by is limited to function) and the credential/workspace prerequisites, which is useful context. However, it never says when to pick this tool over get_usage, get_cost_analytics, or list_usage_events, so the choice 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.

get_wallet_balanceA
Read-onlyIdempotent
Inspect

Read the USDC a wallet holds on the network pay-per-call uses, from the chain, and what it covers: paid calls and day passes. address is the wallet that signs your x402 payments. Check it before buy_day_pass, top_up_balance or a paid compute_price. Nothing is signed and no money moves. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault
addressYesThe 0x wallet address that pays.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses an authentication requirement ('Needs a Last Price credential with the price:compute scope') and that the value is read from the chain. 'Nothing is signed and no money moves' largely restates destructiveHint=false, but the auth-scope detail is genuine added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and scope, then usage guidance, then prerequisites — a sensible ordering for an agent scanning the text. The only wasted clause is 'Nothing is signed and no money moves', which duplicates the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description compensates by saying what the balance covers (paid calls and day passes) and that it is read from the chain. Auth requirements are covered. It does not mention formatting, units beyond USDC, or failure behavior, but nothing essential for invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the address pattern and '0x wallet address that pays' are documented), so the baseline is 3. The description adds real meaning by clarifying that this must be the wallet that signs x402 payments — a semantic distinction the schema does not make.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and a precisely scoped resource: the USDC a wallet holds on-chain for pay-per-call usage, including what it covers (paid calls, day passes). That resource specificity implicitly separates it from credit/token balance siblings like get_credit_balance, but no sibling is named, so it stops just short of the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to check this before buy_day_pass, top_up_balance, or a paid compute_price — a concrete when-to-use with named alternatives. It also identifies the correct input via 'address is the wallet that signs your x402 payments', leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workspace_settingsA
Read-onlyIdempotent
Inspect

Read your workspace settings: company name, address, email, phone, website and description, tax id, default currency, payment terms, invoice prefix and footer, whether tax is on, the tax registrations and the sales playbook. Model keys are never shown. Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real context: model keys are redacted from the response, the required credential scope, and the 403 refusal for unclaimed workspaces. That goes well beyond what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scope statement and the field list are front-loaded, and the auth/prerequisite sentences follow cleanly. The middle field enumeration is long but each item is informative rather than filler; a slightly tighter grouping of the field list would earn a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-shape burden itself — and it does, listing the returned settings and the one redaction (model keys). Access prerequisites and the 403 edge case cover the remaining risk of an incorrect call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No misleading param hints are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read your workspace settings') and enumerates the exact fields returned (company name, tax id, currency, invoice prefix, tax registrations, sales playbook). This is clearly distinguishable from the mutating sibling update_workspace_settings and from other get_* settings tools such as get_billing_settings or get_analyst_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions for when the call will succeed: a Last Price credential with workspace settings read scope and a claimed workspace, with the explicit failure mode (403) for sandbox keys from self-registration. It does not explicitly contrast with update_workspace_settings, but the read/update split is unambiguous from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_x402_price_indexA
Read-onlyIdempotent
Inspect

Read the x402 market price band: what paid x402 services list per call in public x402 discovery catalogs, as the 10th percentile, median and 90th percentile price per call for each category and over every category, with how many services stand behind each band and the day it describes. Pass category to narrow to one, and days with it for that band per day. Use it to see what a paid call usually costs before you pay; verify_price and check_purchase use the same band. List prices only, never evidence of demand: some sellers pay themselves. Public: needs no credential, limited per address. Until it is switched on it answers not released.

NameRequiredDescriptionDefault
daysNoWith category: also that band for each of the last this many days.
categoryNoOnly this category, with the overall band. Leave out for every category.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses that the tool is public with no credential required, is rate limited per address, and may answer 'not released' until it is switched on. The demand-vs-list-price caveat is genuine behavioral context an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and returned fields are front-loaded in the first sentence, and later sentences carry routing, caveats, and availability state. The opening sentence is a long run-on that could be split, but no clause is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so fully: percentiles, category scope, sample-size counts, and the day covered. Auth, rate limiting, and pre-release availability are all covered, so an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions already explain that days applies 'with category' and that category narrows to one band plus the overall. The description restates this interaction without adding format, default, or edge-case meaning beyond what the structured fields provide, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Read the x402 market price band') and then defines exactly what that band contains: 10th percentile, median, and 90th percentile price per call by category and overall, with service counts and the day described. It also names verify_price and check_purchase as siblings that consume the same band, so the agent can place it in the tool family without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case ('see what a paid call usually costs before you pay') and routes the agent to verify_price/check_purchase when the goal is verification rather than a lookup. It also warns 'List prices only, never evidence of demand: some sellers pay themselves,' which is a meaningful when-to-trust-it caveat, though it stops short of stating explicit when-not-to-call conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grant_credit_bundle_planAInspect

Give a customer an active credit bundle: its credits are added to their balance and, unless create_invoice is false, a draft invoice for its price is made. Unlimited bundles cannot be granted as a balance. Early access. Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
plan_idYes
customer_idYesOne of your customers.
create_invoiceNoAlso create a draft invoice for the price (default true).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only give a generic mutation profile (not read-only, not destructive, not idempotent), while the description discloses the actual side effects: credits are added to the customer's balance and a draft invoice is generated unless create_invoice is false. It also surfaces authorization scope, the workspace-claim gate with its 403 behavior, and the unlimited-bundle rejection rule — none of which appear in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what happens to the balance and invoice before moving to constraints and prerequisites. Dense but each sentence carries distinct information; only the terse "Early access." fragment is slightly awkward.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with no output schema, the description covers effects, failure modes, and auth requirements thoroughly. It does not say what the call returns (grant or invoice identifier) or what happens on a repeat call, which matters somewhat given idempotentHint=false, but those are minor residual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: customer_id and create_invoice are documented in the schema, and the description only reinforces create_invoice's effect on invoice creation. plan_id has no description in either place, so the agent must infer that it references an existing bundle plan from context; the description doesn't compensate for that gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — "Give a customer an active credit bundle" — and spells out the resulting effects (credits to balance, draft invoice for price). It is clearly distinct in meaning from create_credit_bundle_plan or update_credit_bundle_plan, but no sibling is named, so an agent must infer the distinction rather than being routed explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions and exclusions: early access, a Last Price credential with billing write scope required, a claimed workspace required with an explicit 403 failure mode for sandbox self-registration keys, and the rule that unlimited bundles cannot be granted. It stops short of naming alternatives such as top_up_balance or create_credit for cases where the grant is not appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

infer_feature_contractA
Read-onlyIdempotent
Inspect

Propose a feature contract from sample pricing requests: nested objects are flattened by path, lists reduced to counts, sums, maxima and has-value flags, numbers binned, and fields that identify someone left out, each with the reason. Nothing is stored; save the result with set_feature_contract. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
opt_inNoThe customer segment and geo fields are used only when listed here, as in buyer-aware pricing.
bucketsNoBins for each number, at its quantiles. Default 4.
samplesYesSample request contexts, as sent to compute_price in context, metadata included. Not stored.
min_coverageNoShare of samples a field must appear in. Default 0.05.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces rather than contradicts that with 'Nothing is stored' plus the auth scope requirement. It also discloses the actual transformation policy (flatten by path, lists to counts/sums/maxima/has-value flags, numbers binned, PII-identifying fields dropped), which annotations alone would never convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then the transformation rules, then the storage/auth caveats. Dense — the first sentence packs five clauses — but each clause carries behavioral information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still signals the return shape ('each with the reason'), covers the mutation boundary, and names the credential scope. What's missing is anything about failure modes or sample-size limits (the schema caps at 1000), but the essentials for correct invocation are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond field docs: it explains what binning means for 'buckets', why some fields are excluded, and that samples are 'as sent to compute_price... not stored'. It does not explicitly tie the opt-in segment/geo behavior to its parameter, which keeps it at 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Propose a feature contract from sample pricing requests') and immediately distinguishes itself from the sibling that persists it ('save the result with set_feature_contract'). An agent can tell this apart from set_feature_contract/get_feature_contract without reading any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the workflow position clearly: this is the dry-run proposal step and set_feature_contract is the persistence step ('Nothing is stored'). Also gives the prerequisite ('Needs a Last Price credential with routing read scope'). No explicit exclusion cases, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ingest_with_rosettaAInspect

Onboard a merchant feed with one call: send payload and canonical_target and Rosetta fingerprints the shape, reuses a frozen adapter when it has one and otherwise plans, freezes or queues the mapping by confidence. The status says stable, provisional or needs review. Pass samples, up to a few more payloads, to improve the guess, and merchant_id to label the integration in the audit trail. The first call for a new shape provisions and stores an adapter and may queue a review. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
payloadYesThe merchant record to translate.
samplesNoMore payloads of the same shape, to improve the guess.
merchant_idNoA label for the integration, kept in the audit trail.
canonical_targetYesThe id of a built-in schema (see list_canonical_schemas) or a whole schema with an id and fields.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that the first call for a new shape provisions and stores an adapter, may queue a review, and returns stable/provisional/needs-review status. It also reveals auth prerequisites: a claimed Last Price credential and a claimed workspace, with sandbox keys refused (403). This is exactly the side-effect and prerequisite context an agent needs for a non-read-only, non-idempotent tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and workflow in the first sentence, then layers in status values, sample usage, first-call side effects, and auth prerequisites. Every sentence carries actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, nested, non-idempotent ingestion tool with no output schema, the description covers the workflow, return status vocabulary, side effects, review queueing, and the two credential/workspace prerequisites. Nothing essential for a correct first call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's mentions of samples ('up to a few more payloads, to improve the guess') and merchant_id ('label the integration in the audit trail') largely restate what the schema already documents. It adds no syntax, format, or constraint details beyond the structured fields, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Onboard a merchant feed') and describes the full mechanism: fingerprinting, frozen-adapter reuse, and plan/freeze/queue by confidence. This makes it clearly distinct from sibling tools like translate_with_rosetta, normalize_with_rosetta, and plan_rosetta_mapping without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The onboarding framing gives clear context for when to use it, and the notes on samples and first-call behavior help an agent decide how to call it. However, it does not explicitly name alternatives (e.g., translate_with_rosetta for existing adapters) or state exclusions, so the agent must infer the boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invite_team_memberAInspect

Invite someone by email to join your workspace with a role. The invitation link is emailed to them, never returned. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
roleNoTheir role. Defaults to member.
emailYesWho to invite.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the side effect (an email is sent and the link is never returned to the caller), the exact auth/scope requirement and who must issue the key, and a concrete failure mode (403 for sandbox keys until the workspace is claimed). This is precisely the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the return-value caveat, and every sentence carries information. The auth sentence is a dense semicolon-joined run-on, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, it covers the side effect, the auth model, and the main error path, so an agent has what it needs to call it correctly or to predict failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are already documented with a role enum and a stated default, so the schema does the heavy lifting. The description only echoes that a role accompanies the invite and names who to invite, adding no syntax or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (invite someone by email to join the workspace, with a role) and makes the delivery mechanism explicit (invitation link emailed, never returned). It does not differentiate itself from the similarly named sibling add_team_member, so an agent must still infer which of the two to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions: a team:admin-scoped x-api-key from an acting owner/admin, and a claimed workspace (self-registration sandbox keys get 403). What is missing is any routing guidance versus alternatives such as add_team_member or list_invitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issue_invoice_with_stripeA
Idempotent
Inspect

Issue one of your invoices through your connected Stripe account so the customer pays on Stripe's page: returns the hosted invoice URL. send true also asks Stripe to email it. Safe to retry; an invoice is issued once. Early access. Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
sendNoAlso email it to the customer (default false).
invoice_idYesThe invoice UUID: id on a list_invoices result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the idempotency semantics in plain language ('safe to retry; an invoice is issued once'), the exact auth/scope requirement, an explicit failure mode (sandbox key from self-registration is refused with 403 until claimed), and an early-access caveat. That is the kind of operational context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return value, then prerequisites and failure modes. Dense but every clause carries information; the only soft spot is the terse 'Early access.' fragment, which sits slightly awkwardly in the flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers the outcome (hosted invoice URL), the email side effect, idempotency, auth scope, and the 403 onboarding trap. An agent has everything needed to call it correctly or diagnose a refusal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's mention of `send` (emailing the customer) merely restates what the schema already says. No additional format, default, or edge-case detail for `invoice_id` is added beyond the schema's reference to list_invoices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (issue), a specific resource (one of your invoices), and the mechanism/outcome (through your connected Stripe account, customer pays on Stripe's page, returns hosted invoice URL). This is clearly distinguishable from siblings like create_invoice, send_invoice, or get_invoice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions for use: needs a Last Price credential with billing write scope and a claimed workspace, and explains the `send` flag's effect. It does not explicitly route the agent away from near-siblings such as send_invoice or create_invoice, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_aitune_backendsA
Read-onlyIdempotent
Inspect

List the inference backends the AITune sidecar offers your workspace and the state of each one: which are available, which are loaded and why one is not. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already declare readOnlyHint, idempotentHint, non-destructive, non-open-world), the description discloses the auth model (Last Price credential) and a specific failure mode: self-registered sandbox keys get 403 until a human claims the workspace. It also previews what state information comes back, so the agent knows diagnostic value is included, not just a bare list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is listed and what the caller learns, then safety, then preconditions. No filler, and the 'Read-only' note is the only slight redundancy against the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no params and no output schema, the description carries the burden of explaining the response, and it does: available/loaded/why-not-loaded per backend. Combined with annotations covering safety and the description covering auth and error behavior, an agent has everything needed to call it and interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a no-param tool applies. The description correctly avoids inventing arguments and focuses on output meaning instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the inference backends the AITune sidecar offers your workspace') and then enumerates the returned state dimensions (available, loaded, why not loaded). The AITune-sidecar framing distinguishes it from generic siblings like list_inference_providers or list_hosted_models without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for use: a Last Price credential is required and the workspace must be claimed, with the sandbox-key case explicitly refused with 403. It stops short of naming alternative tools for adjacent needs (e.g., provider listing vs backend listing), so it is clear context but not a full when/when-not routing guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_approvalsA
Read-onlyIdempotent
Inspect

List the actions held for approval in your workspace, newest first: what was asked, who asked (agent or key), its status (pending, approved, rejected or expired) and when it expires. status pending lists what waits for a decision; pass its id to decide_approval. Needs a Last Price credential with audit read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost approvals to return. Defaults to 50.
statusNoOnly approvals with this status, e.g. pending.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds meaningful context beyond those: the newest-first ordering, the returned fields, the credential/audit read scope requirement, and the 403 behavior until a workspace is claimed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then adds filtering guidance, prerequisites, and workspace constraints. Every sentence carries useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with full schema coverage and rich annotations, the description covers purpose, ordering, return fields, filtering semantics, next-step routing, auth scope, and workspace-claim requirements. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds semantic meaning for the status parameter by explaining that 'pending' lists items awaiting a decision and that the returned id feeds decide_approval.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List the actions held for approval'), adds scope ('in your workspace'), ordering ('newest first'), and the fields returned. It is clearly distinguishable from siblings like get_approval and decide_approval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for using the status filter ('status pending lists what waits for a decision') and explicitly routes the next step to decide_approval. It does not explicitly contrast with get_approval, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_audit_eventsA
Read-onlyIdempotent
Inspect

Read the workspace audit log, newest first: who did what and when, including who decided each approval. Filter by action, subject_kind and subject_id, agent_id or since; pass the returned cursor to page on. The team's own rows are for owners and admins. Needs a Last Price credential with audit read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost events to return. Defaults to 50.
sinceNoOnly events at or after this time.
actionNoOnly events with this action, e.g. approval.approve.
cursorNoThe cursor a previous page returned.
agent_idNoOnly events caused by this agent.
subject_idNoOnly events about this subject id.
subject_kindNoOnly events about this kind of subject.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, idempotent, closed-world read; the description adds ordering (newest first), cursor-based pagination semantics, row-level permission scoping for team rows, required credential scope, and the specific 403 failure for sandbox keys on unclaimed workspaces. That is materially more than the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with purpose, then filters/pagination, then access constraints; nothing is padding. The credential phrasing ('a Last Price credential') is slightly opaque but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-optional-param read tool with no output schema, the description covers what the rows represent, ordering, paging, permissions, and the main failure mode. Error handling beyond the 403 and the empty-result case are the only notable omissions, and those are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds workflow meaning for the cursor ('pass the returned cursor to page on') and clarifies the filter dimensions collectively. It still does not add format examples for since/action beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the workspace audit log') plus ordering ('newest first') and content ('who did what and when, including who decided each approval'), so the agent knows exactly what comes back. It does not name the closest sibling, list_commerce_audit_events, so the workspace-vs-commerce distinction is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection context: filter by action/subject/agent/since, page with the cursor, team rows visible only to owners and admins. It also front-loads prerequisites (audit read scope credential, claimed workspace, 403 otherwise) that determine whether calling is viable, though it never routes to an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canonical_schemasA
Read-onlyIdempotent
Inspect

List the canonical schemas the Rosetta translator maps any vendor's data onto: product, offer, observation, match and action, with each one's id and fields. Use it to learn which canonical targets exist before you map a source. Public: needs no credential.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world behavior, so the bar is lower. The description adds useful context beyond them: that the response includes each schema's id and fields, and that it is public with no credential required — a real deployment detail not in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded: what is returned first, then when to call it, then an auth note. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with no output schema, the description still names the returned entities and the id/fields payload shape, plus the no-credential requirement. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document and the baseline is 4. The description correctly does not invent parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the canonical schemas the Rosetta translator maps any vendor's data onto') and enumerates the five canonical entity types returned. This clearly separates it from siblings like list_vendor_adapters or plan_rosetta_mapping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use it to learn which canonical targets exist before you map a source,' giving a concrete precondition for invocation. It stops short of naming the alternative mapping tools (plan_rosetta_mapping, translate_with_rosetta) as the follow-on calls, so it's clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_audit_eventsA
Read-onlyIdempotent
Inspect

Read the commerce audit trail for your workspace: what the pipeline drafted, approved, rejected and executed. This is the commerce trail, separate from list_audit_events. Filter by subject_kind and subject_id, for example proposal and a proposal id. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost rows to return. Defaults to 100.
subject_idNoOnly events about this subject id.
subject_kindNoOnly events about this kind of subject, e.g. proposal.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations it discloses two things the agent could not otherwise know: the required credential scope ('Last Price credential with commerce catalog read scope') and a concrete failure mode (sandbox key from self-registration refused with 403 until a person claims the workspace). It also describes what the trail actually contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose, then differentiation, filtering, and prerequisites in a sensible order. No filler, though the prerequisite sentences are telegraphic and could read more smoothly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-required-parameter list tool with no output schema and rich annotations, the description covers purpose, sibling differentiation, filtering, authorization scope, and a failure mode — everything an agent needs before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented with types and a default for limit. The description only adds an example pairing of subject_kind and subject_id, which is marginal value on top of the schema — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the commerce audit trail for your workspace') and immediately scopes its contents (drafted, approved, rejected, executed). It explicitly distinguishes itself from the sibling list_audit_events, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: filter by subject_kind/subject_id with a worked example (proposal + proposal id), plus prerequisites (commerce catalog read scope, claimed workspace). It names the sibling trail but does not spell out the condition under which an agent should pick list_audit_events instead, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_catalogA
Read-onlyIdempotent
Inspect

List the catalog items the commerce pipeline tracks for your workspace: each product the cycle prices, with its current price and source. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost rows to return. Defaults to 100.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower; the description still adds meaningful behavior: the required credential scope and, most valuably, the specific failure mode where a self-registered sandbox key is refused with 403 until a person claims the workspace. That is exactly the kind of operational context an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose first, then auth scope, then workspace-claim precondition. Front-loaded and free of filler; only minor overlap between the two 'Needs a...' sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter list tool with full schema coverage and no output schema, the description covers what is returned and the two preconditions that can block a call. It stops short of describing pagination/ordering behavior or the size/shape of a large catalog response, which for a 500-row limit tool would be useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (limit) and schema description coverage is 100%, so the schema already documents the default of 100 and the 1–500 range. The description adds nothing about the limit or pagination strategy, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the catalog items the commerce pipeline tracks for your workspace') and further specifies the return payload: each product the cycle prices with current price and source. That is far better than tautology. It does not, however, distinguish itself from the nearby sibling browse_catalog, which an agent could easily confuse with this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies real prerequisites — a Last Price credential with commerce catalog read scope and a claimed workspace — which guide when the call will succeed. But it never says when to prefer this tool over browse_catalog or other list_* catalog-adjacent siblings, so the usage decision is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_connectorsA
Read-onlyIdempotent
Inspect

List the store connectors linked to your workspace (credentials are never shown) and the platforms you can connect. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, and the description still adds meaningful behavior: credentials are never returned, the required auth scope, and a specific 403 rejection mode for unclaimed workspaces. That is exactly the kind of auth and failure-mode context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned, then the credential and workspace prerequisites. The final claim-workspace sentence is long but earns its place by explaining the 403.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by stating what the response contains (connectors plus connectable platforms) and what it will not contain (credentials). Together with the auth and error context, this is nearly complete for a zero-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the schema is fully covered; baseline 4 applies. The description correctly implies no inputs are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (list) and two clearly scoped resources: the store connectors linked to the workspace and the platforms available to connect. The resource is distinctive enough to separate it from siblings like list_connected_apps or list_commerce_catalog, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real preconditions for calling: a Last Price credential with commerce catalog read scope and a claimed workspace, plus an explicit failure case (a sandbox key from self-registration gets 403 until claimed). It stops short of naming which sibling to use instead when those conditions don't hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_observationsA
Read-onlyIdempotent
Inspect

List the recent competitor price observations the commerce pipeline collected: source, competitor, observed price and time. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost rows to return. Defaults to 100.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior, while the description adds important auth prerequisites and a concrete 403 failure condition. It does not describe pagination behavior beyond the limit parameter, but the key gating context is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with what is returned and then covers prerequisites and error behavior. Every sentence provides useful context with no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with full schema coverage and no output schema, the description supplies the returned fields, auth requirements, and workspace-state gating. An agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, limit, and the schema description already fully documents its default and maximum. The description does not add parameter-specific meaning beyond the schema, which is appropriate for 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it lists recent competitor price observations collected by the commerce pipeline. It also names the observed fields, making it easy to distinguish from catalog, audit, or mutation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the credential scope and claimed-workspace requirement, including the 403 refusal for sandbox keys. It does not mention when to use an alternative sibling tool, but the usage context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_policiesA
Read-onlyIdempotent
Inspect

List the pricing policies the commerce pipeline applies when it drafts price proposals: each policy's id, scope, rules and whether it is enabled. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal readOnly/idempotent/non-destructive, but the description adds value beyond them: the required credential scope and the specific behavioral quirk that an unclaimed sandbox key is refused with 403 until the workspace is claimed. That operational detail is genuinely useful and not derivable from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose and followed by the two prerequisites. The final workspace-claim caveat is a bit verbose but carries actionable information, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param, no-output-schema read tool, the description covers what is returned and both access prerequisites. An agent has what it needs to call it correctly; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description goes slightly further by characterizing the shape of the listed entities, which compensates for the absence of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the pricing policies') and narrows scope to those the commerce pipeline applies when drafting price proposals, plus enumerates the returned fields (id, scope, rules, enabled). Distinguishable from siblings like list_pricing_pipelines and get_commerce_policy, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear preconditions (commerce catalog read scope, claimed workspace) but does not state when to use this over get_commerce_policy for a single policy or create/update/delete_commerce_policy. Usage context is implied rather than framed as when/when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commerce_proposalsA
Read-onlyIdempotent
Inspect

List the price proposals the commerce pipeline drafted, newest first, each with its status (proposed, approved, rejected, executed, failed or expired), the current and proposed price and the policy that produced it. Filter by status. Needs a Last Price credential with commerce catalog read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost rows to return. Defaults to 100.
statusNoOnly proposals with this status.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, idempotent read, but the description adds substantial value beyond them: result ordering ('newest first'), the full status vocabulary, required credential/scope ('Last Price credential with commerce catalog read scope'), and a concrete failure mode — a self-registered sandbox key is refused with 403 until the workspace is claimed. That precondition/error disclosure is exactly the kind of context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is listed and in what order, then the filter, then the two preconditions — a logical progression with no filler. The only waste is restating the status enum in parentheses right before saying 'Filter by status', which the schema already defines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still tells the agent what a row contains (status, current and proposed price, policy) and the sort order, and it covers both hard preconditions and the 403 failure for unclaimed sandbox workspaces. Limit behavior is fully covered by the schema, so nothing an agent needs before calling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (limit with default/min/max, status enum) are already fully documented in the schema. The description's 'Filter by status' and status enumeration merely restate the enum, adding no syntax or behavioral nuance beyond the schema; baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list price proposals drafted by the commerce pipeline) and describes exactly what each row contains: status, current price, proposed price and originating policy, plus 'newest first' ordering. The verb 'list' plus the status set makes it unmistakably distinct from approve_commerce_proposal, reject_commerce_proposal and execute_commerce_proposals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the read/list use case and notes 'Filter by status', but never names an alternative or exclusion (e.g. 'to act on a proposal, use approve_commerce_proposal / execute_commerce_proposals'). Usage is inferable rather than explicitly routed, which fits the 'implied usage' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connected_appsA
Read-onlyIdempotent
Inspect

List the apps you connected to Last Price by signing in (Claude, ChatGPT and other MCP clients), newest first: each one's id, name, the host it returns to, the workspace, whether it has full access or which scopes, and when it was connected and last used. this_app marks the connection making this call. Read-only. Needs a credential that names a person: signing in to Last Price from this MCP client, or a person token. An API key names a workspace, not a person, and gets 403. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations' readOnly/idempotent hints, it discloses the half the annotations can't: which credential types are accepted, that an API key earns a 403, that an unclaimed self-registered workspace is refused with 403, and that results are ordered newest first with this_app marking the calling connection. This is exactly the context an agent needs to avoid a failed call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph, but the core action and ordering come first and the credential/workspace constraints follow. The final two sentences about credentials are long and slightly repetitive, but each carries a distinct 403 case that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by naming every returned field (id, name, host, workspace, access/scopes, connected and last-used timestamps, this_app). Combined with the auth failure modes, an agent knows both what it gets back and when the call will be rejected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description's field enumeration is effectively return-value documentation rather than parameter semantics, and nothing is left ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the apps you connected to Last Price by signing in') and enumerates the fields returned, which separates it cleanly from list_demo_apps and from the mutation tool disconnect_connected_app. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear preconditions for calling: a credential that names a person and a claimed workspace, plus the exact failure modes (API key → 403; sandbox key → 403 until claimed). It does not name a sibling alternative, but no sibling performs the same listing, so the guidance is sufficient in context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_contactsA
Read-onlyIdempotent
Inspect

List the contacts in your workspace, newest first, or only one customer's with customer_id. Page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.
customer_idNoThe customer: its id, as list_customers shows it.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations it discloses genuinely non-obvious traits: ordering (newest first), the required Last Price credential, and that a self-registered sandbox key is refused with 403 until the workspace is claimed. The 403 failure mode is exactly the kind of pre-call context an agent cannot get from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct information: scope, paging, access precondition, workspace precondition. Scope and ordering are front-loaded; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still omits what a contact record actually contains, so an agent cannot predict the response shape. Everything else needed to call it correctly, including auth and workspace prerequisites, is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a description, so the description only restates that limit/offset page and customer_id filters. It adds no format or constraint detail (e.g. the 1000 maximum) beyond the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('List the contacts in your workspace') with ordering ('newest first') and an optional narrowing path ('only one customer's with customer_id'). It is trivially distinguishable from siblings like get_contact (single record) and list_customers (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear conditions are given: use customer_id to scope to one customer, use limit/offset to page. It does not name an alternative tool or state when not to use it, but for an unambiguous list operation that is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_costsA
Read-onlyIdempotent
Inspect

List the costs recorded in your workspace, newest first: what each was for, its amount, currency and the agent or customer it belongs to. Filter by customer_id and by start_date and end_date, and page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 100.
offsetNoHow many to skip, for the next page.
end_dateNoThe end of the period, as an ISO 8601 date and time.
start_dateNoThe start of the period, as an ISO 8601 date and time.
customer_idNoThe customer: its id, as it shows in your workspace.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so 'Read-only' alone would earn nothing, but the description goes further by disclosing two preconditions beyond annotations: a Last Price credential is required, and a self-registered sandbox key receives 403 until a person claims the workspace. It does not mention return size, total counts, or ordering ties, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and returned fields, then filters, then prerequisites. Every clause carries information; the only redundancy is repeating 'Read-only', which annotations already establish.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter read-only list tool with no output schema, the description covers purpose, filterable dimensions, ordering, paging, auth credential and a concrete error condition (403). What is missing is minor: whether a total count is returned and any date-range boundary semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds the non-schema fact that results are ordered newest first and frames limit/offset as a paging pair and customer_id/dates as filters. That is genuine added meaning, though it does not explain date-range inclusivity or maximum page size.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the costs recorded in your workspace') and enumerates the returned fields (what it was for, amount, currency, agent/customer), which distinguishes it from the mutation sibling record_cost. It does not name or contrast with near-neighbours such as get_cost_analytics or list_usage_events, so differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for invocation: it says what the list contains, that it is ordered newest first, and which filters (customer_id, start_date/end_date) and paging controls (limit/offset) to use. No exclusions or named alternatives are given, so an agent must infer that aggregate/analysis needs belong to get_cost_analytics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_credit_bundle_plansA
Read-onlyIdempotent
Inspect

List the credit bundles your workspace sells: each one's id, name, code, price, billing frequency, credits (null for unlimited), rollover and status (active, inactive or archived). Early access: answers released false with no bundles until credit bundles are switched on for the workspace. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
statusNoOnly bundles with this status.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description still adds substantial context: required billing read scope, the claimed-workspace requirement, an explicit 403 for sandbox self-registration keys, and the early-access empty state returning released=false. That is exactly the extra behavioral detail structured fields cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and returned fields are front-loaded, and each later sentence contributes new information (early-access behavior, credential scope, workspace claim). The prerequisite sentences are long and somewhat run-on, but no sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by enumerating returned fields, describing the empty/early-access response, and listing every precondition that can block the call. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the single enum parameter fully documented, so the schema already carries the burden. The description restates the status values (active, inactive, archived) but adds no syntax or semantics beyond the schema's enum, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the credit bundles your workspace sells") and enumerates exactly which fields come back (id, name, code, price, billing frequency, credits, rollover, status), which implicitly separates it from list_credit_bundle_subscriptions. It stops short of naming a sibling to disambiguate against, so the distinction must be inferred from the field list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the resource description; there is no explicit "use this when..." or "not for..." clause, and the closest sibling (list_credit_bundle_subscriptions) is never mentioned. The prerequisites given are about access, not about choosing this tool over another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_credit_bundle_subscriptionsA
Read-onlyIdempotent
Inspect

List the customers on a recurring credit bundle (monthly, quarterly or annually), newest first: each subscription's customer, status, current period and when it renews, and why it was cancelled. Granting a recurring bundle starts one; each period end renews it with the bundle's credits plus the rollover. Early access. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoPage size, 100 by default.
offsetNoRows to skip.
statusNoOnly subscriptions with this status.
plan_idYesThe bundle id from list_credit_bundle_plans.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substantial context: Early access status, required billing read scope on a Last Price credential, the claimed-workspace prerequisite with the specific 403 refusal, and renewal semantics including rollover credits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and returned fields, then lifecycle, then prerequisites and failure mode. Most sentences carry unique information; the standalone 'Early access.' fragment is slightly disruptive but still earns its place as a caution signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the response fields, and it covers the auth/workspace prerequisites and the 403 error path. An agent has everything needed to call this correctly without further reading.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per calibration the baseline is 3, but the description goes slightly beyond by tying plan_id to its source tool and implying the status filter values via the 'active'/'cancelled' framing ('why it was cancelled'). Pagination semantics are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list subscriptions on a recurring credit bundle), the supported cadences, the sort order ('newest first'), and the exact fields returned. An agent can distinguish it from list_credit_bundle_plans or cancel_credit_bundle_subscription without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for invocation: plan_id must come from list_credit_bundle_plans, and the lifecycle note ('granting a recurring bundle starts one') explains when subscriptions exist. It stops short of explicit exclusions or naming sibling tools for adjacent tasks, so a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_creditsA
Read-onlyIdempotent
Inspect

List your workspace's prepaid credit bundles for the customers you bill, newest first: each one's id, customer, amount bought, balance left, currency and expiry. Pass customer_id for one customer. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many rows to return. Defaults to 100.
offsetNoHow many rows to skip, for the next page. Defaults to 0.
customer_idNoOnly this customer's rows: the customer UUID.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses the auth scope required and a specific failure mode (403 until a person claims a workspace), which is exactly the pre-call context an agent needs to avoid a doomed invocation. It also discloses ordering and the shape of what comes back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose and field list before the filter and the prerequisites. The field enumeration is dense but earns its place given there is no output schema; only minor trimming would help.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, and it covers ordering, default filtering behavior, credential scope and the workspace-claim precondition. An agent has everything needed to call it correctly and to interpret a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and limit/offset are already documented in the schema, so the description adds little there. The one sentence 'Pass customer_id for one customer' merely restates the schema's customer_id description; no pagination or format guidance is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list prepaid credit bundles) plus scope ('for the customers you bill', workspace-level) and ordering ('newest first'), and enumerates the returned fields. This clearly separates it from the singular siblings get_credit and get_credit_balance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection guidance ('Pass customer_id for one customer') and states two hard preconditions — a Last Price credential with billing read scope, and a claimed workspace (sandbox self-registration returns 403). It does not explicitly name the alternative tools (e.g. get_credit_balance for a single balance), so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_customersA
Read-onlyIdempotent
Inspect

List the customers in your workspace, newest first. Page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered; the description still adds real context beyond that by naming the credential requirement and the exact failure mode (403 until the workspace is claimed) plus the result ordering. It omits rate limits and response shape, so a 4 rather than a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose and paging, then prerequisites. 'Read-only' duplicates the readOnlyHint annotation, a minor redundancy, but nothing else is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-optional-param list tool with rich annotations and no output schema, the description covers ordering, paging, auth prerequisites and a specific error path. Only the returned fields are unexplained, which is a small gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so limit and offset are already fully documented in the schema. The description only restates 'page with limit and offset' and hints that offset is for the next page, adding no new syntax or default behavior. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the customers in your workspace') plus a defined ordering ('newest first'), which an agent can act on immediately. It does not explicitly differentiate itself from siblings like get_customer or list_contacts, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete invocation context: page with limit/offset, read-only, requires a Last Price credential, and requires a claimed workspace with a specific 403 refusal for sandbox self-registration keys. It never names an alternative tool (e.g., get_customer for a single record) or states when not to use it, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_day_passesA
Read-onlyIdempotent
Inspect

Read your workspace's day passes, newest first: for each, the calls left and when it ends, plus the total calls left and what a new pass costs now. A day pass is extra compute calls for 24 hours that a self-registered agent workspace buys with one x402 payment: buy_day_pass buys one. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/closed-world; the description adds real context beyond them: ordering (newest first), the fields returned (calls left, end time, totals, current price), the definition of a day pass, and the required Last Price credential with price:compute scope. That auth requirement is meaningful operational disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and result shape ('Read your workspace's day passes, newest first'). It is dense with multiple clauses but each adds signal; the credential note at the end is slightly tacked on but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden, and it does—listing calls left, end time, total remaining, and current new-pass price. Combined with the auth scope note and sibling reference, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the schema baseline of 4 applies. The description adds no parameter detail because there is nothing to parameterize, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read your workspace's day passes') and adds distinguishing scope ('newest first'), plus names buy_day_pass as the mutation sibling. An agent can distinguish it from buy_day_pass without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to buy_day_pass for purchasing a pass and states the credential/scope prerequisite. It doesn't spell out conditions for skipping the call, but the read-vs-buy split with the sibling is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_demo_appsA
Read-onlyIdempotent
Inspect

List the demo apps Last Price ships, each with its name, description, the experiment it runs and, once the demo workspace is seeded, that experiment's status, views and conversions. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, and the description adds genuinely new behavioral context beyond them: the auth requirement, the 403 refusal path for unclaimed sandbox keys, and that part of the payload is conditionally populated depending on whether the demo workspace is seeded. That is exactly the kind of non-structured information an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The payload contents are front-loaded in the first sentence and the prerequisites follow in short declarative clauses. There is minor redundancy in the repeated "Needs a ..." construction, but no sentence is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the returned fields and noting which are conditional on seeding. Combined with the auth/workspace prerequisites, an agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters there is no schema semantics to add to, so this reaches the rubric baseline of 4. The description does not mislead about arguments in any way.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("List the demo apps Last Price ships") and enumerates the returned fields (name, description, experiment, status, views, conversions), so the agent knows exactly what comes back. It never contrasts itself with any sibling (e.g. list_experiments or browse_catalog), so by the rubric's sibling-differentiation criterion it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear preconditions are stated: a Last Price credential is needed, and a claimed workspace is required because a self-registration sandbox key returns 403. The phrase "once the demo workspace is seeded" also tells the agent when the status/views/conversions fields are meaningful. No alternative tools are named, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_disputesA
Read-onlyIdempotent
Inspect

List the payment disputes in your workspace, newest first. Filter by status (open, under review, resolved or rejected) and page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.
statusNoThe dispute status.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive, closed-world profile, so the description is free to add real context — newest-first ordering and, critically, the 403 refusal for self-registered sandbox keys until the workspace is claimed. That auth-gating detail is behavior an agent cannot get from the annotations and would otherwise hit as a runtime surprise.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose and filtering before the prerequisites. The bare "Read-only." sentence largely duplicates readOnlyHint, so it earns its place only marginally, but there is no padding elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-optional-parameter read tool with no output schema, the description covers purpose, filtering, paging, ordering and the two access prerequisites. The only gap is any hint at what a dispute record contains, which an agent must discover from the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: limit, offset and status are all documented, and status carries a full enum. The description restates the status values and frames limit/offset as paging, which reinforces but does not add much beyond the schema text ("How many to skip, for the next page").

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the payment disputes"), scopes it ("in your workspace") and specifies ordering ("newest first"). The "List" verb plainly distinguishes it from get_dispute, create_dispute and update_dispute in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Says what the tool is for and how to narrow results (filter by status, page with limit/offset), plus the prerequisites for it to work at all (Last Price credential, claimed workspace). It doesn't explicitly name alternatives such as get_dispute for a single dispute, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_experimentsA
Read-onlyIdempotent
Inspect

List your workspace's price experiments: each one's key, name, status, variants (arms) and target sample size. Pass status to see only drafts, active, paused or completed ones. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
statusNoOnly experiments in this state.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, so the description adds genuine value with the credential requirement and the concrete 403 failure mode for sandbox keys from self-registration. Only pagination/result size is left undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences: purpose and returned fields first, then the filter, then prerequisites. No filler, and the failure mode is stated as a concrete status code.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully lists what each item contains and covers auth/workspace preconditions. Only result volume/pagination behavior is missing for a list tool that could return many experiments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum values document the status field fully; the description's sentence about 'drafts, active, paused or completed' mostly restates the enum. It adds filtering intent but no syntax or defaults beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List your workspace's price experiments') and enumerates the fields returned (key, name, status, variants, target sample size), which distinguishes it from get_experiment_definition / get_experiment_results siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to pass the status filter and what each state yields, plus the prerequisites (Last Price credential, claimed workspace). It doesn't name a sibling alternative, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_feature_launchesA
Read-onlyIdempotent
Inspect

List every launch kit for a feature built behind a release flag, for Last Price staff only: the flag's state, readiness (how many checks pass, warn and fail, and what blocks), the go code, what is scheduled, whether the launcher is on, and the release flags that have no kit yet. Read only: it never switches, schedules or sends anything; launching needs the owner's go code through the launch command. Needs an API key holding the launches:read scope by name, made by someone who is still Last Price staff, sent as x-api-key or as Authorization: Bearer lp_...; any other credential gets 404. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnly/idempotent, but the description adds substantive behavior: explicit non-mutation guarantee ('never switches, schedules or sends anything'), required scope by name, staff-liveness constraint, accepted header forms, and concrete failure modes (404 for other credentials, 403 for an unclaimed sandbox workspace). That is exactly the kind of context annotations cannot encode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the tool's function, then auth, then workspace prerequisites in a sensible order. The first sentence is a very long chain of clauses ('readiness (how many checks pass, warn and fail, and what blocks)') and slightly over-explains return fields, but nearly every clause is load-bearing for a tool with no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields; with no parameters, it documents the credential surface in detail. An agent knows the preconditions, the error semantics, and what it will get back before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4; the description correctly spends no space on parameter semantics and instead covers auth inputs (x-api-key / Authorization: Bearer) that are not schema parameters. Nothing is missing for a no-arg tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every launch kit for a feature built behind a release flag') and then enumerates exactly what each entry contains: flag state, readiness checks, go code, scheduled items, launcher status. It is clearly distinguishable from the singular get_feature_launch_plan by the 'every launch kit' scope plus the extra 'release flags with no kit yet' set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames this as the read-only path and points to the launching path ('launching needs the owner's go code through the launch command'), and states prerequisites (staff + launches:read key + claimed workspace). It stops short of naming the complementary read sibling get_feature_launch_plan, so the when-to-use-vs-alternative story is clear for launch vs inspect but not for list vs get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_functionsA
Read-onlyIdempotent
Inspect

List the pricing functions registered for the authenticated tenant.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds that results are scoped to the authenticated tenant's registered functions, but says nothing about ordering, pagination, or volume of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One crisp sentence with the tenant scope front-loaded and no filler. It is efficient, though it is also the minimum that could be said.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with full annotation coverage and no output schema, the definition is adequate to call it correctly. Minor residual gaps (ordering, pagination, what a 'function' contains) are low-risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is no parameter semantics to convey; the schema is empty and complete. Baseline of 4 applies for a no-arg tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (List) plus resource (pricing functions) with added scope: registered for the authenticated tenant. It contrasts implicitly with the singular get_function family, though it never names a sibling to distinguish itself explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the tool's nature — an agent would infer this is the discovery step before get_function or update_function, but the description states no when-to-use, prerequisites, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_hosted_modelsA
Read-onlyIdempotent
Inspect

List your workspace's hosted pricing models: models Last Price stores and runs for you, trained here on your quote outcomes or uploaded as ONNX. Each one has its id, name, kind (demand or price), active and latest version, and whether it retrains and promotes itself nightly. The answer also gives the limits, the ONNX operators the hosted runtime runs and the request fields a model can read. A pricing function of the ML model type runs a model when its inference config is {"provider": "last-price", "model": ""}. While hosted models (the hosted-pricing-models release) are not switched on for your workspace, this answers released: false with no models, and every other hosted model tool answers 404 not_released. Needs a Last Price credential with function read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it discloses the feature-gate behavior (released: false with no models, and every other hosted model tool 404 not_released), the required credential scope (function read), and the claimed-workspace requirement with the exact 403 failure for self-registered sandbox keys. That is exactly the kind of failure-mode context an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core definition, then return fields, then feature-gate and auth caveats. Every sentence carries information, though the embedded JSON inference-config example and the double auth sentence make it denser than strictly necessary for a zero-arg list call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by describing the return payload (per-model fields plus limits, ONNX operators, and readable request fields). With gating, auth, and the pricing-function linkage all covered, an agent has everything needed to call this and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the 4 baseline applies; the description correctly spends no words on parameter syntax. It does add meaning about the response shape, though that registers under completeness rather than parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource plus scope ('your workspace's hosted pricing models'), and defines what a hosted model is (trained here on quote outcomes or uploaded as ONNX). It also enumerates the fields returned (id, name, kind, active/latest version, nightly retrain flag), which cleanly separates it from single-record siblings like get_hosted_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the use case clearly by noting the returned model ids are what a pricing function references in its inference config ({"provider": "last-price", "model": "<model id>"}), so an agent knows to call this before wiring a function. It stops short of explicit exclusions or naming alternatives such as get_hosted_model or create_hosted_model.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_inference_providersA
Read-onlyIdempotent
Inspect

See which model providers your workspace has connected for pricing functions that run on a model, and whether key storage is available. Status only: the keys are write-only and never returned. Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read, yet the description adds genuinely new behavior: keys are write-only and never returned, a workspace-settings-read credential is required, and a self-registered sandbox key is refused with 403 until the workspace is claimed. That 403/claim nuance is exactly the kind of failure mode an agent cannot infer from schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct load (capability, non-return of keys, auth prerequisites). Mildly dense phrasing in 'pricing functions that run on a model' but nothing is wasted or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does convey the shape of what comes back (connected providers plus key-storage availability), and it covers auth and workspace-claim gating. A brief note on ordering or pagination is the only omission, and with zero params that is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema baseline is high; there is nothing parameter-related to compensate for and the description correctly does not invent any. No credit for extra parameter meaning is possible here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource: lists model providers connected to the workspace and whether key storage exists. It implicitly distinguishes itself from inventory-style siblings like list_hosted_models by scoping to 'providers ... for pricing functions that run on a model', but never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use signals (checking connection status and key-storage availability) and an implicit when-not ('Status only: the keys are write-only and never returned') that steers agents away from using it to retrieve credentials. Prerequisites are spelled out, but no sibling tool is named as the alternative for the adjacent task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invitationsA
Read-onlyIdempotent
Inspect

List the invitations still waiting to be accepted: email, role and when each was sent. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: exact auth header, required scope, the caller's role constraint, rejection of OAuth tokens and other keys, and the specific 403 failure mode for unclaimed sandbox workspaces. That is the kind of failure-path detail an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then auth, then workspace precondition. Dense but no filler; 'a token or any other key is refused' borders on redundant with the preceding scope statement but usefully rules out the OAuth path.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description names the returned fields (email, role, sent timestamp) and covers both auth and workspace-state preconditions that produce distinct error codes. Nothing material for a correct call is left out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; the description correctly implies no filtering or pagination inputs are needed and instead spends its words on auth and response fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause names a specific verb and resource and narrows scope to invitations 'still waiting to be accepted', which cleanly separates it from list_team_members (accepted members) and revoke_invitation (mutation). It also enumerates the returned fields, so an agent knows exactly what it gets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prerequisites are stated with unusual precision: x-api-key with team:admin scope, held by a current owner/admin, and a claimed workspace or a 403. What's missing is an explicit alternative ('for accepted members use list_team_members'), so the when-to-use signal is implied by the resource scope rather than named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesA
Read-onlyIdempotent
Inspect

List your workspace's invoices, newest first: each one's id, customer, number, status, amount, currency and due date. Pass customer_id for one customer. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many rows to return. Defaults to 100.
offsetNoHow many rows to skip, for the next page. Defaults to 0.
customer_idNoOnly this customer's rows: the customer UUID.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, but the description adds meaningful operational context beyond them: required credential scope, claimed-workspace requirement, and the exact 403 failure mode for sandbox keys. It also discloses ordering and returned fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with no waste, front-loading the resource, ordering, fields, filter, and prerequisites in a logical sequence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with full schema description coverage and no output schema, the description covers what is returned, how to filter, ordering, and credential/workspace prerequisites. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so limit, offset, and customer_id are already fully documented in the schema. The description reinforces customer_id as a single-customer filter, but it does not add syntax, default behavior, or other meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List ... invoices') plus ordering ('newest first') and the exact fields returned. An agent can distinguish it from get_invoice or create_invoice without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear filtering guidance ('Pass customer_id for one customer') and essential prerequisites: a Last Price credential with billing read scope and a claimed workspace with the specific 403 refusal behavior. It does not explicitly mention alternatives such as get_invoice for a single invoice, so it falls short of a full when/when-not comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_jale_contributionsA
Read-onlyIdempotent
Inspect

List the price data points your workspace has contributed to the shared data exchange, newest first: each one's vertical, source, product, price, currency, quality score, status and the tokens it earned. Filter by status or vertical and page with limit and offset. Free to call. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 50.
offsetNoHow many to skip, for the next page.
statusNoOnly contributions with this status, for example validated.
verticalNoOnly contributions in this vertical.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the readOnly/idempotent annotations by disclosing the sort order (newest first), the cost ('free to call'), and the exact auth failure mode (403 for self-registered sandbox keys until a person claims the workspace) — precisely the context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and returned fields, then filters, then cost and auth. Nothing is redundant with the name or the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so by naming the fields; paging, ordering, cost, and the claim requirement are all covered, so an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the four parameters are already documented in the schema. The description only restates which parameters filter and which page, adding no format or semantics beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the price data points your workspace has contributed to the shared data exchange') and enumerates the fields returned, which distinguishes it from the write-side siblings contribute_price_data / contribute_price_data_batch and from query_jale_pool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the filtering and paging mechanics and an explicit precondition (a claimed workspace; sandbox keys get a 403). It does not name an alternative tool for the read case, but the when-to-use condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_learned_price_changesA
Read-onlyIdempotent
Inspect

List the changes learned pricing recorded for your workspace, newest first: for each product (or all products), the elasticity before and after, an example price before and after, and its status. status pending lists what waits for your decision; pass its id to decide_learned_price_change. A signed webhook announces each one as it happens, with its id. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
limitNoMost changes to return. Defaults to 50.
statusNoOnly changes with this status, e.g. pending.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, read-only, idempotent operation. The description adds valuable context beyond them: newest-first ordering, per-product/all-product scope, the presence of a signed webhook announcing each change, and the required Last Price credential with routing read scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and ordering in the first sentence, then adds only relevant operational details. It is dense but has little wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does a good job enumerating the returned data and ordering, and it covers the required credential and webhook context. It stops short of describing pagination or exact response shape, but is otherwise complete for a two-parameter list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description usefully explains what status=pending means and how its id is used, but it adds little about the limit parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource (learned price changes recorded for the workspace), the verb (list), ordering (newest first), and the fields returned (elasticity before/after, example price before/after, status). It is clearly distinguishable from siblings and explicitly references decide_learned_price_change.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage path: status=pending lists items awaiting a decision, and the id is passed to decide_learned_price_change. It does not explicitly cover when not to use this tool or name other alternatives, but the operational guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_llm_usage_eventsA
Read-onlyIdempotent
Inspect

List the individual model calls behind get_llm_usage, newest first: what each was for, its provider and model, tokens and cost. Filter by operation and by start_date and end_date, and page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 50.
offsetNoHow many to skip, for the next page.
end_dateNoThe end of the period, as an ISO 8601 date and time.
operationNoOnly calls made for this operation.
start_dateNoThe start of the period, as an ISO 8601 date and time.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already cover read-only/idempotent), the description discloses prerequisites an agent cannot infer: a Last Price credential is required, and a sandbox key from self-registration is refused with a 403 until a person claims the workspace. That authentication/eligibility failure mode is exactly the kind of context annotations don't carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose followed by filtering, paging, and then prerequisites in priority order; every clause carries information. It is dense with semicolon-packed sentences, and 'Read-only' repeats the annotation, but there is no real padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return shape (per-call purpose, provider, model, tokens, cost) and ordering, plus auth and workspace-claim requirements. An agent has everything needed to decide, call, page, and anticipate a 403.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description restates the filters (operation, start_date/end_date, limit/offset) without adding format details, range behavior, or how the filters combine, so it adds little beyond the schema baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list individual model calls) and immediately anchors it to the sibling aggregate tool get_llm_usage, clarifying it returns the per-call detail rather than the rollup. Ordering (newest first) and the returned field set (operation, provider, model, tokens, cost) make the tool's role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the choice: use this for the individual calls behind get_llm_usage, implying get_llm_usage for aggregates. It doesn't state a hard when-not condition or mention other adjacent siblings like list_usage_events or get_usage_breakdown, so the routing guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_marketplace_listingsA
Read-onlyIdempotent
Inspect

Browse the public marketplace: the pricing functions their owners listed for anyone to use, each cut to its public fields, with usage and rating. Page with limit and offset. Public: needs no credential, limited per address.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, and the description adds genuine context beyond them: no credential required, rate limiting per address, and that results are truncated to public fields only. That last point is a meaningful data-exposure disclosure. It stops short of describing ordering or default page size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the resource and scope, then pagination, then access constraints. No filler or restated title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully covers what comes back (public fields, usage, rating), how to paginate, and the auth/rate-limit profile. Only minor omissions remain, such as default limit or sort order.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have inline descriptions, so the schema does the heavy lifting. The description's 'Page with limit and offset' only restates the pagination intent without adding format or default details, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Browse') and resource ('public marketplace'), and describes the listed objects as pricing functions with public fields, usage and rating. The word 'public' implicitly separates it from list_my_marketplace_listings, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the paging pattern ('Page with limit and offset') and the access condition ('needs no credential'), which implies when to call it. However, it never states when to prefer list_my_marketplace_listings, get_marketplace_earnings, or discover_offers instead, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_marketplace_listingsA
Read-onlyIdempotent
Inspect

List your own marketplace listings, public or not. Page with limit and offset. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the description only needs to add context. It does: the Last Price credential requirement and the 403 refusal for unclaimed sandbox workspaces are failure modes not derivable from annotations or schema. It omits the return shape, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then paging, then auth prerequisites in four short sentences with no filler. Slightly clipped jargon ("Last Price credential", "claimed workspace") assumes prior context but is not wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two optional parameters, no nested objects, and no output schema, the surface area is small and the description covers access preconditions well. The remaining gap is that nothing indicates what a listing record contains or whether filtering (e.g. by status) is possible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema itself. "Page with limit and offset" only restates that they drive pagination, adding no constraint or interaction detail beyond the schema's min/max bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List your own marketplace listings") plus a scope qualifier ("public or not") that separates it from the sibling list_marketplace_listings, which takes no ownership qualifier. An agent can pick between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Scope ("your own") and the credential/claimed-workspace prerequisites imply when the tool applies, and the 403 note implies a when-not condition. However, it never names an alternative tool (e.g. list_marketplace_listings for public browsing) or states explicitly when an agent should prefer this over that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_negotiationsA
Read-onlyIdempotent
Inspect

Your workspace's negotiations, newest first: what a buyer sees plus the floor and asking price each one opened with. Use it to honour an accepted price at checkout: find the negotiation and charge its agreed price. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 50.
statusNoOnly negotiations in this state.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world behavior, yet the description adds real operational context beyond them: the required 'Last Price credential with routing read scope' and the 403 refusal on unclaimed sandbox workspaces. It also discloses the sensitive ordering/freshness (newest first). It does not mention pagination limits or totals, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool returns, then use case, then prerequisites — a sensible order with no filler. The single caveat is that 'charge its agreed price' could momentarily read as if this tool performs the charge, adding slight ambiguity into an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so at a useful level (what a buyer sees, the floor, the opening ask, newest first). Prerequisites and auth scope are covered; only pagination/volume limits are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both limit and status are fully documented, including the enum values and defaults — so the description need not repeat them. It adds no extra semantics about the parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Your workspace's negotiations, newest first') and goes further to name the fields returned: buyer-visible data plus the floor and asking price each negotiation opened with. That distinguishes it clearly from the singular get_negotiation sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case — locating the negotiation to honour an accepted price at checkout — which tells the agent when this list is the right entry point. It does not explicitly say when to prefer get_negotiation over this list, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notificationsA
Read-onlyIdempotent
Inspect

List your workspace's notifications, newest first, with the unread count: approval requests, disputes, price proposals, email to agent inboxes and, for the agent that owns the workspace, failed webhook deliveries. Pass the next cursor a page returns back as cursor for the next page. Unread is per reader: an agent has one read state for all its keys and tokens, a plain key has its own. Needs a Last Price credential with notifications read scope; the agent that owns the workspace needs none.

NameRequiredDescriptionDefault
limitNoPage size. Defaults to 50.
cursorNoThe next cursor from the previous page, unchanged.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/closed-world annotations: discloses newest-first ordering, that an unread count is included, that unread state is shared across all keys/tokens for an agent but distinct per plain key, and that a Last Price credential with notifications read scope is required (unless the agent owns the workspace). This is exactly the operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with purpose and scope before pagination and auth details; each sentence carries distinct information. It is dense and packs several concerns (content, ordering, cursor, auth) but nothing is redundant enough to cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still covers return shape (newest-first list plus unread count), pagination contract, per-reader unread semantics, and the credential/scope requirement. An agent has everything needed to call it correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit (default 50) and cursor are already documented. The description reiterates cursor reuse ('pass the next cursor a page returns back as cursor') which largely duplicates the schema's 'next cursor from the previous page, unchanged'; it adds little syntax or semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List your workspace's notifications') and enumerates the exact notification categories returned: approval requests, disputes, price proposals, agent-inbox email, and failed webhook deliveries for the workspace-owning agent. This lets an agent distinguish it from siblings like list_approvals or read_my_inbox without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the content enumeration (you get approvals, disputes, proposals, etc. in one feed), which helps an agent decide relevance. However, it never explicitly says when to prefer list_approvals/read_my_inbox or states any exclusion, so routing versus siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_order_linesA
Read-onlyIdempotent
Inspect

List the line items on an order, oldest first: pass order_id. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
order_idYesThe order: its id, as list_orders shows it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read-only' is redundant, but the description adds genuinely non-inferable behavior: the required credential type and the 403 failure mode for sandbox keys from self-registration. Missing are pagination/limit behavior and result-size characteristics for an unbounded list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool returns before the prerequisites. Minor waste in restating 'Read-only' that the annotations already cover.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter list tool with rich annotations and no output schema, the description covers purpose, ordering, credential and workspace gating, and the specific 403 failure. What remains thin is the shape of returned line items and any result-size limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage and a single required uuid parameter already documented ('The order: its id, as list_orders shows it'), 'pass order_id' adds nothing new. The only extra semantic content, ordering 'oldest first', describes output rather than the parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus a scope detail: 'List the line items on an order, oldest first.' An agent can distinguish it from get_order (single order) and list_orders (orders, not lines). It does not explicitly name a sibling alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear invocation context ('pass order_id') and, more usefully, the prerequisites that select whether the call can be made at all: a Last Price credential and a claimed workspace. It does not explicitly say when to prefer this over get_order or add_order_line, but the read context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ordersA
Read-onlyIdempotent
Inspect

List the orders in your workspace, newest first, or only one customer's with customer_id. Page with limit and offset. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return.
offsetNoHow many to skip, for the next page.
customer_idNoThe customer: its id, as list_customers shows it.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent, and the description goes well beyond them: it discloses the default sort order, the paging model, the required credential, and a concrete failure mode (403 for sandbox keys from self-registration until the workspace is claimed). That 403 behavior is exactly the kind of runtime trait an agent needs and cannot get from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct information: purpose, filtering, paging, safety, then prerequisites. Nothing is repeated and the most decision-relevant facts come first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter list tool with a fully described schema and read-only annotations, everything an agent needs to call it correctly is present: ordering, paging, filter semantics, auth requirement, and the workspace-claim failure case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds the joint paging semantics ('page with limit and offset') and clarifies that customer_id narrows the result to one customer's orders rather than being a required filter. That is modest but real value above the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource ('List the orders in your workspace') and adds scope details: default ordering (newest first) and an optional customer filter. It never names a sibling such as get_order or list_order_lines, so an agent must infer the boundary from the schema, but the listing purpose itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: use it for a whole-workspace listing, add customer_id for a single customer, and page with limit/offset. It also states prerequisites (credential, claimed workspace) up front, which steers the agent before invocation, though it does not explicitly exclude or point to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_outcomesA
Read-onlyIdempotent
Inspect

Read your workspace's outcome pricing: whether it is on, its terms, counts of open, accepted and rejected windows with the total refunded, and the windows themselves, newest first. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost windows to return. Defaults to 50.
statusNoOnly open windows, or only decided ones. Both by default.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds real value beyond them: required credential scope, the claimed-workspace requirement with the specific 403 failure mode for self-registered sandbox keys, and the newest-first ordering of results. Those are exactly the operational traits an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The return payload is front-loaded in the first sentence and the prerequisites follow, so the agent gets the core purpose immediately. The enumeration of window counts is a touch long, but each clause maps to a distinct piece of returned data rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what comes back (settings, terms, counts, refund total, window list) and covers auth and workspace-claim failure modes. It does not mention pagination behavior beyond the limit cap, a small gap for a list tool that could return up to 200 windows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so limit (default 50, max 200) and the open/decided status enum are already fully documented. The description adds only the ordering ('newest first') and clarifies that accepted/rejected windows are subsets of the decided status, which is a marginal gain over the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (workspace outcome pricing) and enumerates the returned content: on/off flag, terms, counts of open/accepted/rejected windows, total refunded, and the windows themselves. That distinguishes it cleanly from the mutating sibling report_outcome without needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions — a Last Price credential with price compute scope, and a claimed workspace (sandbox keys get 403) — which tells the agent exactly when the call will fail. It does not name an explicit alternative or exclusion (e.g., report_outcome for writing outcomes), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_paymentsA
Read-onlyIdempotent
Inspect

List your workspace's payments, newest first: each one's id, invoice, customer, amount, currency, status and method. Pass customer_id for one customer, or status for pending, completed or refunded payments. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many rows to return. Defaults to 100.
offsetNoHow many rows to skip, for the next page. Defaults to 0.
statusNoOnly payments in this state.
customer_idNoOnly this customer's rows: the customer UUID.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive) it discloses sort order, the required credential and scope ('Last Price credential with billing read scope'), and a concrete failure mode: sandbox keys from self-registration get a 403 until the workspace is claimed. That is exactly the kind of operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned and in what order, then filters, then prerequisites. The list of seven returned fields is slightly long but is the only place that information exists (no output schema).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields; with read-only annotations, it still adds auth scope and the 403 workspace-claiming precondition. An agent has everything needed to call this successfully or diagnose a refusal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, status and customer_id are already documented with defaults and enum values. The description restates the filter semantics for customer_id and status but adds nothing on pagination behavior or amount/currency formatting, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List your workspace's payments') with scope (workspace), ordering (newest first) and an enumeration of returned fields. An agent can immediately distinguish this from get_payment, which fetches a single payment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to pass customer_id for a single customer and status for filtering by state, giving concrete usage conditions. It stops short of naming alternatives (e.g. use get_payment for one record) or stating when not to use it, so it falls just short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_payout_runsA
Read-onlyIdempotent
Inspect

List your workspace's marketplace payout runs, newest first: each run's id, status (a dry run, awaiting approval, rejected, stale, approved, processing, partial, paid or failed), period, total, Stripe mode, the transfers it plans and the entries it skips, who requested it and who decided it. execution says whether payout runs are switched on for your workspace and whether Stripe is ready. They are not switched on for every workspace yet: while they are off for yours, execution.enabled is false and no runs are listed. Needs a Last Price credential with billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many runs at most, newest first. Defaults to 20.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent and closed-world, but the description adds real behavioral context: the paywall/gating condition (execution.enabled), the 403 refusal for unclaimed self-registration sandbox keys, the required billing-read scope, and the fact that Stripe readiness is reported alongside results. None of that is derivable from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and ordering are front-loaded, and the long status enumeration is genuinely informative rather than filler. It is dense but every sentence carries a constraint or a return-field hint; only the status list could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return shape — and it does, enumerating the fields returned per run (id, status, period, total, Stripe mode, planned transfers, skipped entries, requester/decider) plus the execution block. Combined with the stated auth and workspace prerequisites, an agent has everything needed to call it and interpret an empty result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single optional 'limit' parameter is fully documented with default and bounds in the schema. The description adds nothing about pagination or the limit semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('List your workspace's marketplace payout runs') plus ordering ('newest first'), and the plural/collection scope clearly separates it from the sibling get_payout_run. An agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong on when-not: it states that runs are gated per workspace and that execution.enabled=false means no runs are listed, and it spells out the credential scope and claimed-workspace requirement. It stops short of naming alternatives (e.g. get_payout_run for a single run, request_payout_run to create one), so it is clear context rather than a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_price_checksA
Read-onlyIdempotent
Inspect

The workspace's price history: every price from a photo, link, PDF or text, newest first, whichever way it was asked (surface app for the phone app or website, api, or mcp for a chat app such as ChatGPT or Claude). Each check has its id, created_at, the item, side (selling or buying), the price with its low to high range and currency, confidence (0 to 1) and share_url. Use it to know what the person has already priced, for example to answer "what did I price last week" or before pricing the same thing again. q finds checks by words in the item's name; limit (1 to 100, default 20) sets the page size, and before takes the next_before of the last page for older checks (next_before is null on the last page). get_price_check gives one check's whole answer. Changes nothing. Until price history is switched on for your workspace it answers 404 not_released. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
qNoWords in the item's name, for example "lamp" or "iphone".
limitNoHow many checks, 1 to 100. Defaults to 20.
beforeNoThe next_before of the last page, for older checks.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/destructive annotations it discloses preconditions an agent cannot otherwise know: a Last Price credential with price compute scope, a claimed workspace (sandbox keys get 403), and a 404 not_released response until price history is enabled. It also documents pagination mechanics (before/next_before, null on last page) and the full return field list, which matters since there is no output schema. 'Changes nothing' repeats the annotation but the surrounding context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded, then usage, then parameters, then error modes — a sensible order. It is dense and slightly long, with a couple of clauses (surface enumeration, 'Changes nothing') that are nice-to-have rather than load-bearing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates the returned fields (id, created_at, item, side, price range, currency, confidence, share_url) and covers pagination, auth scope, workspace claiming, and the not-released failure mode. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value beyond it: q is described as word matching on the item's name, and 'before takes the next_before of the last page' explains the cursor's origin in a way the schema's 'next_before of the last page' only partially conveys. The limit range/default restates the schema and earns nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope (the workspace's price history, every price from a photo/link/PDF/text, newest first) plus the surface dimension (surface app/api/mcp). It explicitly separates itself from the sibling get_price_check, which returns 'one check's whole answer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use contexts ('what did I price last week', 'before pricing the same thing again') and names the alternative tool (get_price_check) with the condition that selects it. Nothing is left to inference about when to pick this vs. the single-record reader.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pricing_pipelinesA
Read-onlyIdempotent
Inspect

See the multi-step pricing pipelines Last Price publishes and the stages they are built from: for each reference pipeline its name, what it is for, its topology, latency and cost ceilings, the consent it needs and the trust zones it may run in, and the stage catalogue with each stage's layer and tags. To run one without a key, use run_reference_pipeline once it is switched on (until then it answers 501 pipeline_execution_unavailable rather than a simulated price). To price an item from photos use price_from_capture; to price from numbers use compute_price, or run_pricing_chain for a chain you define. Public: needs no credential.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the description earns credit for what it adds: 'Public: needs no credential' and the fact that this only publishes catalogue metadata rather than executing anything. The note that run_reference_pipeline returns 501 pipeline_execution_unavailable instead of a simulated price is a genuinely useful anti-hallucination guard. Minor gap: no statement about size/limits of the returned catalogue or whether results can change over time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose in the opening clause, then alternatives, then the public/no-key note — a sensible order. The first sentence is a long run-on enumeration and the 501 detail about a sibling tool is slightly more than strictly needed, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no input schema to speak of and no output schema, the description carries the return shape entirely and does so field by field, while also covering auth (public, no credential), read-only semantics and sibling routing. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline of 4 applies. The description correctly implies an unfiltered full listing with nothing to configure, matching the empty object schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('see the multi-step pricing pipelines ... and the stages') and then enumerates exactly what each record carries: name, purpose, topology, latency/cost ceilings, consent, trust zones, plus a stage catalogue with layer and tags. That detail distinguishes it unambiguously from run_reference_pipeline, compute_price and price_from_capture in the same namespace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives with conditions: run_reference_pipeline to execute (with the caveat that it 501s until switched on), price_from_capture for photo input, compute_price for numeric input, run_pricing_chain for custom chains. Both the 'use this when' and 'use something else when' sides are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_product_categoriesA
Read-onlyIdempotent
Inspect

List your workspace's products with the category confirmed or suggested for each, the category tree, and per category how many outcomes your own products in it have toward the 30 an estimate needs (an inferred outcome counts half). A suggestion comes from the product's name and is not stored until confirmed with set_product_category. Only your workspace's own data is read or shown. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, openWorldHint=false, idempotentHint), it discloses two things the schema cannot: a required Last Price credential scope and the specific failure mode of a self-registered sandbox key returning 403 until a person claims the workspace. It also explains scoring rules (inferred outcome counts half). The 'only your workspace's own data' sentence partly restates openWorldHint=false, keeping this from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every following sentence adds new information (scoring rule, confirmation path, credential scope, 403 behavior) with no filler. The opening sentence is overloaded with three stacked clauses, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe what comes back, and it does: products with categories, the category tree, and per-category outcome counts. Combined with the auth and error prerequisites, an agent has everything needed to decide whether it can call this and how to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description instead spends its budget on return semantics, which is the right trade-off.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (list the workspace's products) and then enumerates exactly what each row carries: confirmed/suggested category, the category tree, and per-category outcome counts. It also names the write counterpart set_product_category, so an agent can tell this read tool apart from the mutation sibling without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent that a suggested category is not stored until confirmed via set_product_category, which is a clear routing rule. It also states the prerequisites for calling it (routing read scope, a claimed workspace). It does not contrast against other listing tools such as list_commerce_catalog, so the guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_receiptsA
Read-onlyIdempotent
Inspect

Get receipts for many of your workspace's priced calls at once, as one statement with totals: name up to 50 usage event ids, or a period (this calendar month by default, at most 366 days), optionally for one function or agent. A period statement also counts, for each agent, the value signals set up in Settings, Value receipts. Receipts are made only when you ask. For CSV or a printable page, call GET /api/receipts with format=csv or format=html. Needs a Last Price credential with price compute or billing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
idsNoUp to 50 usage event ids, comma separated. Send ids or a period, not both.
limitNoReceipts per page for a period. Defaults to 100.
offsetNoReceipts to skip for a period. Defaults to 0, at most 1000000.
agent_idNoOnly calls made by this agent. A key bound to an agent always gets only its own calls.
end_dateNoEnd of the period, ISO 8601. Defaults to now.
start_dateNoStart of the period, ISO 8601. Defaults to the first of this month (UTC).
function_idNoOnly calls priced by this function.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds real behavioral context: required credential scopes ('price compute or billing read scope'), the workspace-claim prerequisite with the exact 403 failure mode for sandbox keys, the fact that receipts are generated on demand ('Receipts are made only when you ask'), and the per-agent value-signal accounting. These are things an agent cannot learn from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and the two modes, then progressively adds constraints, output alternatives, and auth prerequisites. It is dense but almost every clause carries new information; the auth/claims sentences at the end are long but justified for a tool that 403s on unclaimed workspaces.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description gives only a partial picture of the return shape ('one statement with totals'), which is the main remaining gap. Otherwise it covers paging limits, defaults, auth scopes, workspace prerequisites, and the CSV/HTML escape hatch, which is 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3; the description goes modestly beyond it by framing the ids-vs-period choice, restating period defaults and the 366-day cap, and explaining what the agent filter means ('A period statement also counts, for each agent, the value signals set up in Settings, Value receipts'). It does not discuss limit/offset paging in prose, so it is not fully additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get receipts for many of your workspace's priced calls at once, as one statement with totals') and the two selection modes, which implicitly separates it from the single-record get_receipt sibling. It never names a sibling tool explicitly, so an agent must infer the boundary rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use conditions: either up to 50 event ids or a period, 'Send ids or a period, not both', with the period defaulting to this calendar month and capped at 366 days, plus optional narrowing by function or agent. It also routes the agent elsewhere for non-JSON output ('For CSV or a printable page, call GET /api/receipts with format=csv or format=html'). No explicit when-not-to-use versus list_usage_events or get_receipt, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reelsA
Read-onlyIdempotent
Inspect

List the reels: short recipes for real tasks done with Last Price (price a SaaS seat, check a vendor quote, find an offer for a task), with the tools each one calls. A reel is the agent-readable alternative to a demo video: read one with get_reel and it runs live. Public: needs no credential. Until it is switched on it answers not released.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (read-only, idempotent, closed-world), so the description earns credit for adding two things annotations can't express: no credential needed, and the failure mode 'until it is switched on it answers not released'. That pre-emption of a surprising empty/error response is genuinely useful; only the lack of any signal about result size or ordering holds it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the definition and ending with the operational caveat, so the most important information comes first. The parenthetical examples ('price a SaaS seat, check a vendor quote...') are helpful but slightly lengthen an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does describe the return shape qualitatively ('with the tools each one calls'), and it explains the not-released state an agent will hit. It doesn't mention pagination or the fields of each listed reel, a minor gap for a list tool, but nothing needed to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing to document and the baseline of 4 applies. The description sensibly spends no words on parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the reels') and immediately defines what a reel actually is, including example topics. It clearly distinguishes itself from the sibling get_reel by noting reels are 'read with get_reel and it runs live', so an agent knows this is the browse step, not the execution step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The reference to get_reel makes the workflow implied: list first, then fetch and run one. It also states the 'public: needs no credential' precondition. It stops short of explicitly saying when to prefer this over other catalog-style siblings such as browse_catalog or list_demo_apps, but the intended usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rosetta_reviewA
Read-onlyIdempotent
Inspect

List the mappings Rosetta held back for a person or agent to approve: each one's source, proposed canonical field, confidence and status. Pass status pending, approved or rejected to filter; with none you get all of them. Read-only. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
statusNoOnly mappings with this status.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only/idempotent, but the description goes further: it names the required credential, the claimed-workspace requirement, and the concrete failure mode (sandbox key from self-registration is refused with 403 until a person claims the workspace). That 403 detail is exactly the kind of auth/error context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what is listed, then how to filter, then the two gating conditions. The only slack is 'Read-only,' which restates readOnlyHint=true, though placing it with the auth constraints reads naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional-enum parameter with no output schema, the description supplies the return shape, the filter default, and both access prerequisites including a specific error code. Nothing an agent needs in order to call this correctly and interpret a 403 is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enum values are already documented; the description adds the non-obvious default semantics — that omitting status returns all statuses rather than none. That is genuine meaning beyond the schema's 'Only mappings with this status.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the mappings Rosetta held back'), plus scope ('for a person or agent to approve') and the exact fields returned (source, proposed canonical field, confidence, status). This clearly separates it from the decision sibling decide_rosetta_review, which acts on a single mapping rather than enumerating them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit filter behavior — pass pending/approved/rejected to narrow, omit to get everything — and states two hard prerequisites (Last Price credential, claimed workspace). It doesn't explicitly say 'to approve a mapping, use decide_rosetta_review,' so the sibling routing is only implied by the word 'approve'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_routing_policiesA
Read-onlyIdempotent
Inspect

List your workspace's routing policies: each one's id, name, strategy, config, fallback function, and whether it is the default. Only the default policy is used when a price is computed without naming a function. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the description doesn't need to re-state safety; instead it adds the auth prerequisite ('Last Price credential with routing read scope') and the semantic rule that only the default policy applies when no function is named. Both are real operational context an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the resource and returned fields, and every clause carries information. The final default-policy sentence is slightly tangential to a read-only listing but justifies itself as domain context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no params, the description compensates by naming the fields returned and stating the credential/scope needed to call it — everything an agent needs before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies; the description correctly adds no parameter guidance because there is nothing to configure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (workspace's routing policies) and enumerates exactly what each item contains — id, name, strategy, config, fallback function, is-default — which cleanly separates it from the singular get_routing_policy sibling. An agent can predict both scope (workspace-wide) and payload shape from the first sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'List your workspace's routing policies' and the credential note, but it never says when to reach for this over get_routing_policy (single fetch) or update_routing_policy, nor any exclusion. The default-policy sentence is domain context rather than a use/avoid rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scrape_job_runsA
Read-onlyIdempotent
Inspect

List the runs of one scrape job, newest first: when each ran, its status and the prices it found. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:catalog:read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost runs to return. Defaults to 20.
job_idYesThe scrape job UUID: id on a list_scrape_jobs result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses the exact failure modes (501 hosted_scraping_not_enabled until the flag is on, 403 for unclaimed sandbox workspaces), the authorization scope needed, and the crawl constraints (honours robots.txt, public https pages only). These are operational facts an agent cannot obtain from the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and ordering are front-loaded in the first sentence, and the remaining sentences each carry a distinct prerequisite (flag, robots/https, credential scope, claimed workspace). Dense but no sentence is filler; the prerequisites are somewhat compressed into a run of 'Needs...' statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still tells the agent what a run record contains, and it covers activation state, authorization, and workspace-claim prerequisites that would otherwise cause silent failures. Nothing an agent needs in order to call this correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in the schema, including the limit's default of 20 and maximum of 100 and job_id's uuid format and origin. The description adds only the 'newest first' ordering context, not per-parameter meaning, so this sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the runs of one scrape job') plus the scope and ordering ('newest first') and what each run carries (time, status, prices found). That is enough to distinguish it from list_scrape_jobs (which lists jobs) and run_scrape_job (which executes), without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions for use: it only works once the hosted-scraping release flag is on, requires a commerce:catalog:read credential, and requires a claimed workspace or it answers 403. It does not explicitly route the agent between this and alternatives like preview_scrape_job or run_scrape_job, so it stops short of a full when/when-not treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scrape_jobsA
Read-onlyIdempotent
Inspect

List your workspace's hosted price scrape jobs: each one's id, name, page url, selectors, schedule and whether it is enabled. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:catalog:read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and closed-world, so safety is covered. The description adds real operational context beyond that: the feature-flag gate with its exact error code, the auth scope required, the workspace-claim requirement with its 403, and the robots.txt/public-https constraint on the underlying scrapes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences with no filler; the payload description comes first, then gating and auth prerequisites. The robots.txt/https sentence is about the scrapes themselves rather than the listing call, a mild tangent, but it is one clause and does inform what the listed jobs do.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the full burden and does: it lists returned fields, the flag-gated failure mode, auth scope and workspace-claim requirement. An agent knows whether it can call this and what it will get back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description usefully redirects that space into describing the shape of each returned record, which the absent output schema does not cover.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ("List your workspace's hosted price scrape jobs") and enumerates exactly what each record carries: id, name, page url, selectors, schedule, enabled. It never names the nearest siblings (list_scrape_job_runs, create_scrape_job, delete_scrape_job), so the agent must infer the boundary between listing jobs and listing their runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for a successful call: release flag must be enabled (else 501 hosted_scraping_not_enabled), a Last Price credential with commerce:catalog:read, and a claimed workspace (sandbox key gets 403). It stops short of naming alternatives for related tasks such as inspecting run history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_storefront_dns_recordsA
Read-onlyIdempotent
Inspect

List the DNS records of a domain your workspace registered through Last Price. locked marks the records the storefront needs. A domain bought elsewhere is refused: manage its DNS where it was bought. Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domain_idYesThe domain id, from list_storefronts or add_storefront_domain.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive behavior. The description adds material context beyond annotations: domain provenance restriction, the meaning of the locked marker, required credential scope, and a specific 403 refusal for unclaimed workspaces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, each carrying distinct information: purpose and scope, locked marker, external-domain refusal, and prerequisites. The core purpose is front-loaded with no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only two-parameter list tool, the description covers domain provenance, authorization, workspace status, and a key returned field. It lacks any note on pagination or the general shape of returned records, which would complete the picture given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both UUID parameters already document where their values come from. The description does not add per-parameter syntax or meaning beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: list DNS records for a domain. It also narrows scope to domains registered through Last Price, which distinguishes it from general DNS management. It does not explicitly name the add/remove/verify DNS siblings, so it falls short of a 5 on sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-not guidance: domains bought elsewhere are refused and their DNS should be managed at the registrar. It also states two prerequisites, a Last Price credential with workspace settings read scope and a claimed workspace, with the 403 consequence for sandbox keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_storefront_domain_quotesA
Read-onlyIdempotent
Inspect

List a storefront's domain quotes and registrations: domain, years, price, and quoted, ordered, failed or expired. Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnly/idempotent/non-destructive. The description adds real behavioral context beyond them: required credential scope and the 403 refusal for unclaimed sandbox workspaces. It doesn't mention pagination or ordering, but the auth/workspace gates are exactly the kind of context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose and returned fields before the prerequisites. No filler; each sentence carries distinct information. The status enumeration is slightly dense but readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so the description usefully enumerates the returned fields and statuses itself. Combined with the auth/workspace prerequisites, an agent has enough to call it and interpret the response; ordering/pagination behavior is the only notable omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage; the schema already explains storefront_id and where to get it (list_storefronts). The description adds nothing about the parameter, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'List a storefront's domain quotes and registrations', plus an enumeration of returned fields (domain, years, price, status). It is clearly distinct from quote_storefront_domain (which creates a quote) and search_storefront_domains, but it never names those siblings explicitly, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states prerequisites (Last Price credential with workspace settings read scope; a claimed workspace) which is useful context. However, it doesn't say when to use this versus search_storefront_domains or quote_storefront_domain; usage is only implied by the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_storefrontsA
Read-onlyIdempotent
Inspect

List your workspace's storefronts: each one's subdomain, name, whether it is published, what it lists (functions, products open to offers, tag and product filters), its own domains with their DNS records and status, and the addresses agents use (page, agent card, llms.txt, MCP). Also the limits and a suggested subdomain. A storefront is your own front door for agents at .store.last-price.ai or a domain you own. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations it discloses error codes, the 403 sandbox-key refusal, and the required credential scope — the exact behaviors that cause silent failures elsewhere. This is precisely the extra context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and its returned fields, then appends constraints in descending priority. The middle enumeration is a long run-on list, slightly dense, but every clause carries real information; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by enumerating the returned structure (subdomains, domains, DNS, agent addresses, limits, suggested subdomain). Combined with the auth and error semantics, an agent has everything needed to call it and interpret failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing to disambiguate and the schema has no burden to compensate for. The description instead spends its words on return shape, which is the right trade.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List your workspace's storefronts') and immediately enumerates the fields returned, so the agent knows exactly what it gets. It also defines what a storefront is, which separates it from billing/domain siblings like get_storefront or add_storefront_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions — storefronts feature switched on, workspace-settings read scope, claimed workspace — and the failure mode (error code not_released, 403 for sandbox keys). It does not explicitly contrast with get_storefront (single) or create_storefront, so routing between siblings is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_team_membersA
Read-onlyIdempotent
Inspect

List the people in your workspace and their roles. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial context beyond them: the required x-api-key with team:admin scope, the requirement that the key's creator still be an owner/admin, that plain tokens are refused, and the 403 on sandbox keys for unclaimed workspaces. These are exactly the failure modes an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the core behavior front-loaded and the permission preconditions following. Slight redundancy in the 'a token or any other key is refused' clause, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param read tool with strong annotations this is close to complete: preconditions and rejection modes are covered. The only gap is that the return shape (beyond 'people and their roles') and any result-size limits are unstated, and there is no output schema to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the 4 baseline applies; the description correctly adds nothing about arguments. It does not need to compensate for any schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb+resource ("List the people in your workspace and their roles") leaves no ambiguity about the operation or what it returns. It does not explicitly name a sibling such as list_invitations or add_team_member, but the name/scope make the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent infers this is the read-only enumeration versus change_team_member_role / invite_team_member / remove_team_member. There is no explicit 'use X when Y' routing, though the auth gating effectively tells the caller the preconditions for it succeeding at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ucp_checkoutsA
Read-onlyIdempotent
Inspect

List your workspace's UCP checkout sessions, with each one's id, status and totals. Read-only. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint, so restating 'Read-only' earns little, but the description adds real operational context the annotations lack: required credential scope and the concrete 403 failure mode for sandbox keys from self-registration. It does not mention result limits or pagination behavior, which for a list tool is a 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is listed and what comes back before the prerequisite details. The 'Read-only' clause duplicates the annotation and is the one sentence that does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by naming the returned fields; auth and workspace-claim requirements are spelled out, including the 403 condition. Remaining ambiguity is around result volume/pagination, which is not addressed for a listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline applies. The mention of returned fields (id, status, totals) adds orientation even though no inputs exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('UCP checkout sessions') scoped to 'your workspace', and enumerates the returned fields (id, status, totals). The plural/list framing makes it distinguishable from get_ucp_checkout and create_ucp_checkout without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions for use: a Last Price credential with price compute scope, and a claimed workspace. It does not name an alternative tool or an explicit when-not-to-use condition (e.g. directing to get_ucp_checkout for a single session), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usage_eventsA
Read-onlyIdempotent
Inspect

List your workspace's priced calls, newest first: each one's id (what report_outcome takes to report it), function, cost, the price given and the inputs it was given for, and who sent it. Pass buyer_agent verified for only the calls whose buying agent proved who it was with an AgentID token. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoPage size. Defaults to 50.
offsetNoCalls to skip. Defaults to 0, at most 1000000.
end_dateNoOnly calls up to this time, ISO 8601.
start_dateNoOnly calls from this time on, ISO 8601.
buyer_agentNoverified: only calls whose buying agent proved who it was with an AgentID token. Defaults to all.
function_idNoOnly calls priced by this function.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: newest-first ordering, a hard 403 failure mode for unclaimed sandbox workspaces, and an explicit credential requirement. Those are exactly the operational facts an agent needs before calling and could not learn from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph, front-loaded with purpose and returned fields before prerequisites. A few phrases are wordy ('the price given and the inputs it was given for'), but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description's enumeration of returned fields carries real weight, and it covers ordering, auth, and the workspace-claim prerequisite. Coverage is solid for a 6-parameter read-only list; only the relationship to sibling listing tools is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, date bounds, function_id, and the buyer_agent enum are already fully documented. The description echoes the buyer_agent=verified semantics without adding syntax or defaults beyond the schema, so the schema does the heavy lifting and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List your workspace's priced calls, newest first') and enumerates exactly what each record contains (id, function, cost, price, inputs, sender). This is far more than a restatement of the name. It does not, however, contrast itself with nearby siblings such as list_costs, list_outcomes, or list_llm_usage_events, so the agent must infer which listing tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives prerequisites (Last Price credential, a claimed workspace, 403 for sandbox keys) and hints at the downstream use of the returned id by report_outcome, which implies the workflow. But it never says when to choose this over the other usage/cost listing tools, so selection 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.

list_vendor_adaptersA
Read-onlyIdempotent
Inspect

See which outside pricing engines (vendor adapters, such as Pricefx and Prisync) this deployment has switched on. Each one lists its function name, its vendor and whether it is ready; one that is not says whether the adapters are off or that adapter is not configured. Read only: it never shows a setting value. A ready adapter is priced through by naming its function when computing a price, never by automatic routing. Needs a Last Price credential with function read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it specifies the required Last Price credential with function read scope, the workspace-claim prerequisite with the concrete 403 failure mode for sandbox keys, and that setting values are never returned. With readOnlyHint already covering safety, this is meaningful added context; only the lack of any pagination/volume behavior keeps it from top marks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then layers output shape, invocation caveat, and auth prerequisites. Each sentence carries distinct information, though the credential and workspace-claim sentences are dense and could be split or slightly trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully carries the burden: it enumerates returned fields and explains the negative states (adapters off vs. adapter unconfigured), plus auth scope and the 403 workspace-claim failure. An agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline this is a 4. The description adds no parameter-level detail, which is appropriate since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (see which) and resource (outside pricing engines / vendor adapters), and names concrete examples (Pricefx, Prisync) plus the returned fields (function name, vendor, ready status). It implicitly separates itself from list_functions and routing by noting adapters are invoked by naming a function, but it does not explicitly name a sibling to disambiguate against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the operational context: a ready adapter is used by naming its function in compute_price, never by automatic routing, which tells the agent what this listing is for and what it is not. There is no explicit 'when not to use' or alternative tool named, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_verification_strategiesA
Read-onlyIdempotent
Inspect

List what a price verification can stand on: the verdicts it can give (fair, too high, too low or unknown) and the evidence strategies a verdict is checked against. Use it at planning time, before you call verify_price. Public: needs no credential.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world. The description adds auth context ('Public: needs no credential'), which the annotations do not convey, and clarifies that this is a discovery step rather than a computation. It stops short of describing the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the returned content and then the usage trigger. Every clause carries information; nothing is repeated from the title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns, and it does so at the semantic level (verdict set plus evidence strategies). The exact response shape and field names remain unspecified, a minor gap for a simple enumeration tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so parameter semantics are a non-issue; the baseline for 0 params applies. The description does not need to explain inputs, and correctly spends its words on output content instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List') and enumerates the content it returns: the verdicts (fair, too high, too low, unknown) and the evidence strategies. It also names the downstream sibling verify_price, so the tool is distinguishable without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('at planning time, before you call verify_price') and routes the agent to the correct alternative for the actual verification work. No ambiguity about when to call it versus verify_price.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhook_deliveriesA
Read-onlyIdempotent
Inspect

List recent delivery attempts across your workspace's webhook endpoints, newest first: the event, the status your endpoint answered with and when. Use it to find an endpoint that is failing. Needs a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoMost deliveries to return. Defaults to 50.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses the real operational friction: the key must have no scope limits or be a person's sign-in, and an unclaimed-workspace sandbox key is refused with 403 until a person claims it. That is auth and failure-mode information an agent cannot get from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct information: what it returns, when to use it, and the prerequisites. Scope and ordering are front-loaded with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter list tool with no output schema, the description supplies the return contents, sort order, purpose, and access preconditions. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'limit' parameter is fully documented in the schema (default 50, max 200) and the description adds nothing about it. With 100% schema coverage the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List recent delivery attempts across your workspace's webhook endpoints') plus ordering ('newest first') and returned fields. This cleanly distinguishes it from sibling list_webhooks (which lists endpoints) and ping_webhook/verify_webhook_signature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to find an endpoint that is failing' gives a concrete scenario for reaching for this tool over the others. No explicit exclusions or named alternatives, so it stops short of the 5 tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhooksA
Read-onlyIdempotent
Inspect

List your workspace's outbound webhook endpoints: each one's id, url, events, status and signing secret (whsec_...; the secret is how you verify the x-lastprice-signature header on what it receives). Needs the owner or admin role, and a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavioral context: required role, key-scope constraint, and the 403 refusal for unclaimed sandbox workspaces. It also discloses that a signing secret (whsec_...) is returned and explains its purpose in verifying the x-lastprice-signature header, which is exactly the kind of sensitive-return detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is listed and what comes back, then prerequisites. The parenthetical about the signature header is compact and adds genuine value rather than padding, so every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden itself and does so by naming each returned field. Combined with auth requirements and the 403 edge case, an agent has everything it needs to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate; the baseline of 4 applies. The description correctly refrains from inventing parameter behavior and instead spends its words on return contents and preconditions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List your workspace's outbound webhook endpoints') and enumerates exactly what each entry contains (id, url, events, status, signing secret). The mention of endpoint configuration rather than delivery attempts implicitly separates it from the sibling list_webhook_deliveries, so an agent can pick correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for calling: owner/admin role, a key with no scope limits or a person's sign-in, and a claimed workspace with an explicit 403 outcome for sandbox keys from self-registration. It does not name alternative tools (e.g. list_webhook_deliveries when the agent actually wants delivery history), which keeps it out of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_offerAInspect

Name a price for a seller's product and get the answer: accept, counter or reject, with the price and the reason. The first offer opens a negotiation and returns a buyer token, once: keep it. To make the next offer in the same negotiation, pass negotiation_id and buyer_token too. buyer_ref is an optional opaque reference for the seller and never a name or email. The seller's floor is never breached or shown. Public: needs no credential, and it is limited per address and by the rounds the seller allows.

NameRequiredDescriptionDefault
handleYesThe seller's public handle, from the terms they publish.
buyer_refNoAn opaque reference for the seller's bookkeeping. Never a name or email.
product_idYesThe seller's id for the product.
buyer_tokenNoThe buyer token the first answer gave you, once. Keep it: it is the only way back into the negotiation.
offered_priceYesThe price you offer, in the seller's currency.
negotiation_idNoThe negotiation id from the first answer.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it discloses meaningful behavior: the seller's floor is never breached or shown, the call is public and credential-free, it is rate-limited per address, and the seller's allowed round count constrains it. The 'returns a buyer token, once: keep it' note also correctly reinforces the non-idempotent nature declared by 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every subsequent sentence carries distinct information (return shape, negotiation flow, token custody, privacy constraint, access/limits). The style is telegraphic in places ('once: keep it'), which is efficient but slightly clipped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return burden and does so: it enumerates the three answer types with price and reason plus the buyer token and negotiation id. What is left implicit is the currency/round-exhaustion aftermath and where the counter must be answered (accept_counter), a minor gap for a 6-param public tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema cannot: negotiation_id and buyer_token are conditional on this being a follow-up offer, and buyer_ref is characterized as an opaque seller-side reference rather than an identity. That conditional logic is the key semantic gap the schema alone leaves open.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Name a price for a seller's product') plus the exact outcome shape (accept, counter, reject with price and reason), which makes it clearly distinct from read-only siblings like get_negotiation or preview_offer. It stops short of naming any sibling explicitly, so it falls just under a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly splits the two invocation modes: the first offer opens a negotiation, and subsequent offers must also pass negotiation_id and buyer_token. That is concrete when-to-do-what guidance, though it never contrasts itself with alternatives such as preview_offer or accept_counter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_notifications_readA
Idempotent
Inspect

Mark your workspace's notifications read for this reader only (your agent, or your key), up to read_through (default now). Send the creation time of the newest item you handled so anything newer stays unread. Needs a Last Price credential with notifications write scope; the agent that owns the workspace needs none.

NameRequiredDescriptionDefault
read_throughNoMark everything created at or before this time read, ISO 8601. Defaults to now.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, so the description is not the sole safety source. It nonetheless adds genuinely non-structured context: the mutation is reader-scoped (per-agent/per-key, not global), and it discloses credential requirements ("Needs a Last Price credential with notifications write scope; the agent that owns the workspace needs none"). Return shape/count is not described, but no output schema exists either, so this is a modest gap rather than a serious one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, front-loaded with the action and its scope before the parameter rule and the auth note. Every sentence contributes distinct information — scope, invocation rule, prerequisite — with nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional-parameter mutation with annotations present and no output schema, nothing essential is missing: scope, default, the practical value-selection rule, and the auth precondition are all covered. Only a note on what the call returns (e.g., a count of items marked) would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3; the description earns a point by explaining how to choose the value ("creation time of the newest item you handled") and what the unstated upper bound implies (anything newer stays unread), which the schema's "mark everything at or before this time read" does not convey operationally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Mark ... notifications read") plus a crucial scope qualifier ("for this reader only (your agent, or your key)") that distinguishes it from a global mark-all. It does not name the sibling it complements (list_notifications / read_my_inbox), so an agent must infer the read-vs-mark 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete operating rule — "Send the creation time of the newest item you handled so anything newer stays unread" — which tells the agent exactly how to drive the call in practice, plus the default-to-now behavior. It stops short of explicit when-not-to-use guidance or naming the sibling tools that fetch notifications, which would push it to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

normalize_with_rosettaA
Read-onlyIdempotent
Inspect

Turn a vendor's response into the canonical shape using a plan from plan_rosetta_mapping: returns the canonical record, the fields that were missing, the lossy conversions and what passed through unmapped. Pass plan and vendor_response. Read-only. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
planYesA plan as plan_rosetta_mapping returns it.
vendor_responseYesThe vendor response to normalize.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by describing the return payload (canonical record, missing fields, lossy conversions, unmapped passthrough) and the auth model, including the exact 403 behavior for unclaimed sandbox keys. Annotations already cover read-only/idempotent, so this is additive context an agent cannot get elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and the return contents, then tacks on the auth constraints in short sentences. Nothing is redundant and every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains the shape of the result (canonical record, missing fields, lossy, unmapped). Combined with the prerequisite and auth notes, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents plan as “a plan as plan_rosetta_mapping returns it” and vendor_response as the vendor response. The description's “Pass plan and vendor_response” adds no syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (“Turn a vendor's response into the canonical shape”) and names the source of the plan, plan_rosetta_mapping. It does not explicitly distinguish itself from siblings like translate_with_rosetta or ingest_with_rosetta, which the agent would have to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes the prerequisite explicit: the plan must come from plan_rosetta_mapping, and it states the credential and claimed-workspace requirements including the 403 sandbox refusal. It stops short of saying when to choose this over translate_with_rosetta or ingest_with_rosetta.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_monetization_pull_requestAInspect

Open the Last Price integration code (the files generate_monetization_code writes) as a pull request in one of the workspace's own GitHub repositories, through the installed Last Price GitHub App. Commits to a new branch (last-price/billing-setup unless branch is given) and opens a pull request against base or the default branch; never merges, and refuses a branch that exists. Early access. Needs a Last Price credential with billing write scope and the App installed (get_github_app_connection). Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
baseNoBranch to open the pull request against; the default branch when absent.
titleNoPull request title.
branchNoNew branch for the commit; last-price/billing-setup when absent.
agent_idNoOne of your agents, filled into the code.
paymentsNoInclude billing through Stripe (default true).
customersNoInclude creating customers at sign-up (default true).
frameworkYes
event_nameNoThe billable event the example records, like chat.completed.
repositoryYesowner/name, like acme/agent-app; must be a repository the installation can use.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it discloses non-obvious behavior: commits to a new branch, never merges, refuses pre-existing branches, returns 403 for unclaimed workspaces, and is labeled early access. It even notes the 'Early access' status, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then behavior, then prerequisites. It is dense but every clause carries information; the only cost is a run-on second sentence packing multiple constraints together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no output schema, it covers prerequisites, side effects, and failure modes well. It stops short of saying what the call returns (PR URL/number), which an agent would want for chaining.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, so the schema already documents most parameters. The description only restates the branch and base defaults that the schema already gives, and explains nothing about payments/customers defaults or the framework enum beyond what is structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource ('Open ... as a pull request') and explicitly locates it relative to the sibling generate_monetization_code whose output it consumes, and to get_github_app_connection. An agent can distinguish it from other repo/commerce tools immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions (billing write scope credential, App installed via get_github_app_connection, claimed workspace) and exclusions ('refuses a branch that exists', 'never merges', 403 on sandbox keys). When-to-use and when-it-will-fail are both spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_spend_sessionAInspect

Before a run of small paid calls to one seller (a stream of x402 calls at a cent each, say), open one budget for the run instead of checking every call. Your owner's spend policy judges the session like a purchase of max_amount: allow holds that maximum against today's cap and returns reservation.id, the session id; ask means a person approves the budget first, then send the same request again; deny means do not start. Then call draw_session_spend right before paying each call, and close_spend_session when done, which gives back what you did not draw. A session left open gives its remainder back when it expires. Only where the workspace has sessions switched on (else an error with code not_released: use check_purchase per purchase). Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
itemNoOptional: what the calls buy.
intentNoOptional: what the buyer approved for this purchase, from an American Express intent, an AP2 intent mandate, or declared by you. A purchase that names another seller, costs more than max_amount (counting every purchase under the same intent_id), is in another currency or comes after expires_at is denied, whatever the policy allows. evidence (the token or mandate) is kept only as a hash and is not verified yet. Only where the workspace has intents switched on (else an error with code not_released).
pay_toNoOptional: the wallet address (bare or CAIP-10) or merchant account id the calls pay. Every draw_session_spend must then name the same one: another is refused with code payee_changed. Only where the workspace has payee binding switched on (else an error with code not_released).
sellerYesWho the calls pay: an API, domain or wallet name.
agent_idNoOnly with a workspace-wide key: open it on behalf of this agent. An agent key always acts as itself.
categoryNoOptional: its category, when the policy limits or budgets categories.
currencyNoThree-letter ISO currency code. Defaults to USD.
max_amountYesThe most the whole run may spend.
ttl_secondsNoHow long the session stays open, in seconds. Defaults to 3600.
agentid_tokenNoYour AgentID ID token, issued for Last Price, when your owner's policy lets only verified agents spend. Sent as the AgentID-Token header.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that the owner's spend policy judges the session like a purchase of `max_amount`, with allow holding that maximum, ask requiring human approval and resubmission, and deny preventing start. It also discloses expiry behavior, remainder return, feature-availability errors, required credential scope, and the 403 for unclaimed workspaces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then proceeds in workflow order: open, draw, close, expiry, feature gating, credentials, workspace claim. Every sentence provides operational value; none merely restates the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation tool with no output schema and ten parameters, the description supplies the missing operational context: policy outcomes, returned session id, follow-up tools, error conditions, credential requirements, and workspace prerequisites. The detailed input schema covers the remaining field-level detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the field-level definitions already carry most parameter meaning. The description still adds useful semantic context for `max_amount` as the whole run's budget and for the policy treatment of that budget, plus the returned session id, though it does not elaborate on optional fields like `intent`, `pay_to`, or `ttl_seconds` beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: open one budget/session before a run of small paid calls to one seller. It clearly distinguishes this from checking every call and from `check_purchase`, so an agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use this tool: before a run of small paid calls to one seller, instead of checking each call. It also gives the downstream workflow (`draw_session_spend` before each payment, `close_spend_session` when done), policy outcomes (allow/ask/deny), and the alternative when sessions are disabled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ping_webhookAInspect

Send one signed webhook.test event to an active endpoint now and record the result as a delivery, so you can check it receives and verifies events. Read the outcome with list_webhook_deliveries. Needs a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
webhook_idYesThe webhook endpoint UUID: id on a list_webhooks result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is not read-only, not idempotent, open-world, non-destructive; the description adds what annotations cannot: that a delivery record is created as a side effect, that the endpoint must be active, and the exact authorization and workspace-claim requirements including a 403 failure mode. That is meaningful context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action and followed by outcome-reading and prerequisites. Every sentence is informative, though the auth/workspace sentence stacks two constraints in slightly compressed phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by routing the agent to list_webhook_deliveries to read the result. Preconditions, failure mode, and side effects are all covered, leaving nothing an agent needs to call this correctly undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the webhook_id description already explains the UUID source, so the schema carries the load. The description still adds the constraint that the target must be an "active endpoint," implying inactive IDs fail, which is a small but real semantic addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Send one signed webhook.test event to an active endpoint") plus the side effect ("record the result as a delivery") and the intent ("check it receives and verifies events"). An agent can distinguish this from sibling tools like verify_webhook_signature or list_webhook_deliveries without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the use case (verify an endpoint receives and verifies events), the explicit follow-up step ("Read the outcome with list_webhook_deliveries"), and hard preconditions — scope-unlimited key or user sign-in, and a claimed workspace with the sandbox-key 403 case called out. This is explicit when/when-not guidance with an alternative named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_rosetta_mappingA
Read-onlyIdempotent
Inspect

Ask Rosetta how a source schema maps onto a canonical one: for each source field the target field, the transform, a confidence and where the mapping came from, with a plan confidence and tier. Pass source_schema (an id and its fields, each a path and type) and canonical_schema (the id of a built-in schema from list_canonical_schemas, or a whole schema). A plan below the confidence bar is queued for review and the answer says so; list_rosetta_review shows the queue. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
source_schemaYesThe source: an id for it and its fields.
canonical_schemaYesThe id of a built-in schema (see list_canonical_schemas) or a whole schema with an id and fields.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it discloses the significant behaviors: a plan below the confidence bar is queued for review, the response reports that fact, the queue is inspectable via list_rosetta_review, and calls fail with 403 until the workspace is claimed by a person (sandbox self-registration keys are refused). Auth requirements and the refusal mode are exactly the context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the result shape, then the input contract, then the review-queue caveat, then the credential/workspace gates. It is dense but every sentence carries distinct information; the auth caveat is slightly repetitive ('Needs a claimed ... Needs a claimed ...') but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description spells out the return payload (per-field mapping, transform, confidence, provenance, plus plan-level confidence and tier) and the conditional queue-for-review path. Combined with the auth and failure-mode notes, an agent has enough to call this correctly and interpret the answer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the nested field schema is fully annotated, so the bar is a baseline 3. The description does add a usable distinction the schema states only in passing: canonical_schema accepts either an id pulled from list_canonical_schemas or a whole inline schema, and source_schema is always id+fields of paths and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb+resource (ask Rosetta how a source schema maps onto a canonical one) and even enumerates the per-field output (target field, transform, confidence, provenance, plan confidence, tier). It does not differentiate itself from nearby Rosetta verbs such as translate_with_rosetta, normalize_with_rosetta or ingest_with_rosetta, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives prerequisites (claimed Last Price credential, claimed workspace, 403 for sandbox keys) and a downstream hand-off (list_rosetta_review shows the queue), which is real usage context. What is missing is the when-to-use-this-vs-alternative statement: nothing says to call this instead of translate_with_rosetta or ingest_with_rosetta, or when a mapping plan is not warranted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_with_hosted_modelA
Read-onlyIdempotent
Inspect

Try a hosted model on a request context before (or after) promoting a version: the price it would give, and what the model said (a demand model's chance of a sale and elasticity, or a price model's output). Uses the active version unless version names another, and 409 when there is none. Nothing is metered or logged as a quote. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function test scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
contextYesThe request context to price, as compute_price takes it. current_price is required.
versionNoThe version to try. Defaults to the active one.
model_idYesThe hosted model's id: id on a list_hosted_models result.
constraintsNoOptional limits on the price.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations by disclosing that nothing is metered or logged as a quote, that the active version is used by default, and by enumerating the exact failure modes with their status codes and the prerequisite credential scope and workspace-claim state. All of this is consistent with readOnlyHint=true, idempotentHint=true, destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and outcome before prerequisites, and nearly every sentence carries distinct information (return shape, version default, 409, non-metering, 404 gating, auth, workspace claim). It is dense to the point of being a run-on in places, with stacked parentheticals, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object, no-output-schema tool, the description explains what is returned in model-specific terms, how version selection works, what is not persisted or billed, and every gate that would block a call. An agent has enough to decide whether to call it and to interpret a failure without opening anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a rich nested context object and per-field descriptions, so the schema already carries parameter meaning. The description only restates the version default ('uses the active version unless version names another'), which the schema also says, and adds nothing about context fields, metadata keys, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (run a hosted model on a request context as a trial) plus exactly what comes back: the price it would give and what the model said, spelled out differently for demand vs price models. The 'before (or after) promoting a version' framing separates it cleanly from promote_hosted_model_version and from the production compute_price path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear situational framing ('try ... before (or after) promoting a version') plus hard conditions: 409 when no active version, 404 not_released when the hosted-pricing-models release is off, 403 for unclaimed sandbox workspaces, and a required Last Price credential with function test scope. It never names an alternative tool to use instead (e.g. compute_price for live serving), so it misses the top of the scale.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_offerA
Read-onlyIdempotent
Inspect

Try an offer against one of your own products and see the answer a buyer would get (accept, counter or reject), with the limits behind it. Nothing is recorded and nobody is bound, and it works while offers are off, so you can check your terms first. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
roundNoWhich round of the negotiation this is. Defaults to 1.
product_idYesYour own id for the product, as buyers name it in an offer.
offered_priceYesThe price the pretend buyer offers.
previous_counterNoThe counter you made in the round before, if any.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond annotations: no recording or binding, works even when offers are disabled, requires a Last Price credential with price compute scope, and rejects sandbox keys with a 403 until a person claims the workspace. These are exactly the side-effect, prerequisite, and error signals an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core dry-run purpose, then the no-side-effects guarantee, then prerequisites. Every sentence contributes actionable information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains the return shape (accept/counter/reject plus limits) and covers setup requirements and error conditions. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all four parameters are documented in the schema itself. The description does not add parameter-level detail (e.g., round semantics or previous_counter usage) beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific dry-run action against the user's own product and describes the exact result (accept, counter, reject) with limits. The phrase 'Nothing is recorded and nobody is bound' distinguishes it from the real offer sibling without needing to name it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions for use: 'so you can check your terms first' and 'works while offers are off', plus credential and claimed-workspace prerequisites. It does not explicitly name the alternative real-offer tool (make_offer), but the dry-run framing makes the intended context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_scrape_jobA
Read-onlyIdempotent
Inspect

Try a page and selectors without saving a job: fetch the page once and answer the prices the selectors find, with the page's HTTP status. Nothing is stored. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
urlYesThe public page to read. Must start with https://.
nameNoA name for the job.
currencyNoThree-letter ISO 4217 code, such as USD.
plan_selectorNoCSS selector for the plan name beside each price.
price_selectorYesCSS selector for the price elements.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/openWorld annotations: discloses the 501 hosted_scraping_not_enabled release-flag behaviour, robots.txt compliance, the https-only public-page restriction, the required commerce:configure credential scope, and the 403 refusal for unclaimed sandbox workspaces. These are exactly the failure modes an agent must anticipate before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and the 'nothing is stored' guarantee, then layers constraints. It is dense but each sentence carries a distinct operational fact; the credentials and workspace-claim sentences are lengthy yet necessary given the error behaviours they explain.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter preview tool with no output schema, the description covers what is returned (prices plus HTTP status), what is not persisted, auth requirements, and the two distinct error conditions (501 flag, 403 unclaimed workspace). Nothing material an agent needs before calling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including url, name, currency, and both selectors is already documented in the schema. The description adds only outcome-level meaning (one fetch, prices found by the selectors, HTTP status returned) rather than per-parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'try a page and selectors without saving a job' — and immediately clarifies what it returns (prices the selectors find plus HTTP status). The 'without saving a job' phrasing cleanly separates it from create_scrape_job and run_scrape_job, which an agent can act on without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: use this to test a page and selectors before committing to a saved job, with the explicit guarantee that nothing is stored. It does not name the sibling alternatives (create_scrape_job, run_scrape_job) explicitly, so the routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_from_captureAInspect

Price an item from what you have about it, the way a person would look at it: send photos, screenshots, PDFs, product page links, a description or a barcode in artifacts and get one price with its range, what the item is and its condition, any prices read off the attachments, and a write-up for your side of the sale: a listing to post with the price when selling, or a message to the seller with your opening offer filled in when buying. side says which (selling by default); the value is the same either way, and the range reads as quick sale to top of range for a seller and opening offer to most to pay for a buyer. current_price is the price you have in mind: it is compared with the estimate, never used as it. No item recognized means no price (computed_price null, confidence 0), never a guess. With a price, share_url is a public link to a card showing it, to send to the person or post with the listing. check_id is its place in the workspace's price history (list_price_checks, get_price_check) where that is kept. A photo or PDF goes as base64 with its mime_type, or as a public http or https link to the file; the hosted MCP endpoint takes requests up to 64 KB, so send larger photos as links. A photo on disk with no link: with a shell, upload it in one command instead, with the same answer: curl -X POST https://api.last-price.ai/api/price-router/pipelines -H "x-api-key: YOUR_KEY" -F photo=@item.jpg, adding -F photo=@another.jpg, -F file=@receipt.pdf, -F text="...", -F side=buying or -F current_price=120 as needed (about 4 MB per request in all). In a chat app that hands attached files to tools (ChatGPT), a photo or PDF the person attached goes in photo or file as it arrives. One model call reads everything (your workspace's own Anthropic key when it has one), so allow up to 30 seconds; it is recorded as model usage, not drawn from your balance, and changes no price or setting. Until it is switched on for your workspace it answers 501. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
fileNoA PDF (or another photo) the person attached in the chat, passed the same way as photo.
sideNoselling (the default) gets a listing; buying gets a message to the seller with your opening offer.
photoNoA photo the person attached in the chat, passed by the app as a file reference (file_id and download_url). Downloaded on our side.
signalsNoOptional capture signals the person explicitly allowed. Only groups in consent.facets are read, while capture-signals is enabled. Never collect device or location data without their consent.
currencyNoThree-letter currency code for the price. Defaults to USD.
artifactsNoWhat you have about the item, one entry each, at most 12. Needed unless photo or file is sent.
product_nameNoWhat the item is, if you know. Helps when the photos are unclear.
current_priceNoThe price you have in mind (an asking price, or what you hope to pay). Compared with the estimate, never used as it.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the 64 KB hosted-endpoint payload limit, the ~4 MB curl fallback, the single model call and 30-second allowance, that usage is recorded as model usage and not drawn from balance, that no price or setting is changed, the 501 feature-flag response, the required price-compute credential scope, and the 403 refusal for unclaimed sandbox workspaces. These are exactly the operational traits an agent needs before attempting the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and output semantics, then proceeds through side, current_price, null behavior, share_url/check_id, input formats, size handling, and auth requirements in a logical order. It is long and delivered as one dense paragraph with some repetition (base64/link rules restated, a full curl command), which hurts scanability, but nearly every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully defines the return shape (computed price, range meaning per side, item/condition, read prices, write-up text, share_url, check_id), edge-case behavior (null/0 confidence when nothing is recognized), and the prerequisites (feature flag, credential scope, claimed workspace). Nothing material for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds cross-parameter meaning the schema cannot, such as artifacts vs photo/file mutual dependency ('Needed unless photo or file is sent'), base64-vs-link handling, and the selling/buying interpretation of the returned range. It does not repeat every field description, but it does not clarify the optional signals consent group either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Price an item from what you have about it') and enumerates the capture inputs (photos, screenshots, PDFs, links, text, barcode) and the outputs (price + range, condition, listing/message). This makes the tool's niche recognizable, but it never names or contrasts with adjacent pricing tools such as compute_price or pricing_conversation, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: side defaults to selling, current_price is compared but never used as the estimate, no recognized item yields null/0 rather than a guess, and larger photos should be sent as links or via the curl fallback. It stops short of stating when to choose this over sibling pricing tools or when not to use it, so there is no explicit alternative-routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pricing_conversationAInspect

Ask Last Price what pricing inputs are missing. Start with request: {}, return its questions to the caller, then send continuation.request and answers. Prepare is free and does not compute. When ready, action compute uses the existing authenticated pricing API; configure a credential first. Never invent answers or treat a continuation as authorization.

NameRequiredDescriptionDefault
actionNoprepare
answersNo
requestNoPartial REST PricingComputeRequest, including nested context, constraints, an explicit function selection and options. Reuse continuation.request on subsequent calls.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that prepare is free and does not compute, that compute uses the existing authenticated pricing API, and that a credential must be configured first. The warnings against inventing answers and treating a continuation as authorization add useful safety context, though the exact side effects or outputs of compute remain unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, moving from purpose to workflow to compute prerequisites to safety constraints in a few dense sentences. Every sentence adds operational value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low schema coverage and lack of an output schema, the description does a good job explaining the conversational loop, credential requirement, and safety boundaries. The remaining gap is that it does not clarify what compute returns or how the answers fields map to the questions, but the core invocation is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, so the description must compensate, and it partially does by explaining the action enum semantics and the request/continuation workflow. However, it does not explain the answers object fields (currency, max_price, min_price, unit_cost, current_price, target_margin_pct) beyond saying they are sent back.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific conversational pricing workflow: ask for missing pricing inputs, return questions, then compute once ready. It clearly separates prepare from compute, but does not explicitly name a sibling alternative such as compute_price or ask_pricing_analyst, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit two-step flow (request: {}, then continuation.request plus answers) and states when to switch to action compute. It also warns to configure credentials before compute, but does not explicitly say when to use this tool rather than compute_price or ask_pricing_analyst.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

promote_hosted_model_versionA
DestructiveIdempotent
Inspect

Make a version of a hosted model the active one: the next call to every function that runs this model uses it, with no change to callers. The version that was active is retired and stays available to roll back to. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
versionYesThe version number: version on a get_hosted_model result.
model_idYesThe hosted model's id: id on a list_hosted_models result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true) by disclosing that the previously active version is retired but retained for rollback, that callers need no changes, plus the 404 feature-gate, required publish-scope credential, and the 403 sandbox-workspace restriction. This is exactly the operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tightly packed sentences, front-loaded with the effect and its consequence for callers before the error and auth prerequisites. Dense but every clause carries distinct information; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent mutation with no output schema, the description covers effect, rollback availability, error conditions, credential scope, and workspace-claim requirement. Nothing an agent needs in order to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both model_id and version are already documented with their sourcing hints (get_hosted_model, list_hosted_models). The description adds no format or sourcing detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Make a version of a hosted model the active one') and explains the effect on callers, clearly distinguishing it from rollback_hosted_model and upload_hosted_model_version. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when the operation takes effect, that the previous version stays available to roll back to (implicitly routing to rollback_hosted_model), and lists the precondition failures (404 not_released, 403 unclaimed workspace). It doesn't explicitly name the rollback sibling as an alternative, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_experiment_variantAInspect

Add one price arm to an existing experiment: pass experiment_key and the price, optionally label (otherwise the next variant_N is used) and metadata. The experiment must split traffic evenly and have room for another arm (ten at most); one whose arms carry weights refuses, so the author has to say how traffic is reshared. This changes the experiment, so a running one starts serving the new price to its share of buyers. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
labelNoThe arm's name. Defaults to the next variant_N.
priceYesThe price the new arm serves.
metadataNoAnything to keep with the arm.
experiment_keyYesThe experiment key: key on a list_experiments result, lowercase letters, digits and underscores.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses the live effect that a running experiment will start serving the new price to its share of buyers, plus credential and workspace requirements including a 403 refusal for sandbox keys. This adds substantial operational context and does not contradict the declared non-readonly, non-idempotent, non-destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and required parameters, then layers in constraints and auth requirements. Despite covering many constraints, every sentence contributes useful operational information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the critical missing context: live behavior, experiment constraints, credential requirements, and workspace claim requirements. An agent has enough information to decide whether and how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, including the label default and price meaning. The description reinforces required versus optional parameters but adds little parameter-level syntax or semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Add one price arm to an existing experiment.' It clearly scopes the operation to existing experiments rather than creating experiments or allocating traffic generally, so an agent can distinguish it from siblings like create_experiment or allocate_variant_traffic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states prerequisites and refusal conditions: the experiment must split traffic evenly, have room for another arm, reject weighted arms, and require a claimed Last Price credential and claimed workspace. These are concrete when-to-use and when-not-to-use signals rather than implied guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_jale_poolAInspect

Read price data other workspaces have shared in the data exchange: the newest data points, optionally for one vertical, with how many contributors back each and how fresh it is. Each query spends 5 tokens; below 5 tokens it is refused with your balance, and you earn tokens with contribute_price_data. Page with limit and offset. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
limitNoHow many to return. Defaults to 50.
offsetNoHow many to skip, for the next page.
verticalNoOnly data points in this vertical.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses economics (5 tokens per query), the failure mode (refused below balance, returning your balance), authorization state (403 until a human claims the workspace), and paging behavior. These are non-obvious operational traits an agent must know before calling, and they are consistent with readOnlyHint=false given the token spend.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by cost, paging, then the prerequisite. Every sentence carries information, though the token-economics sentence packs three distinct facts into one dense clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by characterizing the return shape (data points with contributor counts and recency). Cost, prerequisites, and paging are all covered, so nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so limit, offset and vertical are already fully documented. The description only restates that vertical is optional and that limit/offset do paging, adding no syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read price data other workspaces have shared') and immediately scopes the result (newest data points, optional vertical, contributor count and freshness). This is clearly distinguishable from the sibling contribute_price_data (writes data) and list_jale_contributions (your own contributions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditions: you need a claimed workspace, sandbox keys get 403, below 5 tokens the call is refused, and contribute_price_data is the way to earn tokens. It does not compare against other price-reading siblings such as get_x402_price_index, browse_catalog, or recommend_jale_price, so the 'when not to use' side is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quote_storefront_domainAInspect

Get a price for registering a domain for a storefront, held for 15 minutes. A quote costs nothing and registers nothing: only the workspace owner can buy it, in the dashboard. Only where domain search is switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
yearsNoYears to register. Defaults to 1.
domainYesThe domain to price, such as acme.ai.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the 15-minute hold window, the no-charge/no-registration semantics, the required Last Price credential with workspace-settings write scope, and the concrete failure modes (not_released error, 403 on unclaimed workspaces). These are exactly the operational facts an agent needs and none are derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct and load-bearing information: what the quote is, what it does not do, the environment precondition, and the auth/workspace preconditions. Front-loaded with the core behavior and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should ideally hint at what a quote returns (price, expiry), but the 15-minute hold implicitly covers expiry and list_storefront_domain_quotes exists as a companion. Auth, failure modes and side-effect semantics are all covered, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with domain, storefront_id and years all documented inline, so the baseline is 3. The description mentions no parameter specifics — notably the optional 'years' (1-10, default 1) is never referenced — so it adds nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Get a price for registering a domain for a storefront') plus the key scoping trait that the result is held for 15 minutes. This cleanly separates it from siblings like add_storefront_domain (which registers), search_storefront_domains (which discovers) and list_storefront_domain_quotes (which retrieves existing quotes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the quote 'costs nothing and registers nothing' and that buying happens only via the workspace owner in the dashboard, which steers the agent away from treating this as a purchase. It also lists the preconditions that cause failure (domain search off, missing credential scope, unclaimed sandbox workspace), though it never names an alternative tool by name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_my_inboxA
Read-onlyIdempotent
Inspect

Read the newest messages in your own agent inbox: the inbox of the agent your key or token is bound to, and no other. Answers live from the mail provider when it is reachable, otherwise from the mail Last Price stored (source says which). Needs an agent key, or a token exchanged from one.

NameRequiredDescriptionDefault
limitNoMessages to return. Defaults to 25.
cursorNoThe cursor the previous page returned, for live mail only.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world and non-destructive semantics, yet the description adds genuinely new behavior: results come from the live mail provider when reachable and otherwise from a stored copy, with a source indicator telling which. That freshness/fallback detail is exactly the kind of context annotations can't express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, then credential and data-source details in descending priority. Two sentences carry real information, though the garbled phrase "the mail Last Price stored" costs a moment of parsing and weakens the fallback explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter read tool with a fully documented schema and no output schema, the description covers what's needed: ownership scope, credential requirement, and the live-vs-stored data source with a source marker. Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — limit (default 25) and cursor for live mail pagination are both documented in the schema. The description adds nothing about them, and even its "source says which" line relates to output rather than parameters, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read the newest messages") plus an explicit scope restriction: the inbox of the agent the key/token is bound to "and no other." It doesn't name the nearest siblings (list_notifications, mark_notifications_read), so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use — reading your own inbox, never another agent's — and states the prerequisite credential ("agent key, or a token exchanged from one"). It does not point to alternative tools for reading notifications or other agents' mail, but the scoping constraint covers the main misuse case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_quote_replyAInspect

Read a buyer's reply to a quote you sent: does it accept, say the price is too high, counter, ask a question, or decline? Send text, with quoted_price and currency when known. Returns accept, too_high, counter, question, decline or unclear, confidence, option probabilities (null for keyword rules), and counter_price when found. The existing decision model reads the reply, falling back to keyword rules when unavailable; source says model or rules. The reply may be sent to the model provider and the evaluation may incur model usage cost. Last Price does not retain the reply text; analytics records the decision without that text. This call does not accept a deal or change a price. Answers 404 not_released while unavailable for the workspace. Needs a Last Price credential with pcn:routing:read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
textYesThe buyer's reply, as written.
currencyNoThree-character currency of the quoted price, echoed in uppercase.
quoted_priceNoThe price you quoted, when known. A counter equal to it is not read as a counter price.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses behavior far beyond the annotations: the reply is sent to a model provider and incurs usage cost, keyword-rule fallback with a 'source' discriminator, the reply text is not retained while analytics records the decision, 404 not_released semantics, required pcn:routing:read scope, and 403 for unclaimed sandbox workspaces. This also explains why readOnlyHint=false despite the 'read' framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and outcome taxonomy are front-loaded in the first sentence, and every subsequent sentence carries distinct information (fallback, cost, retention, error codes, auth). It is long and densely packed into run-on sentences, but almost no clause is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description enumerates the return fields (label, confidence, option probabilities, counter_price) itself, and it covers auth prerequisites, billing side effects, privacy/retention, and the 404/403 failure modes. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented, including the subtle 'counter equal to quoted price is not read as a counter price' rule. The description only restates 'with quoted_price and currency when known' and mentions counter_price output, adding little syntax or format meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) plus resource (buyer's reply to a quote) and enumerates the exact classification outcomes the tool produces (accept, too_high, counter, question, decline). The line 'This call does not accept a deal or change a price' draws a clear boundary against mutation siblings such as accept_counter or pricing_conversation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete invocation context ('Send text, with quoted_price and currency when known') and an explicit when-not ('does not accept a deal or change a price'), which implicitly routes the agent elsewhere. It stops short of naming the alternative tool to use instead of accepting a deal, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_jale_priceA
Read-onlyIdempotent
Inspect

Ask Jale for the price to run next in one of your experiments: it simulates each candidate price against the experiment's results so far and returns the best one for your objective with its expected effect and how confident it is. Pass experiment_id. Optionally pass objective (revenue, conversion, profit or market share, default revenue), candidates (the prices to compare, otherwise a grid is chosen) and lookback_days. It recommends only; it changes no price. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
objectiveNoWhat to optimise for. Defaults to revenue.
candidatesNoThe prices to compare. Otherwise a grid is chosen.
experiment_idYesThe experiment to recommend a price for.
lookback_daysNoHow many days of results to learn from.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses two hard preconditions an agent would otherwise discover only by failing: a Last Price credential is required, and a sandbox key from self-registration returns 403 until the workspace is claimed. It also pre-describes the return payload (best price, expected effect, confidence), which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core capability is front-loaded in the first sentence, and the constraint statements are short and earning their place. The middle parameter-recap sentence is largely redundant with a fully documented schema, which trims it below 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so (best price, expected effect, confidence). Combined with the auth/workspace prerequisites and the recommend-only guarantee, an agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including the objective enum and its default. The description's parameter sentence ('Pass experiment_id. Optionally pass objective... candidates... lookback_days') largely restates the schema, adding only the note that a grid is chosen when candidates is omitted, which the schema already implies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('recommend the price to run next in an experiment') and then explains the mechanism: simulate each candidate against results so far and return the best for the objective with expected effect and confidence. That detail separates it from neighbors like compute_price, suggest_frontier_price, and get_pricing_analysis without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage context (experiment_data exists, you want the next price to run) and an explicit when-not: 'It recommends only; it changes no price,' which steers an agent away from treating it as an apply/decide tool. It does not name a specific sibling alternative, so it falls short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_purchaseAInspect

Close a reservation whose outcome you reported unknown with settle_purchase, once, from what you checked (the processor's record, the wallet, the seller's order). Paid counts it at the amount paid. Not paid gives the amount back to today's budget, so only the workspace's owner may say so: a workspace-wide key with routing write scope, never an agent's own key. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
noteYesRequired: what you checked, e.g. the processor reference.
amountNoWith paid: what was actually paid, if less than reserved.
outcomeYesWhether the money moved.
reservation_idYesreservation.id from check_purchase.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations: it discloses that 'paid' records the paid amount, that 'not_paid' returns the amount to today's budget, that this requires a workspace-wide key with routing write scope (not an agent key), a Last Price credential with price compute scope, and a claimed workspace (403 for sandbox keys). The non-idempotent, one-shot nature is surfaced too, consistent with idempotentHint=false and destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first clause and every sentence carries real content (effect, permission, credential, prerequisite). It is dense and the prerequisite clauses run long, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, credential-gated tool with no output schema, the description covers preconditions, authorization, and financial effects thoroughly. The only gap is that it does not indicate what a successful call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds meaning to the outcome/amount pair by stating the financial consequence of each ('paid counts it at the amount paid', 'not paid gives the amount back'), which the enum labels alone do not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — close a reservation whose outcome was reported unknown with settle_purchase — and immediately distinguishes it from the sibling settle_purchase as the follow-up step. An agent can tell exactly which action this performs without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the trigger (after reporting unknown with settle_purchase), the cadence ('once'), the source of truth for the decision ('from what you checked: the processor's record, the wallet, the seller's order'), and names the alternative that should precede it. That is when-to-use plus sequencing in one breath.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_costAInspect

Record a cost in your workspace, such as a vendor or infrastructure cost, so the Value Receipt and the cost analytics count it: pass amount, and optionally currency (default USD), cost_type (default usage), agent_id, customer_id and metadata. This writes a record that is not undone by another tool, so record what was really spent. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountYesWhat it cost, in the currency.
agent_idNoThe agent: its id, as it shows in your workspace. An agent's own credential can name only its own agent.
currencyNoThe currency code. Defaults to USD.
metadataNoAnything worth keeping with the record.
cost_typeNoWhat kind of cost it is. Defaults to usage.
customer_idNoThe customer: its id, as it shows in your workspace.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that the write cannot be undone by another tool, that a claimed Last Price credential is required, and that a self-registered sandbox key gets a 403 until a person claims the workspace. Annotations only cover the read-only/destructive/idempotent flags, so this auth and irreversibility context is genuinely additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, effect, and parameters in the first sentence, then prerequisites in the second. Both sentences earn their place, though the second runs long and packs three distinct constraints together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a write tool with no output schema, the description supplies the missing pieces: what the recorded cost affects, that it is permanent, and the exact credential and workspace state required. Nothing an agent needs in order to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The description restates the defaults for currency (USD) and cost_type (usage) and lists which parameters are optional, but adds no format, enum, or interaction detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Record a cost in your workspace") plus concrete examples (vendor, infrastructure cost) and the downstream effect (Value Receipt, cost analytics). It is clearly distinguishable from read-side siblings like list_costs and get_cost_analytics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition for use with the irreversibility warning ("record what was really spent") and states two prerequisites that gate invocation. It does not explicitly name alternative tools such as list_costs or get_cost_analytics, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refund_paymentA
Destructive
Inspect

Mark a payment refunded: pass payment_id, and optionally amount (up to the payment amount; the whole payment otherwise) and reason. It records the refund in Last Price, and answers 400 when the payment is already refunded. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountNoHow much to refund. Defaults to the whole payment.
reasonNoWhy it was refunded.
payment_idYesThe payment: its id, as list_payments shows it.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and idempotent=false, and the description adds substantial beyond that: the refund is recorded in Last Price, a duplicate attempt returns 400, and it requires a billing write credential plus a claimed workspace. This is exactly the operational context an agent needs before mutating billing state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and required parameter, then layers optional params, behavior, and auth. A single dense paragraph with no wasted sentences, though slightly packed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-output-schema mutation, the description covers parameters, defaults, error codes, and auth requirements well. It stops short of describing the success response, but without an output schema that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema: amount is capped at the payment amount (the schema only says 'defaults to whole payment'), and payment_id is tied to list_payments output. Minor remaining gap is that 'reason' semantics aren't elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Mark a payment refunded') and immediately specifies the key parameter. Clearly distinguishable from siblings like create_payment, get_payment, and list_payments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the calling context (needs billing write scope, needs claimed workspace) and the failure conditions (400 if already refunded, 403 with sandbox key). It doesn't explicitly name sibling alternatives, but the prerequisites and exclusions make the when-to-use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_agentAInspect

Sign up with no key and no human: creates a sandbox workspace of your own and returns its API key (shown once), its daily limits and a claim link a person can open to take the workspace into their account. Pass name (2 to 64 characters, such as your-system/role-name), and optionally contact_email and intended_use. On the hosted MCP server this session goes on using the new key, so the tools that need a credential work at once with no header to add; elsewhere send the returned key as the x-api-key header. Public: needs no credential.

NameRequiredDescriptionDefault
nameYesWhat to call this agent, such as your-system/role-name: letters, digits, spaces and . _ : @ / + -
intended_useNoWhat the agent will price, in a sentence.
contact_emailNoWhere a person can reach whoever runs this agent. Never used to send mail until a person claims the workspace.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description discloses that the API key is shown once, that a claim link is returned, that daily limits are provided, and how credential propagation differs on hosted vs external MCP. These are important behavioral details for a setup/authentication tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and dense, covering creation, output, credential behavior, and parameters in a few sentences. It has some redundancy, e.g. 'no key and no human' is repeated at the end as 'needs no credential', and the name constraints duplicate the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a registration tool with no output schema, the description is complete: it explains what is created, what values are returned, how the credential is used afterward, and the parameter expectations. Nothing essential for invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the input schema. The description repeats the name length/character constraints and notes that contact_email and intended_use are optional, but adds little meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'creates a sandbox workspace of your own and returns its API key'. It distinguishes this from credential-requiring siblings by saying it needs 'no key and no human', and names the concrete outputs (key, daily limits, claim link).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains that the tool is public and needs no credential, and that on the hosted MCP server the session continues using the new key while elsewhere the key must be sent as x-api-key. That is clear context, but it never explicitly says when to prefer this over a credential-bearing flow such as use_api_key.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_commerce_proposalA
Destructive
Inspect

Reject a drafted price proposal. A reason is required and kept in the audit trail. proposal_id is the id from list_commerce_proposals. Needs a Last Price credential with commerce proposal reject scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonYesWhy it is rejected.
proposal_idYesThe proposal id, as list_commerce_proposals gives it.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotent=false, and the description adds context the annotations cannot: the reason is mandatory and persisted in an audit trail, the credential scope required, and the sandbox-key 403 behavior. That is meaningful behavioral disclosure beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, followed by the requirement and auth/error context in tight, non-redundant sentences. Every sentence adds information the agent needs to call the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, non-idempotent mutation with no output schema, the description covers purpose, parameters, credential scope, audit-trail effect, and the pre-claim 403 error. Nothing an agent needs to invoke it successfully is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so both parameters are documented by the schema; the description adds value by noting reason is retained in the audit trail and that proposal_id comes from list_commerce_proposals. It does not add further format or constraint detail, but the schema carries that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reject a drafted price proposal') that is inherently distinguishable from the sibling approve_commerce_proposal and from apply_analyst_proposal/execute_commerce_proposals. An agent knows exactly what action is taken and on what object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions for use — a Last Price credential with commerce proposal reject scope and a claimed workspace, with the explicit failure mode of a 403 for sandbox keys. It also routes the agent to list_commerce_proposals for the id. It stops short of naming when to prefer an alternative action (e.g., approve or executive proposals), 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.

reject_forge_candidateA
Destructive
Inspect

Reject one of your workspace's Forge candidates: it stops climbing the promotion ladder and keeps its evidence, with your reason added. candidate_id is an id from get_forge_status; a candidate already rejected, retired or promoted cannot be. Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonNoWhy, kept with its evidence; not blank.
candidate_idYesThe candidate id, as get_forge_status gives it.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, non-idempotent, non-read-only, and the description goes beyond them: it explains that evidence is kept and the reason is attached, and it discloses auth requirements (Last Price credential with routing write scope, owner/admin from the dashboard) plus a concrete 403 failure mode for unclaimed/sandbox workspaces. It doesn't describe the response, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its effect, then preconditions and auth. Dense but every clause carries information; the final sentence is long and stacks two distinct ideas (credential scope, workspace claim status) which slightly hurts scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive mutation with no output schema, the description covers the state change, what is preserved, auth prerequisites, and the main error condition. An agent has everything needed to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description adds value by tying candidate_id to get_forge_status and reinforcing that the reason is persisted alongside the evidence, which the schema only partially conveys ('kept with its evidence').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reject one of your workspace's Forge candidates') and immediately describes the effect: it stops climbing the promotion ladder and retains its evidence. An agent can distinguish this from the accept path and from read tools like get_forge_status without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the source of the id ('an id from get_forge_status') and gives a negative precondition: a candidate already rejected, retired or promoted cannot be rejected. That is exactly the when/when-not guidance needed to avoid a wasted call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_payout_runA
DestructiveIdempotent
Inspect

Reject a payout run that is awaiting approval: nothing is paid and the ledger stays as it was. The requester may reject their own request to withdraw it. 409 when the run is not awaiting approval. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
run_idYesThe payout run: id on a list_payout_runs or request_payout_run result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing effects (no payment, ledger untouched), failure codes (409 not-awaiting-approval, 404 when payouts are disabled for the workspace, 403 for unclaimed sandbox workspaces), the required billing write scope, and a pointer to list_payout_runs/execution.enabled for diagnostics. For a destructiveHint=true mutation with no output schema, this is the disclosure an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and effect, then escalating to error codes and auth prerequisites — every sentence carries non-redundant information. It is dense (four sentences of constraints) but nothing is filler; light structuring of the error/auth clauses would push it higher.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by covering the state machine (awaiting approval), error semantics, permission scope, and workspace-claim prerequisite. An agent has everything required to call it correctly or diagnose failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (run_id) and the schema already documents it at 100% coverage, including the 'id on a list_payout_runs or request_payout_run result' provenance note. The description adds no format or resolution detail beyond the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reject) on a specific resource (payout run) plus the precondition 'awaiting approval', which cleanly separates it from approve_payout_run and retry_payout_run. The consequence clause ('nothing is paid and the ledger stays as it was') further pins down what the action means.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when ('a payout run that is awaiting approval') and an explicit when-not boundary ('409 when the run is not awaiting approval'), plus a self-service scenario ('The requester may reject their own request to withdraw it'). It never names the sibling alternative (approve_payout_run) it should be weighed against, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_offer_productA
DestructiveIdempotent
Inspect

Take a product off offers. Negotiations already open on it stop, because a product that is not listed answers buyers with not found. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
product_idYesYour own id for the product, as buyers name it in an offer.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint already declaring the safety profile, the description still adds substantial context beyond annotations: open negotiations stop, buyers receive 'not found,' write-scoped Last Price credentials are required, and an unclaimed sandbox workspace is refused with 403. That is exactly the behavioral detail 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each front-loaded with useful content: effect first, then credential scope, then workspace prerequisites. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, destructive, idempotent tool with no output schema, the description covers the effect, credential requirement, and workspace-claim refusal path. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single product_id parameter, so the schema already carries the meaning. The description adds no parameter-specific detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Take a product off offers.' The effect is unambiguous and clearly the inverse of the sibling set_offer_product, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains consequences and prerequisites but gives no explicit when-to-use guidance or alternatives (e.g., when to use set_offer_product or a policy change instead). Usage is implied by the action rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_storefront_dns_recordA
DestructiveIdempotent
Inspect

Remove a DNS record from a domain your workspace registered through Last Price. Records the storefront needs cannot be removed. Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domain_idYesThe domain id, from list_storefronts or add_storefront_domain.
record_idYesThe record id, from list_storefront_dns_records.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover destructive/idempotent/openWorld, and the description adds non-obvious context: protected records are refused, the exact auth scope required, and a documented 403 failure mode for unclaimed sandbox workspaces. That is real operational detail an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the constraint, then the preconditions. Every sentence carries information the caller needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter destructive tool with no output schema, the description covers action, constraint, auth, and error path. It does not say what a successful removal returns or whether it cascades, but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already points at its discovery tool (list_storefronts, add_storefront_domain, list_storefront_dns_records). The description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Remove a DNS record") and scopes it to domains the workspace registered through Last Price, which cleanly separates it from add_storefront_dns_record and list_storefront_dns_records. It stops short of naming those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-not ("Records the storefront needs cannot be removed") plus the two prerequisites (workspace-settings write credential, claimed workspace with sandbox keys refused 403). No alternatives are named for the case where the record is protected, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_storefront_domainA
DestructiveIdempotent
Inspect

Stop serving a storefront on one of your domains. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domain_idYesThe domain id, from list_storefronts or add_storefront_domain.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover destructiveHint=true and idempotentHint=true, and the description adds genuinely new context: the not_released error condition, the required credential scope, and the 403 refusal for sandbox keys. However it never says whether the domain record itself survives detachment or whether the action is recoverable, which is the key unknown for 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each carrying distinct information, with the action statement front-loaded before the gating conditions and error codes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter mutation with no output schema, the description supplies the failure modes and auth prerequisites an agent needs to call it successfully. The remaining gap is post-condition behavior: what happens to the domain record and what a success response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters document their own provenance (list_storefronts, add_storefront_domain), so the baseline of 3 applies. The description adds nothing about the ids beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource: 'Stop serving a storefront on one of your domains' clearly denotes detaching a domain binding, distinct from delete_storefront or update_storefront. It never names the adjacent tools (remove_storefront_dns_record, delete_storefront), so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for use: storefronts must be switched on in the workspace (else not_released), the key needs workspace settings write scope, and the workspace must be claimed. It stops short of naming alternatives or stating when to delete the whole storefront instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_team_memberA
DestructiveIdempotent
Inspect

Remove a person from your workspace. The last owner cannot be removed. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
user_idYesThe person's user id: user_id on a list_team_members result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive/idempotent/write, and the description goes well beyond them: the last-owner invariant, the required x-api-key with team:admin scope held by an owner/admin, rejection of other token types, and the 403 on self-registration sandbox keys before claim. These are exactly the failure modes an agent must anticipate before calling 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded in sentence one and each following sentence carries a distinct constraint. The middle sentence is long and comma-spliced, though every clause is load-bearing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive mutation with no output schema, the description covers auth, caller privilege, the last-owner guard, and workspace-claim state. It stops short of stating the observable effect (e.g., that the user disappears from list_team_members), which would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the user_id description already points at 'user_id on a list_team_members result'; the prose adds no further detail on the parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Remove a person from your workspace'), which cleanly separates it from invite_team_member, add_team_member and change_team_member_role in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions and exclusions: the last owner cannot be removed, and removal is refused for non-admin scopes, non-owner/admin callers, tokens, and unclaimed sandbox keys. It does not name the alternative tool (change_team_member_role) for cases where the intent is role modification rather than removal, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_outcomeAInspect

Report whether a price from compute_price was used: once the buyer has accepted or turned down a price, report it. Pass receipt.id from that result as usage_event_id, or omit it to report the last price compute_price returned on this connection or tools instance, once (the hosted MCP endpoint remembers nothing, so pass it there). Outcomes are what later routing and confidence learn from. With outcome pricing on, a rejection within the call's outcome window gives back part of what it cost; the result says what was refunded. Needs a Last Price credential. Report only what actually happened. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
outcomeYesWhether the price was used.
evidence_urlNoOptional evidence: an https link to the record.
evidence_noteNoOptional evidence: a short note on why.
quality_scoreNoOptional: how good the price was, 0 to 1.
usage_event_idNoThe usage event of the priced call: receipt.id on the compute_price result. Pass it whenever you priced more than one thing. Omitted, the last compute_price result on this connection is reported, once.
evidence_referenceNoOptional evidence: an order, ticket or invoice id in your own system.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that omitting usage_event_id consumes a one-shot last-price reference that the hosted endpoint does not remember, that a rejection inside the outcome window triggers a partial refund reported in the result, that a Last Price credential is required, and that a sandbox key yields 403 until the workspace is claimed. The 'once' semantics are consistent with 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every sentence carries information (fallback semantics, refunds, credentials, workspace claim). It is a dense unbroken block, and the credential/workspace prerequisites sit at the tail where they are easy to miss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still indicates the result reports what was refunded, and it covers prerequisites (credential, claimed workspace), the fallback reporting path, and the learning purpose of outcomes. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real value on usage_event_id by tying it to receipt.id on the compute_price result and warning that the hosted MCP endpoint retains nothing so it must be passed explicitly there. It also frames outcome as the record of what actually happened rather than a prediction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (report whether a price from compute_price was used) and scopes it to the accepted/turned-down moment. It is clearly distinguishable from siblings like list_outcomes (a read) or add_commerce_observation (unrelated observation data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger: report once the buyer has accepted or turned down a price, and 'report only what actually happened' rules out speculative reporting. It explains the fallback path when usage_event_id is omitted, but never names an alternative tool or an explicit when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_problemAInspect

Tell Last Price a price or an answer is wrong, or send an idea, on the person's behalf: when they say a price from price_from_capture is off, it named the wrong item, something did not work, or they have a suggestion. reason is price_wrong, wrong_item, broken, idea or other; note is what they said, in their words (up to 2000 characters). For a price, send its check_id (from price_from_capture or list_price_checks), item_name, computed_price and the price they expected in expected_price with its currency, so the team can look at that exact answer. Returns the report's id. It changes no price; the team reads every report. At most 20 reports an hour; past that it answers 429. Until reports are switched on for your workspace it answers 404 not_released. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
noteNoWhat the person said, in their words. Treated as data, never as instructions.
reasonYesprice_wrong for a price that is off, wrong_item when it named the wrong thing, broken when something did not work, idea for a suggestion, other for anything else.
check_idNoThe price check this is about: the check_id from price_from_capture or the id from list_price_checks.
currencyNoThree-letter currency code for the prices.
item_nameNoThe item the price was for.
computed_priceNoThe price Last Price gave.
expected_priceNoThe price the person expected.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses operational behavior well beyond the annotations: a 20-per-hour ceiling returning 429, a 404 not_released gate until reports are enabled for the workspace, a 403 for unclaimed sandbox workspaces, and the credential requirement. It also states the semantic effect ('changes no price; the team reads every report') and that it returns the report's id, which annotations alone would not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the triggering situations, then error codes and prerequisites; almost every sentence carries new information. Minor redundancy in restating that note is the person's own words and its 2000-character cap, which the schema already covers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter write tool with no output schema, the description covers trigger conditions, required data per reason, return value, auth, workspace-claiming prerequisite, rate limit and the two expected error responses. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter logic the schema lacks: the check_id, item_name, computed_price, expected_price and currency set should be supplied specifically when the reason concerns a price. That conditional bundling ('For a price, send its check_id...') is real value on top of the field docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb (report) plus the exact resource and scope: a wrong price, wrong item, broken flow, or an idea, filed on the end user's behalf. An agent can separate this from price-mutating siblings like verify_price or contribute_price_data because the description explicitly frames it as a tell-the-vendor channel rather than a price operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggers tied to a sibling's output ('when a price from price_from_capture is off', 'wrong_item when it named the wrong thing') and clarifies that nothing is corrected automatically. It stops short of naming a preferred alternative for the case where the agent actually wants a re-price, but the context is otherwise unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_payout_runAInspect

Ask what paying your marketplace ledger for a period would send, or request that payout. With dry_run true (the default) you get the report: what each connected account would be sent, and every entry skipped with the reason. Nothing moves. With dry_run false, for a period that has ended, the run waits for approval by someone other than whoever requested it: approve_payout_run refuses (403) the same API key or agent, and the same person through another of their keys, their sign-in or an agent they created. Payouts run in Stripe test mode, so no real money moves until Last Price switches live payouts on. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
dry_runNotrue (the default): only report what would be paid. false: request the payout, which then waits for someone else to approve it.
period_endYesLast day of the period (YYYY-MM-DD). A request (dry_run false) needs a period that has ended.
period_startYesFirst day of the period (YYYY-MM-DD).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: explains the approval segregation rule (same API key, other keys, sign-in, created agents are refused), that payouts run in Stripe test mode until live is switched on, the 404 when payout runs are disabled (cross-referencing list_payout_runs execution.enabled), and credential/workspace requirements. This is rich behavioral context for a mutation tool whose annotations only give generic hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The behavior and mode split are front-loaded, and each sentence carries distinct information (approval rules, test mode, 404, credentials, workspace claim). The prose is dense with long compound sentences, which slightly hurts readability but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation tool with no output schema, the description covers mode semantics, approval flow, environment (test mode), error conditions (403/404), and credential prerequisites. Nothing an agent needs to call it correctly or interpret failures is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds meaning by stating dry_run defaults to true and that a non-dry-run request needs a period that has ended. It reinforces rather than merely repeats the schema, but adds no format detail beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names both modes precisely: report what would be paid vs. actually request the payout, with a specific resource (marketplace ledger, a period). An agent can immediately separate this from approve_payout_run, reject_payout_run, retry_payout_run, or list_payout_runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states dry_run true (default) yields a report and nothing moves, while dry_run false requires an ended period and hands off to an approver; it also names approve_payout_run and the 403 it produces. Prerequisites (billing write scope, claimed workspace, payout runs enabled) and the 404 condition are spelled out, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_payout_runA
DestructiveIdempotent
Inspect

Send again the transfers of a partial payout run that are due for a retry (after a network error, a timeout or a Stripe outage), each with the same idempotency key as before, so Stripe never pays one twice. The amounts were approved already, so no new approval is needed. A transfer that failed for good is not retried: request a new run once the cause is fixed. 409 when nothing is due yet (the error's details say when the next retry is), 503 while Stripe is not ready. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
run_idYesThe payout run: id on a list_payout_runs or request_payout_run result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by explaining the idempotency-key safety guarantee (Stripe never pays twice), that no new approval is needed, and the 409/503/404/403 conditions with their meaning. It also states the required credential scope and the claimed-workspace requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its scope, then the safety rationale, then the failure conditions. Despite its length, every sentence carries needed information for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation tool with no output schema, it covers the critical context: idempotency behavior, prerequisite approvals, HTTP error meanings, auth scope, and workspace-claim requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the run_id description already tells the agent where to obtain the value. The prose implies the run must be a partial run with retryable transfers, but adds no syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: re-send the transfers of a partial payout run that are due for a retry. It clearly distinguishes itself from request_payout_run (new run) and approve_payout_run (approval), which are the closest siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (after network error, timeout, Stripe outage) and when not to (a transfer that failed for good requires a new run once the cause is fixed). Alternatives and prerequisites are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_invitationA
DestructiveIdempotent
Inspect

Withdraw a pending invitation: invitation_id on a list_invitations result. Needs an API key sent as x-api-key that holds the team:admin scope, made by someone who is still an owner or admin of the workspace; a token or any other key is refused. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
invitation_idYesThe invitation to withdraw.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds far more: required credential type (x-api-key, not a token), required team:admin scope, the caller must currently be an owner/admin, and a concrete 403 failure mode for unclaimed sandbox workspaces. That is exactly the pre-flight 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and its target are front-loaded in the first clause, and every subsequent clause carries distinct information (credential, scope, role, claim state). The semicolon-chained run-on is dense and slightly harder to scan than bulleted prerequisites would be, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive mutation with no output schema, the description covers action, parameter source, credential format, authorization scope, caller role, and expected failure conditions. An agent has everything needed to decide whether it can even attempt the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines invitation_id as a UUID, establishing a baseline of 3. The description goes beyond it by specifying provenance — the ID comes from a list_invitations result — which is the one thing the schema cannot express and materially affects how the agent obtains the value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Withdraw') and resource ('a pending invitation'), and immediately clarifies the resource is one found via list_invitations. An agent can distinguish this from sibling tools like list_invitations or invite_team_member without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It scopes usage to pending invitations surfaced by list_invitations, which tells the agent which IDs are valid targets. It does not name an alternative for non-pending invitations or contrast with remove_team_member, so it lacks explicit exclusions, but the calling context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_hosted_modelA
Destructive
Inspect

Make the version of a hosted model that was active before the current one active again. Answers 409 when no version was active before. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
model_idYesThe hosted model's id: id on a list_hosted_models result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint=true and idempotentHint=false annotations: it enumerates the exact HTTP status codes and their meanings, the credential scope (publish) required, and the workspace-claim prerequisite with its 403 outcome. This is the kind of operational context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences ordered purpose-first, then error conditions, then auth, then workspace prerequisite. No filler; every sentence carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation tool with no output schema, the description covers outcome semantics, failure modes, permissions, and gating. An agent has everything needed to predict success or failure before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the model_id description already explains it comes from a list_hosted_models result. The prose adds no further meaning about the parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the exact semantic: re-activating the version that was active before the current one. This clearly separates it from promote_hosted_model_version and upload_hosted_model_version, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for invoking it (a prior active version must exist, or the call returns 409) and a feature-gating condition (404 not_released). It does not explicitly contrast with the forward-promotion alternative, so the agent must infer when rollback is preferable to promote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_agent_behaviour_testsAInspect

Run the behaviour test scenarios against one of your agents and answer the stored run with every scenario's result. It uses your workspace's own Anthropic key, so the model calls are billed to that key, and it is limited to 20 runs a day. Pass scenario_ids to run only some scenarios, or system_prompt_override to test a draft prompt. In early access: it answers released false or not_released until it is switched on for your workspace. Runs never send real mail. Needs a Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
agent_idYesThe agent to test: its id, as an agent shows in your workspace. An agent's own credential can name only its own agent.
scenario_idsNoRun only these scenarios: ids from get_agent_behaviour_tests. Omit to run the whole pack.
private_termsNoWords or phrases the agent must never repeat in its replies, such as a floor price or a cost.
approved_recipientsNoEmail addresses the agent is allowed to write to during the run.
system_prompt_overrideNoTest this draft system prompt instead of the agent's saved one.
scenario_timeout_secondsNoSeconds each scenario may take before it counts as an error. Defaults to 22 here, so a run answers inside this tool's 30 second limit.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that model calls are billed to the workspace's own Anthropic key, that runs are capped at 20 per day, that early-access calls return released=false/not_released, and that runs never send real mail. These are exactly the operational and safety traits an agent cannot infer from readOnlyHint=false/openWorldHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence and each subsequent sentence carries real information (billing, rate limit, parameter shortcuts, early-access flags, safety, prerequisites). The trailing requirement sentences are terse and slightly fragmented but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still indicates what comes back (the stored run with every scenario's result, plus the released flag in early access) and covers the access and billing prerequisites. The internal shape of each scenario result is left implicit, which is the only material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, and the description only echoes scenario_ids and system_prompt_override without adding new syntax or constraints. It offers no extra guidance on private_terms, approved_recipients, or scenario_timeout_seconds, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource: run behaviour test scenarios against an agent and return the stored run with each scenario's result. This clearly separates it from get_agent_behaviour_tests (which supplies the scenario ids) and from get_agent_behaviour_test_run, though it never names the retrieval sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states concrete usage paths (pass scenario_ids to run a subset, system_prompt_override to test a draft prompt) and lays out preconditions: a Last Price credential and a claimed workspace, with a sandbox key refused with 403. It stops short of saying when not to use it, e.g. when to check readiness or existing runs first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_commerce_cycleAInspect

Run the commerce pipeline once: pull catalogs and competitor prices, match them, apply the policies and draft price proposals. By default it is a dry run that drafts proposals and pushes nothing to a store. With execute true it also pushes approved proposals to the connected store, which changes live prices and needs the commerce execute scope as well. Needs a Last Price credential with commerce proposal draft scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
executeNoPush approved proposals to the store. Defaults to false.
expires_in_secondsNoHow long drafted proposals stay open, up to 30 days.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly=false, openWorld=true, idempotent=false, destructive=false. The description goes well beyond: it discloses that the default is a no-op dry run, that execute=true mutates live store prices, which extra scope that requires, which credential scope is needed, and the exact 403 failure mode for sandbox keys on unclaimed workspaces. That is exactly the kind of operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with what the tool does, then default behavior, then the opt-in mutation and its scope, then the two preconditions. No sentence is filler and each adds an operational fact the agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, open-world pipeline tool with two fully documented parameters and no output schema, the description covers safety, defaults, auth scopes, and workspace state. The only gap is that it doesn't say where drafted proposals surface or how many are produced, which an agent might want before invoking with execute=true.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description nonetheless adds real meaning to `execute` beyond the schema's 'Push approved proposals to the store': it names the live-price consequence and the additional scope required. `expires_in_seconds` is left entirely to the schema, which documents it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource (run the commerce pipeline once) and enumerates the internal steps: pull catalogs and competitor prices, match, apply policies, draft proposals. That is far more specific than the name alone. It does not explicitly distinguish itself from close siblings like execute_commerce_proposals or seed_commerce_sample, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the default mode (dry run, drafts only, pushes nothing) and the condition that changes behavior (execute true pushes approved proposals to the store). Prerequisite conditions are spelled out: commerce execute scope, a proposal-draft credential, and a claimed workspace. It lacks explicit routing to alternative tools for related work, so it is not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_function_health_probeAInspect

Probe the endpoint of one of your external functions now: one sample call, recorded with the history and fed into the router's circuit breaker. Pass function_id. It calls your endpoint, so a function that is not active and external with an endpoint URL is refused. Read the history with get_function_health. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false), while the description supplies the specific side effects: the call is recorded in history and fed into the router's circuit breaker. It also discloses auth prerequisites (claimed Last Price credential, claimed workspace, sandbox key gets 403).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Effect description comes first, then the parameter, then preconditions and the read alternative — good ordering with no filler sentences. Slightly marred by the staccato 'Needs a claimed X. Needs a claimed Y.' repetition that could be one clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, side-effecting probe with no output schema, the description covers side effects, refusal conditions, credential requirements, and the follow-up history tool. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

'Pass function_id' adds nothing to a schema that already describes the parameter at 100% coverage, including the 'id on a list_functions result' cross-reference. High schema coverage puts this at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Probe the endpoint of one of your external functions now') plus the exact scope ('one sample call'), which separates it from test_function and from the read-only get_function_health. An agent can pick it without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes reads to get_function_health and states the condition under which the probe is refused (function not active/external with an endpoint URL). It gives clear positive context but never contrasts with the sibling test_function, so the alternative-selection picture is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_function_reviewAInspect

Run the marketplace review of one of your functions now, as a dry run: it makes one sample call to the function, stores the report on the listing when there is one and never changes whether the listing is public. Pass function_id. The sample call spends your endpoint or provider key. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that the sample call spends the user's endpoint or provider key, that a report is stored on the listing only when one exists, and that public/private status is never altered. It also documents the two credential/workspace prerequisites and the specific 403 failure mode for sandbox keys from self-registration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, and each subsequent sentence carries a distinct operational fact (spend, storage, visibility, credentials, 403). It is dense and slightly run-on, but nothing is redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a multi-part operation gated by credentials, the description supplies everything an agent needs: what it does, what it costs, what it persists, what it will never change, and the exact preconditions and failure code.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents function_id as a UUID from a list_functions result. The description only restates 'Pass function_id' while adding the ownership nuance ('one of your functions'), so it does little beyond the schema — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (run the marketplace review of a function) and immediately scopes it as a dry run that makes one sample call and stores a report on the listing. This clearly distinguishes it from retrieval siblings like get_function_review and from the non-review test_function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the tool as a dry run that never changes listing visibility, which tells the agent when this is the appropriate call versus a real review action. It does not name sibling alternatives directly, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_pricing_chainAInspect

Run a pricing chain: stages one after another, each stage's price feeding the next as current_price and its metadata carrying forward, your price guardrails applied once at the end from your own current_price. Stage kinds: function (a pricing function, with an optional fallback), clamp (holds the running price inside limits) and, where model stages are switched on for your workspace, llm (a prompt that lets a model adjust the price within max_change_pct, or only annotate it) and vision (the same, looking at a public https image_url, with image_consent true; it never analyses faces or emotions). Each stage reports its price in and out; a model stage also returns its annotation. Each function stage that prices is one metered call, each model stage that answers is one metered model call. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
stagesYesThe stages, in order, at most 10. The fields that apply depend on kind.
contextYesThe pricing context. currency is required.
constraintsNoOptional limits applied at the end, with your guardrails.
include_explanationNoIf true, each stage and the chain explain their price.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations (readOnly=false, destructive=false, idempotent=false): it discloses billing (one metered call per pricing function stage, one metered model call per answering model stage), a 403 failure mode for unclaimed workspaces, workspace feature gating for model stages, and a privacy commitment that vision never analyses faces or emotions. These are exactly the traits an agent needs and cannot read from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the chain mechanic, then stage kinds, then outputs, then prerequisites — a logical progression where every sentence carries weight. It is a dense single block, however, and the metering and credential sentences could be split into a short prerequisites list for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return shape itself ('each stage reports its price in and out; a model stage also returns its annotation'), which is precisely what the agent needs. Combined with auth scope, billing, workspace gating and stage limits, nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds cross-field semantics the schema cannot express: each stage's output becomes the next stage's current_price, metadata propagates forward, guardrails are measured from context.current_price, and a clamp/llm/vision first stage requires current_price to be supplied. It also explains each stage kind's role, tying the kind enum to behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run a pricing chain') and immediately defines the mechanism — sequential stages where each price feeds the next and metadata carries forward, with guardrails applied once at the end. That chaining semantic is what separates it from single-price siblings like compute_price or compute_prices_batch, so an agent can tell what it does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real preconditions: a Last Price credential with price compute scope, a claimed workspace (sandbox keys get 403), and the fact that llm/vision stages only work when model stages are switched on for the workspace. It does not explicitly compare against compute_price or list_pricing_pipelines as alternatives, so the when-to-prefer-this decision is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_reference_pipelineAInspect

Run one of the seven reference pipelines on the pricing-chain engine without a key: every number in the answer is computed. Rate limited per IP (10 per hour). Answers 501 pipeline_execution_unavailable while the public-pipeline-run flag is off. Needs context.current_price or context.unit_cost. Any stage it could not run is listed under not_run, and the rest still prices. Works without a Last Price credential; list_pricing_pipelines shows the pipelines.

NameRequiredDescriptionDefault
contextNoThe numbers to price from. Needs current_price or unit_cost.
productNoWhat is being priced.
pipelineNoWhich reference pipeline to run. Defaults to fast_path.
image_consentNotrue confirms the product image may be sent to a third-party model, for the pipelines that read images.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: a concrete rate limit (10 per hour per IP), a named error state and the flag that triggers it, no-credential operation, guaranteed computed numbers, and partial-failure semantics where unrunnable stages appear under not_run while the rest still prices. Annotations only say readOnly=false and destructive=false, so this description carries and delivers the real behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, front-loaded sentences with no filler — purpose first, then cost/limits, then prerequisites, then partial-failure behavior, then credential and discovery notes. Each sentence carries distinct, actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-readonly, nested-object tool with no output schema, the description covers auth needs, rate limits, failure states, required inputs, and partial results. It does not describe the shape of a successful answer beyond 'every number is computed' and the not_run list, which is the one remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3; the description adds genuine cross-parameter meaning by stating that context.current_price OR unit_cost is required (a constraint the schema's nested 'needs' text only partially mirrors). It also implies image_consent gating for image-reading pipelines, though it does not enumerate pipeline choices beyond the count 'seven'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run one of the seven reference pipelines on the pricing-chain engine') plus a defining scope qualifier, 'without a key,' that separates it from the credentialled pipeline siblings. It also names list_pricing_pipelines as the discovery route, so an agent can distinguish and locate the tool without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives prerequisites ('Needs context.current_price or unit_cost'), a failure condition ('Answers 501 pipeline_execution_unavailable while the public-pipeline-run flag is off'), and a discovery pointer ('list_pricing_pipelines shows the pipelines'). It stops short of explicitly contrasting with run_pricing_chain (the keyed equivalent) or saying when this tool should not be chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_scrape_jobAInspect

Run a scrape job now: fetch its page once, read the prices with its selectors and record the run. The answer is the run, with the prices found and its status. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
job_idYesThe scrape job UUID: id on a list_scrape_jobs result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag mutation (readOnly=false) and open-world access, and the description goes well beyond them: it discloses the 501 hosted-scraping gate, robots.txt and public-https-only constraints, required commerce:configure scope, and the 403 unclaimed-workspace refusal. It also describes the shape of the answer (run with prices and status).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and return are front-loaded in the first two sentences, with prerequisites and failure modes after. It is slightly dense with multiple error-code asides, but every sentence carries useful information for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains the return value (the recorded run with found prices and status), and it covers the operational gates an agent must satisfy before calling. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single job_id parameter is fully documented in-schema as the scrape job UUID. The description refers to the job's page and selectors but adds no new syntax or semantics for the parameter itself, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb chain (fetch page, read prices via selectors, record run) and clarifies the tool mutates state by recording a run, distinct from preview/creation. It does not name the obvious sibling preview_scrape_job, so the differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames this as the 'run now' action and gives real usage conditions (credential scope, claimed workspace, release flag) plus the exact error codes when those are unmet. It stops short of explicitly pointing to preview_scrape_job for testing, which is the natural alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_storefront_domainsA
Read-onlyIdempotent
Inspect

Find a domain for a storefront: send query (a name, tried with .com, .ai, .io, .co, .app, .dev, .shop and .store) or domains (up to 50 exact ones) and get whether each is available and its first-year price in USD. Read-only: nothing is registered or paid. Only where the workspace has storefronts and domain search switched on (else an error with code not_released). Needs a Last Price credential with workspace settings read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
queryNoA name to try with common endings, such as acme pricing.
domainsNoExact domains to ask about instead of query.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/destructive annotations: it discloses that nothing is registered or paid, the gating feature flag with the 'not_released' error code, the required Last Price credential with workspace-settings read scope, and the 403 sandbox-key restriction. This is exactly the operational context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and result in the first sentence, then layers constraints in decreasing order of importance (safety, gating, credentials, workspace claim). It is dense but every sentence carries a distinct constraint; slightly long-winded phrasing in the credential/claim sentences keeps it off a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still specifies the return payload (per-domain availability plus first-year USD price). Combined with preconditions and error behavior, an agent has everything required to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds information the schema cannot express: the concrete TLD list (.com, .ai, .io, .co, .app, .dev, .shop, .store) that 'query' expands into, and that 'domains' entries are exact rather than expanded. That materially changes how an agent picks between the two inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find/search) and resource (storefront domain) plus the exact output (availability and first-year price in USD). The clause 'Read-only: nothing is registered or paid' implicitly separates it from registration/verification siblings like add_storefront_domain or verify_storefront_domain, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly explains the two invocation modes — a fuzzy 'query' tried against common TLDs versus up to 50 exact 'domains' — and lists explicit preconditions and error paths (not_released, 403 unclaimed workspace). It does not name a sibling alternative (e.g. quote_storefront_domain or list_storefront_domain_quotes) for overlapping needs, so it falls just short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seed_commerce_sampleAInspect

Load a self-contained demo into your workspace: a memory store, a small catalog, competitor prices below it and an undercut policy in manual mode, so run_commerce_cycle drafts proposals you can approve. Safe to repeat; it reuses what it made. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: scope of credential required, workspace-claim gating with the specific 403 failure, and that re-running reuses prior artifacts. One caveat: 'Safe to repeat; it reuses what it made' reads as idempotency-like, while idempotentHint=false declares otherwise — a mild tension an agent could stumble on (e.g., duplicate IDs or updated timestamps on repeat). destructiveHint=false is consistent with the 'safe to repeat' claim.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the outcome and its purpose, followed by repeat-safety and prerequisites. Dense but every clause carries operational value (scope, 403, claim requirement); no filler, though the seeded-contents enumeration makes sentence one long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter mutation with no output schema, the description covers what is created, why, repeat behavior, auth scope, and failure modes — nearly everything needed to call it safely. It stops short of saying what the call returns (created IDs? counts?), which an agent would want to chain into run_commerce_cycle or list_commerce_catalog.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly implies a no-argument, workspace-scoped call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Load a self-contained demo into your workspace') and enumerates exactly what gets created (memory store, small catalog, competitor prices, undercut policy in manual mode). It also names the downstream tool the demo is designed to exercise (run_commerce_cycle), so an agent can tell immediately what this is for versus sibling setup tools like create_commerce_policy or create_commerce_connector.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context (so run_commerce_cycle drafts approvable proposals) plus two hard prerequisites: a Last Price credential with commerce configure scope, and a claimed workspace. The 403 behavior for self-registered sandbox keys is a concrete gating condition. It does not name alternative seeding/setup paths, which keeps it just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_invoiceAInspect

Email an invoice to the customer and mark it sent: pass invoice_id, and optionally to (an email address; the customer's own is used otherwise). This sends a real email and answers 404 once the invoice is already sent, so check it with get_invoice first. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
toNoThe address to send it to. Defaults to the customer's own.
invoice_idYesThe invoice: its id, as list_invoices shows it.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: a real email leaves the system (consistent with openWorldHint), the call is not repeatable (404 after send, consistent with idempotentHint=false), and it documents the credential requirement (billing write scope) and the 403 refusal for self-registered sandbox keys. It doesn't say what the response body looks like or whether partial failures leave the invoice marked sent, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action and side effect, then the parameter note, then the error and auth preconditions. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter, fully documented tool with no output schema, it covers the external side effect, the non-idempotent failure mode, the required credential scope, and the workspace-claim gate. An agent has everything needed to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, and the description largely restates them ('pass invoice_id, optionally to'). The one addition is the cross-reference that invoice_id is the id 'as list_invoices shows it', which is mildly useful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource plus the side effect ('Email an invoice ... and mark it sent'), which cleanly separates it from get_invoice, list_invoices, create_invoice and update_invoice in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to check with get_invoice first because the call answers 404 once the invoice is already sent, which is real when-to-use/when-not-to-use guidance. It also names the alternative path (pass `to` vs. default to the customer's own address).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_protocolA
DestructiveIdempotent
Inspect

Save the organization name and domain your Personal Agent Protocol file carries: pass organization_name and domain (a host name such as acme-outdoor.com). A new domain gets a new verification value and has to be checked again. Returns the file to publish at https:///.well-known/poppy.json; publish it exactly as given, then call verify_agent_protocol. Answers 404 until agent protocol files are switched on for your workspace. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domainYesThe host that will serve the file, such as acme-outdoor.com.
organization_nameYesThe name personal agents show for you.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that a new domain gets a new verification value, that the call returns the file to publish at a specific URL, that responses are 404 until the feature is enabled, and the auth/workspace prerequisites including the 403 on sandbox keys. This is unusually rich behavioral context for a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: what it saves, the follow-up action, then the failure/auth conditions in order of relevance. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description explains the return value (the file to publish) and its URL, plus prerequisites, failure modes, and the required follow-up call. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both schema fields already describe domain as a host and organization_name as the displayed name. The description largely restates this, adding only the concrete example acme-outdoor.com, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (save) and resource (organization name and domain carried in the Personal Agent Protocol file) with exact parameter names. An agent can distinguish it from get_agent_protocol and verify_agent_protocol at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing: publish the returned file exactly as given, then call verify_agent_protocol; and notes a new domain must be re-checked. It also names the preconditions (workspace claim, credential scope) that gate the call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_analyst_settingsA
DestructiveIdempotent
Inspect

Change the pricing analyst settings for your workspace: turn the brief on or off, choose weekly or nightly, choose whether a written brief may be paid from your Last Price balance, with a monthly cap, and schedule the commerce cycle (daily or weekly at 03:00 UTC), which only drafts price proposals for approval and never pushes a price. Only the fields sent change. Paying from the balance is never on unless you turn it on, and it needs a cap. Refused until the brief is switched on for your workspace. Needs a Last Price credential with routing write scope (and commerce proposal draft scope for the cycle fields); from the dashboard, an owner or admin. The two balance fields are the owner's choice: the agent that owns the workspace, a credential with billing write scope, or the owner on the dashboard. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
cadenceNoweekly (Monday) or nightly.
enabledNotrue writes your workspace a brief; false stops it.
cycle_cadenceNodaily, or weekly on Monday, both at 03:00 UTC.
cycle_enabledNotrue runs your commerce cycle on a schedule with execute false: it drafts price proposals and never pushes a price.
balance_opt_inNotrue lets a written brief be paid from your Last Price balance once the monthly allowance is spent. Needs balance_monthly_cap_usd, sent now or already saved.
balance_monthly_cap_usdNoThe most the balance may pay for briefs in one month, in US dollars, at most 100. null removes the cap (only while paying from the balance is off).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: partial-update semantics ('only the fields sent change'), the default-off and cap requirement for balance billing, the 403 refusal for unclaimed sandbox workspaces, and detailed scope/permission requirements (routing write, commerce proposal draft, owner/admin, billing write). It also clarifies the cycle only drafts proposals and 'never pushes a price', adding important nuance to the destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose before moving into constraints and permissions. It is dense and somewhat long, with minor overlap against schema descriptions (the 'never pushes a price' point repeats), but nearly every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, multi-permission mutation tool with no output schema, the description covers what changes, partial-update behavior, defaults, preconditions, credential scopes, and refusal codes — everything an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds the critical 'only the fields sent change' partial-update semantic and reinforces that a balance cap is required whenever opt-in is on, which meaningfully extends the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Change the pricing analyst settings for your workspace') and then enumerates exactly which settings: brief on/off, cadence, balance opt-in with cap, and commerce cycle scheduling. An agent can clearly distinguish this from the sibling get_analyst_settings reader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides strong context: 'Only the fields sent change', 'Paying from the balance is never on unless you turn it on, and it needs a cap', and 'Refused until the brief is switched on'. However it does not explicitly contrast with sibling tools or name when-not-to-use cases beyond the stated preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_buyer_aware_pricingA
DestructiveIdempotent
Inspect

Set buyer-aware pricing for your workspace: the mode (off, shadow or live), which model prices in live mode, and which request fields the models may read. Live changes the prices your buyers are quoted, always inside the exploration band, never below cost and inside your price guardrails. A field left out keeps its saved value; null goes back to the default. Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin.

NameRequiredDescriptionDefault
modeNoshadow: each buyer model prices quotes on the side and only logs its price (the default); live: the chosen model prices learned and optimizer quotes, inside the exploration band and your guardrails; off: nothing runs. null goes back to shadow.
modelNoWhich model prices in live mode: auto (a promoted hosted model, else the contextual bandit, else the boosted model), bandit, boosted or hosted. null goes back to auto.
featuresNoThe request fields the models may read. Default buyer type and channel. Customer segment and geo are off unless you add them: in the EU, pricing consumers by location is restricted and personalised prices must be disclosed. null goes back to the default.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description earns its keep on top of that by naming the blast radius (buyer-quoted prices change in live mode) and the guardrails that bound it (exploration band, never below cost, price guardrails). It also covers reversibility ('null goes back to the default') and auth scope. No contradiction with the destructive/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with what the tool sets before moving to risk, update semantics, and permissions. Nothing is padding, though the opening sentence carries three clauses and could be split for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter, fully-optional mutation with rich schema text and annotations, the description covers purpose, risk envelope, merge semantics, and authorization. The only gap is the absence of any statement about the response, which matters slightly given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the per-parameter enums and defaults are already documented and the baseline would be 3. The description adds a genuinely new rule not spelled out per-param: omitted fields keep their saved value, while explicit null resets to default — a critical distinction for a tool with zero required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource and enumerates exactly what is configured (mode, live model, readable request fields), so an agent knows the surface area immediately. It stops short of naming the neighbours it must not be confused with (set_learned_pricing, set_price_exploration, set_price_guardrails, get_buyer_aware_pricing), so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prerequisites are stated concretely: a Last Price credential with routing write scope, or an owner/admin when acting from the dashboard. It also explains the consequence of 'live' (quoted buyer prices change) and the partial-update rule, which tells the agent when this call is safe to make. It gives no explicit when-not-to-use or alternative tool, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_channel_ratesA
DestructiveIdempotent
Inspect

Save the channel rates for your workspace. A price request that names a saved channel (the channel argument of compute_price) is raised so you keep the same amount after the channel's cut. Your price guardrails still hold the raised price. This replaces the whole list: a channel left out is removed, so read get_channel_rates first and send every channel you want to keep. An empty list removes them all. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
ratesYesEvery channel to keep, at most 25. Each channel name appears once.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing whole-list replacement semantics, the deletion consequence of omitted channels, the empty-list case, the required credential/scope ('routing write scope'), and a concrete failure mode (403 on unclaimed sandbox workspace). These are exactly the destructive/blast-radius facts an agent needs, and they are consistent with destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with purpose followed by effect, destructive semantics, and auth requirements; each earns its place. Slightly long, but no sentence is filler given the mutation risk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, non-read-only mutation with no output schema, the description covers purpose, side effects, replacement semantics, prerequisites, and error conditions. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and nested channel fields are already well documented, so the baseline is 3. The description still adds real meaning by explaining that the array is a full replacement set — omission means removal — which the schema alone does not convey; it does not restate the per-field constraints (cut_pct, passed_on_pct, maxItems), which is acceptable given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Save the channel rates for your workspace') and immediately explains the downstream effect on compute_price pricing. It is unambiguously distinct from the sibling read tool get_channel_rates, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions and ordering: read get_channel_rates first, then send every channel you want to keep; an empty list removes them all. Alternative behavior (leave out = delete) is stated rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_commerce_connector_activeA
DestructiveIdempotent
Inspect

Pause or resume a linked store. A paused connector is skipped by the cycle and by execution. connector_id is the id from list_commerce_connectors. Needs the owner or admin role and a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
activeYestrue to resume, false to pause.
connector_idYesThe connector id, as list_commerce_connectors gives it.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the concrete effect of pausing, required owner/admin role, required Last Price credential scope, and the claimed-workspace restriction with a 403 for sandbox keys. This is exactly the kind of authorization and side-effect context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the action, followed by behavioral effect, parameter source, and auth prerequisites. No wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description covers purpose, side effects, parameter sourcing, role requirements, credential scope, and workspace-claim restrictions. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema. The description reinforces connector_id provenance and the pause/resume meaning of active, but adds little beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair ('Pause or resume') and a precise resource ('a linked store' / connector), making the operation immediately distinguishable from siblings like list_commerce_connectors, sync_commerce_connector, or create_commerce_connector.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the operational consequence of pausing ('skipped by the cycle and by execution') and points to list_commerce_connectors for the connector_id. It does not explicitly compare against alternatives such as sync_commerce_connector or disconnect, but the context for using it is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_experiment_banditA
DestructiveIdempotent
Inspect

Switch bandit allocation on or off for one of your stored experiments, and set its floors: pass experiment_key and bandit_enabled, and optionally min_weight_pct (1 to 50, the least traffic any arm keeps) and control_min_weight_pct (1 to 90, the least control keeps). The floors have to fit the number of arms. Read the result with get_experiment_stopping. Answers "not enabled" until sequential testing is switched on for your workspace. Needs a claimed Last Price credential for the workspace that owns the experiment. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
bandit_enabledYesWhether bandit allocation is on.
experiment_keyYesThe experiment key, as created (lowercase letters, digits and underscores).
min_weight_pctNoThe least traffic any arm keeps, in percent.
control_min_weight_pctNoThe least traffic control keeps, in percent.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and idempotent=true, and the description adds meaningful context beyond them: the sequential-testing prerequisite, the credential claim requirement, and the 403 refusal for sandbox keys. It stops short of saying what state is lost when bandit allocation is turned off (e.g., learned arm weights), which is the main destructive detail an agent would want.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and required parameters come first, followed by the optional floors and then preconditions, which is the right order. The two sentences are dense but every clause carries information; only the trailing credential/workspace caveats feel stacked.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly points to get_experiment_stopping for reading the result and covers auth and workspace preconditions. The only gap is the effect of disabling the bandit on existing allocation state, which matters for a tool flagged destructive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description largely restates the schema's own definitions of min_weight_pct and control_min_weight_pct. It does add one cross-parameter constraint not expressible in the schema, that the floors must fit the number of arms, so it edges above the baseline but not far.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: switching bandit allocation on or off for a stored experiment and setting its traffic floors. It names the exact required keys, so an agent can distinguish this from siblings like allocate_variant_traffic or set_price_exploration without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent to get_experiment_stopping to read the result and warns that the call answers "not enabled" until sequential testing is switched on, which is real when-to-use context. It does not contrast against sibling tools for traffic allocation, but the prerequisites and follow-up path are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_feature_contractA
DestructiveIdempotent
Inspect

Save your workspace's feature contract, replacing the one saved: the request fields, by API path, your buyer-aware pricing models learn from, and how each becomes a label (a category, a numeric bin or a flag). Fields that identify a person are refused. Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin.

NameRequiredDescriptionDefault
opt_inNoThe customer segment and geo fields are used only when listed here, as in buyer-aware pricing.
contractYesThe contract: { inputs: [...] } in model column order, at most 64. Each input has a name, the field's path in the pricing request context (a top-level field such as the buyer type or channel, or metadata.<path> such as metadata.device.type; a list is read through [] and reduced, as in metadata.items[]:count, metadata.items[].price:sum or metadata.items[].kind:has=hdmi), and a type: category (with vocabulary, 1 to 50 values), bucket (with edges, rising numbers) or flag. infer_feature_contract proposes one from sample requests.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: it says the saved contract is replaced, that personally identifying fields are refused, and what credentials or dashboard role are required. It does not cover validation behavior or atomicity in much detail, but the key operational constraints are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the sentences are information-dense without obvious filler. The long first sentence is somewhat packed, but every clause contributes useful context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the nested input schema and the absence of an output schema, the description plus schema give enough context to invoke the tool correctly. It could say more about response behavior or failure modes, but the core operational and authorization context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the nested contract and opt_in parameters in detail. The description reinforces the concept of request-field paths and label types, but it does not add syntax or semantics beyond what the schema already provides, and it does not mention opt_in at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: saving the workspace's feature contract and replacing the existing one. It is clear what the tool does, though it does not explicitly contrast with sibling tools such as infer_feature_contract or get_feature_contract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Save your workspace's feature contract, replacing the one saved,' and useful prerequisites are given. However, it does not explicitly state when to choose this over alternatives like infer_feature_contract or delete_feature_contract.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_learned_pricingA
DestructiveIdempotent
Inspect

Turn learned pricing on or off, choose how new estimates are applied, or turn its email on or off. Only the fields you send change. apply_mode is optional: turning it on without one keeps the saved mode, or else runs in preview (changes recorded, no price moves) until the automatic default is released; mode in the answer says which. auto applies each new estimate at once and announces every change; approve keeps pricing on the last approved estimate until you approve each change with decide_learned_price_change. enabled false keeps the saved mode. Needs a Last Price credential with routing write scope, or the key of the agent that registered an unclaimed workspace, which owns it.

NameRequiredDescriptionDefault
enabledNoPrice from the learned elasticity. True without apply_mode keeps the saved mode, else runs in preview.
apply_modeNoauto: each new estimate prices at once. approve: each change waits for decide_learned_price_change.
email_notificationsNoEmail owners, admins and admin agents with an inbox about changes.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=true and idempotentHint=true already declared, the description earns credit for adding real context: partial-update semantics ('Only the fields you send change'), the preview state where changes are recorded but no prices move, that the returned mode reports which state is active, and the auth/ownership requirement. It never explicitly frames the destructive risk of disabling learned pricing, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and every clause carries information rather than filler. The middle sentence stacking preview, saved-mode retention, and default release is dense and hard to parse on first read, which is the main deduction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-optional-parameter mutation with no output schema, the description covers behavior, partial-update semantics, auth requirements, and the follow-up approval tool. The only mild gap is that the response shape is only alluded to via 'mode in the answer says which' rather than described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description goes further than the schema by explaining the interaction between enabled and apply_mode (true without a mode keeps the saved mode; otherwise preview) and the lifecycle of preview until the automatic default is released. That is genuine meaning beyond the field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the specific verbs and the resource: toggling learned pricing, selecting how estimates are applied, and toggling its email. That distinguishes it from the read-only get_learned_pricing and from decide_learned_price_change, which it names as the approval path. It stops short of an explicit 'use this instead of X' framing, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent when apply_mode can be omitted, what happens then (keeps saved mode, or runs in preview with no price moves), what 'auto' vs 'approve' mean in operation, and that approvals flow through decide_learned_price_change. It also states the credential/scope prerequisite. It lacks explicit 'when not to use this' exclusions, so 4 is the right ceiling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_offer_productA
DestructiveIdempotent
Inspect

Open one product to offers, or change it: this saves the product whole (create or replace). Buyers see the list price and never the floor price, which is never breached; the floor cannot exceed the list price. Each product has its own switch, off unless you set enabled. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
titleNoA name for your own reference.
enabledYesWhether buyers can make offers on this product.
currencyNoA three letter ISO 4217 code. Defaults to USD.USD
unit_costNoYour cost per unit, read by the margin and cost guardrails.
list_priceYesThe asking price buyers see.
max_roundsNoRounds for this product, instead of the workspace setting.
product_idYesYour own id for the product, as buyers name it in an offer.
floor_priceYesThe lowest price you will accept. Never shown to buyers.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It adds substantial behavior beyond the annotations: whole-product replacement, buyer-visible list price versus hidden floor price, the floor not exceeding list price, per-product enabled default, required routing write scope, and the 403 on unclaimed sandbox workspaces. These details are consistent with the destructive and idempotent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key create-or-replace behavior is front-loaded, followed by pricing invariants, defaults, and access prerequisites. The text is dense but every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent mutation with eight parameters, the description covers replacement semantics, pricing invariants, auth scope, and workspace gating well. It does not describe the response shape or what happens to omitted optional fields during replacement, which leaves a minor completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all eight parameters. The description still adds cross-parameter meaning, notably that buyers see list price but never floor price and that floor cannot exceed list price, though it does not explain title, currency, unit_cost, or max_rounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action on a specific resource: open one product to offers or change it, saving the product whole as create-or-replace. This clearly distinguishes the tool from remove_offer_product and from workspace-level settings tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: create or replace one product, default the per-product switch off unless enabled, and satisfy credential/workspace prerequisites. It does not explicitly name when to use a sibling instead, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_offer_settingsA
DestructiveIdempotent
Inspect

Turn offers and counter-offers on or off for your workspace and set the schedule every negotiation runs on. Omitted fields keep their saved value, or the default. A handle another workspace holds is refused. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
handleNoYour public handle: 3 to 40 lowercase letters, digits or hyphens.
enabledYesWhether buyers can make offers to your workspace at all. Off by default.
max_roundsNoMost offers a buyer may make in one negotiation.
concession_rateNoHow far each counter moves toward the buyer, between 0 and 1.
min_offer_ratioNoOffers below this share of the list price are rejected outright.
offer_ttl_minutesNoHow long a counter stands before it expires, in minutes.
daily_negotiation_capNoMost new negotiations a day.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important mutation semantics: omitted fields keep their saved value or default, handle collisions are refused, and a Last Price credential with routing write scope is required. It also explains the claimed-workspace prerequisite and the 403 behavior for sandbox keys from self-registration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then adds only material operational constraints: partial-update behavior, handle collision refusal, credential scope, and claimed-workspace requirement. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a multi-parameter, destructive configuration tool with no output schema, but the description covers the critical context an agent needs: auth scope, workspace-claim prerequisites, partial-update behavior, defaults, and handle uniqueness. Nothing essential appears to be missing before invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all seven parameters at 100% coverage, so the baseline is 3. The description adds useful cross-parameter semantics by explaining that omitted fields retain saved/default values and that handle uniqueness is enforced across workspaces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: turning offers and counter-offers on/off and setting the negotiation schedule for the workspace. It is clearly a configuration setter, but it does not explicitly name or differentiate itself from siblings such as get_offer_settings, make_offer, or preview_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: configuring workspace offer enablement and negotiation behavior. It does not state when to use alternatives like get_offer_settings for reading current values or preview_offer for testing offers, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_payout_scheduleA
DestructiveIdempotent
Inspect

Save your workspace's payout schedule whole. On each run day (UTC) a payout run of every unpaid ledger entry whose billing period has ended is requested in the name of whoever saved the schedule, so it still waits for approval by someone else, never by that saver; while a request is still waiting, the next run day requests nothing new. Turning it on needs a person behind the credential: a signed-in user, or a key or agent a person created. Answers 404 while payout runs are not switched on for your workspace (list_payout_runs says so in execution.enabled). Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
cadenceYesweekly or monthly.
enabledYestrue to request payouts on each run day, false to stop.
run_dayYesweekly: 1 (Monday) to 7 (Sunday). monthly: 1 to 28, so every month has it.
auto_retryNoRe-send transfers waiting for a retry each hour, with the same idempotency keys. Defaults to true.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description explains the payout run mechanics, approval separation, no-op behavior while a request is pending, authentication requirements, 404 and 403 conditions, and the need for a claimed workspace. This is rich operational context for a destructive, idempotent mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, and most sentences carry useful operational detail. However, the long sentence describing run-day behavior is dense and could be easier to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex scheduling mutation with no output schema, the description covers the important behavior, prerequisites, error states, and approval flow. It gives an agent enough context to decide whether and how to invoke the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents cadence, enabled, run_day ranges, and auto_retry defaults. The description only loosely maps "turning it on" to enabled and "each run day" to run_day/cadence, adding little parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Save your workspace's payout schedule whole." It clearly distinguishes this configuration action from sibling tools like get_payout_schedule, list_payout_runs, and request_payout_run by focusing on saving the recurring schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides substantial context for when the tool applies: turning payouts on requires a person-backed credential, a billing-write Last Price credential, and a claimed workspace. It also references list_payout_runs for diagnosing the disabled-payout-runs 404, though it does not explicitly contrast itself with request_payout_run or get_payout_schedule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_price_explorationA
DestructiveIdempotent
Inspect

Turn price exploration on or off for your workspace, set its rate (at most 10% either way), or set how far past the prices already tried the optimizer may go (beyond_pct, 1 to 10%, default 5). It is on by default while learned pricing is on; turning it off gives every learned price exactly as computed. A field left out keeps its saved value. Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin.

NameRequiredDescriptionDefault
rateNoThe most a price may vary either way, as a fraction from 0.005 to 0.1: 0.03 is up to 3%. null goes back to 0.1, the default.
enabledNotrue turns price exploration on, false turns it off; null goes back to the default, which is on while learned pricing sets live prices (automatic or approve).
beyond_pctNoHow far past the lowest and highest prices a learned estimate was measured at the optimizer may price, in percent from 1 to 10 in steps of 0.5; null goes back to 5, the default. Refused until the pricing analyst is switched on for your workspace.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real behavioral context beyond them: what turning exploration off does ('gives every learned price exactly as computed'), that omitted fields retain saved values, the reset-to-default semantics, and the analyst-gating on beyond_pct. It does not explain what the 'destructive' label implies (whether prior settings are overwritten or recoverable), leaving a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the primary action, then defaults, then prerequisites — the ordering matches how an agent should reason about the call. It is a dense single paragraph with no wasted sentences, though the long compound sentence bundling three behaviors could be split for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation tool with no output schema, the description covers effect, defaults, omission behavior, auth requirements, and a conditional refusal. What is missing is only the explicitly named read-before-write sibling and any note on whether the change is reversible or reflected in a return value, which is minor given the annotations carry the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: 'A field left out keeps its saved value' distinguishes omission from the schema's null-equals-reset behavior, and the rate is framed as 'at most 10% either way' with a concrete example. This compensates for the fact that the schema alone would not make the omit-vs-null distinction obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource (turn price exploration on/off for your workspace) and spells out all three adjustable dimensions: enabled, rate, and beyond_pct. An agent can tell exactly what this tool mutates without opening the schema, and it is distinguishable from read-side siblings like get_price_exploration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context on defaults ('on by default while learned pricing is on'), prerequisites ('Needs a Last Price credential with routing write scope; from the dashboard, an owner or admin'), and a refusal condition for beyond_pct. It stops short of explicitly naming get_price_exploration as the way to read current values before mutating, so no explicit alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_price_guardrailsA
DestructiveIdempotent
Inspect

Save the price guardrails for your workspace. max_change_pct, min_margin_pct and never_below_cost hold every final price your workspace is given, from compute_price and every other pricing call. band_lower_ratio and band_upper_ratio are only the range the optimizer and elasticity functions search when a call sends no minimum or maximum. This replaces the whole saved set: an omitted field takes its default, so read get_price_guardrails first and send every rule you want to keep. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
max_change_pctNoMost a final price may move from the current price, up or down, in percent. Null (the default) for no limit.
min_margin_pctNoLeast margin over the unit cost a call sends, in percent of the price. Null (the default) for no minimum.
band_lower_ratioNoLowest price the optimizer and elasticity functions search, as a multiple of the current price. Defaults to 0.5.
band_upper_ratioNoHighest price the optimizer and elasticity functions search, as a multiple of the current price. Defaults to 2.
never_below_costNoNever price below the unit cost a call sends. Defaults to true.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint/idempotentHint annotations by disclosing the replace-whole-set semantics and the omission-takes-default trap, plus auth requirements (Last Price credential with routing write scope) and a concrete failure mode (403 on unclaimed sandbox keys). This is exactly the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then rule semantics, then auth/claim constraints — a sensible order. Dense but nearly every sentence carries a distinct fact; only the credential-sentence phrasing is slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the destructive replace semantics, defaults for omitted fields, prerequisite state (claimed workspace), and permission scope — everything an agent needs to avoid data loss on a mutation with no output schema. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by grouping parameters into two behaviorally distinct classes — hard limits applied to every final price vs. search-band ratios only used when a call sends no min/max. That distinction is not obvious from the per-field schema text alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Save the price guardrails for your workspace') and immediately scopes what a guardrail governs (every final price vs. optimizer search range). This clearly separates it from get_price_guardrails and delete_price_guardrails in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'read get_price_guardrails first and send every rule you want to keep', which is actionable sequencing guidance. It doesn't state when to leave guardrails alone versus adjusting them via an analyst flow, but the write-vs-read alternative is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_product_categoryA
DestructiveIdempotent
Inspect

Confirm or change the category of one of your workspace's products: product_id is the product id your quotes send (or a store item's SKU), category_id is an id from the tree list_product_categories returns, at any level. Replaces any earlier category for that product and answers with the same body as list_product_categories. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
product_idYesThe product id, as quotes send it in context.product_id, or a store item's SKU.
category_idYesA category id from the tree list_product_categories returns, for example api-metering.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: it replaces any earlier category (consistent with destructiveHint/replace semantics), returns the same body as list_product_categories, requires a Last Price credential with routing write scope, and fails with 403 for self-registered sandbox keys until the workspace is claimed. That error/permission detail is exactly what annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then semantics, then response, then auth and error conditions — good ordering. It is a dense single paragraph that packs prerequisites and error behavior into one block, slightly reducing scannability but with essentially no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, it covers replacement semantics, the return shape by reference, auth scope, and the 403 claim failure mode. The return value is only described indirectly ('same body as list_product_categories'), which requires the agent to know that tool's shape, but nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns more by clarifying that product_id may be a quote's product id OR a store item's SKU, and that category_id can be taken at any level of the tree, not just leaves. It doesn't add format examples beyond the schema's own example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Confirm or change the category of one of your workspace's products') and disambiguates against list_product_categories, whose output is the source of category_id. An agent can tell immediately what this tool does and where it sits relative to the read-side sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Establishes the workflow prerequisite (category_id must come from list_product_categories, at any level) and the account prerequisites (routing write scope, claimed workspace). It does not explicitly say when NOT to use it or name a competing tool for alternate category workflows, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_spend_policyA
DestructiveIdempotent
Inspect

Save a spend policy whole: agent_id for one agent, or leave it out for the workspace default every other agent spends under. An omitted field takes its default, so read get_spend_policy first and send every rule you want to keep. An agent's own key cannot change the rules that bind it: use a workspace-wide key. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
presetNoprocurement switches on company buying rules in one step, filling ask_above 500, quotes_required_above 5000 and, with preferred_sellers, block_unknown_sellers for whichever you leave out. Only where get_spend_policy says procurement.available.
agent_idNoThe agent this policy governs. Null or omitted for the workspace default.
currencyNoCurrency of every amount here; purchases in another are denied. Defaults to USD.
ask_aboveNoPurchases above this wait for a person's approval. Null (the default) for never.
daily_capNoMost all purchases may cost in one UTC day. Null (the default) for no cap.
fair_priceNoWhen verify_price judges a price too high: off (ignore, the default), ask a person, or deny.
hold_secondsNoHow long an allowed purchase's reservation stays open for the purchase to start. Defaults to 900.
allowed_sellersNoOnly these sellers. Null (the default) for any.
blocked_sellersNoNever these sellers. Defaults to none.
max_per_purchaseNoMost one purchase may cost. Null (the default) for no limit.
preferred_sellersNoVendors procurement approved. Another seller waits for a person, or is denied with block_unknown_sellers.
allowed_categoriesNoOnly these categories. Null (the default) for any.
block_unknown_sellersNoDeny any seller not on preferred_sellers. Defaults to false.
quotes_required_aboveNoPurchases above this need quotes from at least two sellers.
allowed_agent_subjectsNoOnly these AgentIDs (the subject in their token) may spend. Null for any verified or unverified agent the other rules allow.
require_verified_agentNoOnly agents that prove who they are with an AgentID token on check_purchase may spend. Only where get_spend_policy says verified agents are available.
category_monthly_budgetsNoMost spent per category in one UTC month, e.g. {"software": 2000}. Checks must then name a category.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behavior beyond the annotations: the policy is saved whole, omitted fields reset to defaults, and a prior read is needed to avoid losing existing rules. It also states authentication and workspace-claim requirements, including a specific 403 refusal case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and scope, then layers in replacement behavior and prerequisites. Each sentence carries operational value, and there is no filler despite the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter mutation with full schema descriptions and annotations, the description supplies the missing operational context: replacement semantics, prerequisite read, key limitations, credential requirements, and workspace-claim constraints. No output schema exists, but explaining return values is unnecessary here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so individual parameter documentation is already strong. The description adds important cross-parameter semantics not obvious from the schema: the operation replaces the whole policy, omitted fields fall back to defaults, and agent_id selects between one agent and the workspace default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: save a spend policy. It immediately disambiguates scope by explaining that agent_id targets one agent while omitting it targets the workspace default, which makes it distinct from the read-only get_spend_policy sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly directs the agent to read get_spend_policy first and to send every rule it wants to keep. It also gives concrete usage constraints: an agent's own key cannot change the rules that bind it, so a workspace-wide key is required, plus credential and workspace-claim prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

settle_purchaseAInspect

Close the reservation an allowed check_purchase gave you, once: outcome paid when the purchase went through (send amount when you paid less than reserved; never more), or failed when it did not, which gives the amount back to today's budget. When you cannot tell (the payment timed out or the answer was unreadable), send outcome unknown: the amount stays held, failed is then refused, and reconcile_purchase closes it once you know. A reservation is never released by time alone, so always settle it. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
noteNoOptional: an order or transaction reference, or why it failed or what you saw.
amountNoWith paid: what you actually paid, if less than reserved.
pay_toNoWith paid, when check_purchase named pay_to (then required): the account the money went to. Another account keeps the amount held as unknown, with code payee_changed, for the owner to reconcile with reconcile_purchase. A retry cannot clear the hold.
outcomeYespaid: the purchase went through. failed: it did not. unknown: you cannot tell yet.
reservation_idYesreservation.id from check_purchase.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=false, destructiveHint=false and idempotentHint=false; the description goes well beyond by disclosing the hold semantics (unknown keeps the amount held, failed is then refused), that a reservation is never released by time alone, that a changed payee yields code payee_changed and that a retry cannot clear the hold. It also surfaces two hard prerequisites the annotations do not: a Last Price credential with price compute scope, and a claimed workspace where a self-registration sandbox key gets 403.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and outcome branching before prerequisites, and every sentence carries operational weight — no filler. It is dense with nested clauses and prerequisite sentences stacked at the end, but nothing is expendable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation with no output schema, the description covers what is needed to call it safely: allowed outcome values and their consequences, hold behavior, the reconciling fallback, credential scope requirements, and the 403 workspace-claim gate. An agent has enough to call it correctly or to know it must escalate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description earns above that by clarifying amount semantics ('send amount when you paid less than reserved; never more') and by reinforcing pay_to's conditional requirement tied to what check_purchase returned. The marginal gain is modest because the pay_to property description already carries the payee_changed and retry details, and note is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'close the reservation an allowed check_purchase gave you' — and explicitly scopes it to one use ('once'). It names its originating sibling (check_purchase) and the follow-up sibling (reconcile_purchase), so an agent can place it in the purchase lifecycle without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use branches: outcome paid when the purchase went through, failed when it did not, unknown when the result is unreadable or the payment timed out. It also states the consequence that selects the alternative — 'failed is then refused, and reconcile_purchase closes it once you know' — which is a genuine when-not rule with a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

settle_session_drawAInspect

Say what happened to a call you drew for with draw_session_spend. outcome failed: the payment did not go through, so the draw goes back to the session. outcome unknown: you cannot tell (a timeout, an unreadable answer), so the draw keeps counting until it is reconciled. Then, from what you checked, outcome paid (amount when less than drawn) or not paid, each with a note. Not paid gives budget back, so only the workspace's owner may send it: a workspace-wide key with routing write scope, never an agent's own key. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
noteNoWhat you saw or checked. Required to reconcile.
amountNoWith paid: what was actually paid, if less than drawn.
draw_idYesdraw.id from draw_session_spend.
outcomeYesfailed or unknown to report the call; paid or not paid to reconcile one reported unknown.
session_idYesreservation.id from open_spend_session.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations, which only say non-read-only, non-destructive, non-idempotent. The description discloses the budget-return side effect of not_paid, the authorization scope required (routing write scope, never an agent's own key), the Last Price credential with price compute scope, and the 403 refusal for unclaimed sandbox workspaces — exactly the kind of behavioral context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the outcome branches are front-loaded, and every sentence carries operational meaning (side effects, permissions, preconditions). It is dense run-on prose with several clauses chained together, which costs a little readability, but nothing is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description covers outcome branches, side effects, permissions, and workspace preconditions, so an agent can invoke it correctly. It does not describe the response shape or what happens on idempotent retries, which is a minor residual gap for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds value by explaining the semantics of the outcome values and their sequencing and clarifying that amount applies to paid when less than drawn. It does not add syntax details for session_id/draw_id, but the schema already handles those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('say what happened to a call you drew') and anchors it to the sibling that creates the draw (draw_session_spend). It also distinguishes the two phases of the tool (reporting vs reconciling), so an agent knows exactly what this does relative to its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly maps each outcome value to a situation: failed and unknown for reporting, paid/not paid for reconciling a previously reported unknown. It also states who may call it for the not-paid case (workspace owner with a workspace-wide routing-write key) and the credential/workspace prerequisites, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_agent_cutA
Read-onlyIdempotent
Inspect

Simulate how much of a sale to offer an agent platform (a shopping agent or agent marketplace that charges sellers a cut) if it ranks sellers partly by the cut they pay. No platform publishes such a ranking, so this is a simulation under your assumption (visibility_per_point_pct: percent more channel sales per extra point of cut), also run at half, double and zero of it. Returns the profit at each cut, the recommended cut, the cut with the smallest worst case, the break-even, and a channel rate ready for PUT /api/channel-rates. Changes nothing. Answers 404 until the cut advisor is switched on for your workspace. Needs a Last Price credential with routing read scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
priceYesYour own price before any channel cut.
channelNoThe channel name, as you save it in channel rates (e.g. instinct).
currencyNoISO 4217 code of price and unit_cost, echoed back.
step_pctNoGap between the cuts tried. Defaults to 0.5.
unit_costYesWhat one unit costs you, same currency.
base_unitsYesUnits sold through the channel per period at the current cut.
max_cut_pctNoHighest cut to try. Defaults to 30 (or the current cut, if higher).
min_cut_pctNoLowest cut to try. Defaults to 2.5 (or the current cut, if lower).
passed_on_pctNoHow much of the cut is added to the price, in percent. Defaults to 100.
current_cut_pctYesThe cut the channel takes today, in percent.
price_elasticityNoHow channel buyers respond to price. Defaults to -1.5.
visibility_per_point_pctNoYour assumption: percent more channel sales per extra point of cut. Defaults to 2.
max_visibility_change_pctNoMost ranking can move channel sales, in percent either way. Defaults to 100.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses the exact return payload (profit at each cut, recommended cut, smallest worst-case cut, break-even, and a channel rate ready for PUT /api/channel-rates), confirms 'Changes nothing,' and surfaces two gating behaviors an agent cannot infer from annotations: a 404 until the cut advisor is enabled and a 403 until the workspace is claimed. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a dense but front-loaded paragraph: the purpose sentence leads, then the assumption, then outputs, then gating and auth conditions. Every sentence carries information, though the run-on structure around the return values and prerequisites could be tightened into bullets for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters and no output schema, the description covers purpose, assumptions, returned values, side-effect status, auth/scope requirements, and error gates (403/404). It is nearly complete; it could still spell out what happens if the elasticities are inconsistent or clarify default cut-grid behavior, but an agent has what it needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the meaning and sensitivity treatment of visibility_per_point_pct (percent more channel sales per extra point of cut, also run at half, double and zero) and by tying the output to a channel rate consumable by PUT /api/channel-rates. It does not add meaning for the other 12 parameters, but the schema already handles those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: simulate how much of a sale to offer an agent platform that ranks sellers by the cut they pay. It names the concrete mechanism (visibility_per_point_pct) and clearly distinguishes this from siblings like compute_price or get_cut_advisor_settings by framing it as a what-if simulation of cut levels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the real-world premise ('No platform publishes such a ranking') and states the prerequisite gate conditions: the cut advisor must be switched on for the workspace and a claimed workspace plus a Last Price credential with routing read scope are required. It stops short of naming sibling alternatives (e.g. compute_price or set_channel_rates) explicitly, but the when-to-use context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_aitune_profilingAInspect

Start a profiling run for a model on the AITune sidecar: pass model, and optionally batch_sizes, measurement_steps, saturation_cutoff and include_warmup to override the defaults. It uses GPU time on the sidecar; read the finished report with get_aitune_profiling. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
modelYesThe model to profile.
batch_sizesNoThe batch sizes to measure.
include_warmupNoInclude the warm-up run in the report.
measurement_stepsNoHow many steps to measure at each batch size.
saturation_cutoffNoStop growing the batch once throughput gains fall below this.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-idempotent, non-destructive, so the safety bar is partly met; the description adds real context beyond them: the run consumes GPU time on the sidecar, requires a claimed credential, and fails with 403 for unclaimed sandbox workspaces. It does not say what happens if a run is already in flight or how the result is identified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action and parameters, then resource cost, then prerequisites. No sentence is filler; the sibling pointer and the 403 note each carry distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly directs the agent to get_aitune_profiling for results and covers auth and resource cost. The remaining gap is not stating what this call itself returns (e.g., a run identifier) or whether completion is signaled asynchronously.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description adds that batch_sizes, measurement_steps, saturation_cutoff and include_warmup are optional overrides of defaults, which the schema alone does not convey. It does not add format or interaction details beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start a profiling run for a model on the AITune sidecar') and explicitly distinguishes itself from the sibling get_aitune_profiling, which reads the finished report. An agent can separate the write-side profiling kickoff from the read-side report tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the follow-up path ('read the finished report with get_aitune_profiling') and hard preconditions: a claimed Last Price credential and a claimed workspace, with the sandbox-key 403 case spelled out as a de facto exclusion. It stops short of naming when profiling is unnecessary versus other AITune siblings such as list_aitune_backends or get_aitune_system_stats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_frontier_priceA
Read-onlyIdempotent
Inspect

Ask the frontier price model what it would charge for one of your products: it reads your own quotes for that product from the last 90 days (rebased onto today's price) and where the offer sits, and returns the price, the chance of a sale there and at today's price, the margin per quote when you give unit_cost, and the acceptance curve. It looks at most 10% past prices you have already quoted, inside min_price and max_price. A suggestion only: nothing is quoted, stored or learned, and no other workspace's quotes are read. Without unit_cost it maximises revenue. Answers not_released while it is not switched on for your workspace. Needs a Last Price credential with routing read scope.

NameRequiredDescriptionDefault
unitNoWhat one unit is: item, call, token, seat-month, month, hour, gb, outcome or percent.
channelNoWhere it is sold, such as the web, an API, MCP or a marketplace.
categoryNoA category id; its top-level ancestor is the vertical.
topologyNoHow it is priced: posted, metered, per-call, seat, subscription, outcome, auction, negotiated, marketplace, bundle or dynamic.
max_priceNoNever suggest above this.
min_priceNoNever suggest below this.
unit_costNoWhat one unit costs you. Without it the suggestion maximises revenue.
buyer_typeNoWho is buying.
product_idYesThe product, as your pricing calls name it.
current_priceNoToday's price. Defaults to the price of the product's latest quote.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it discloses the 90-day read window rebased to today, the 10% sampling cap within min_price/max_price, that no other workspace's quotes are read, that nothing is stored or learned, the not_released state, and the required routing-read credential. This is rich behavioral context an agent could not get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return values are front-loaded, then limits, then safety, then credential — a sensible order. It is dense and slightly long as a single paragraph, but nearly every clause carries distinct, useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter model call with no output schema, the description covers what is returned, how inputs alter the objective, sampling bounds, the non-persistent safety profile, the disabled-state response, and the credential prerequisite — everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description adds genuine meaning: it explains unit_cost switches the objective to margin-per-quote vs revenue maximisation, and reinforces min_price/max_price as hard bounds applied to the sampled prices. That is beyond what the schema descriptions state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Ask the frontier price model what it would charge for one of your products', and enumerates what it returns (price, sale chance, margin, acceptance curve). The 'frontier price model' framing implicitly distinguishes it from learned-pricing siblings, but it never names or contrasts compute_price/recommend_jale_price explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional behavior guidance (with unit_cost you get margin; without it the suggestion maximises revenue) and prerequisite state (not_released while not switched on). However it does not state when to choose this over the many pricing siblings like compute_price or recommend_jale_price, leaving the routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_commerce_connectorAInspect

Pull the catalog from one linked store now. connector_id is the id from list_commerce_connectors. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
connector_idYesThe connector id, as list_commerce_connectors gives it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false, so the description is not obligated to restate the safety profile. It adds context annotations don't carry: required credential scope and the specific 403 failure mode for unclaimed sandbox workspaces, which is exactly the kind of precondition that prevents wasted calls. It could still note what a repeat sync does to existing catalog data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, action first, then parameter provenance, then the two gating requirements. Every sentence carries operational value; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema mutation tool, the description covers the action, the argument source, and both hard prerequisites including the exact 403 condition. The only gap is what the caller gets back or how a repeat call affects existing catalog state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole parameter is a UUID with its own description pointing to list_commerce_connectors. The description repeats that same cross-reference without adding format or selection detail, so it neither compensates nor detracts — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — pull the catalog from one linked store — and adds the immediacy ('now') that separates it from scheduled syncs. It does not explicitly name the sibling sync_commerce_orders, so the catalog-vs-orders distinction is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real preconditions (Last Price credential with commerce configure scope, claimed workspace) which effectively tell the agent when the call will fail. However, it never says when to prefer this over sync_commerce_orders or a scheduled pull, so alternative routing is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_commerce_ordersAInspect

Pull recent orders from one linked store, for the store sales view. since limits it to orders after that time; the default is since the last sync, or 60 days on the first. Platforms that cannot read orders answer an error. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
sinceNoOnly orders after this time.
connector_idYesThe connector id, as list_commerce_connectors gives it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, openWorld=true and idempotent=false, and the description adds material context beyond them: unsupported platforms return an error, a commerce-configure-scoped credential is required, and an unclaimed sandbox workspace gets a 403. What it does not disclose is the local write/ingest side effect implied by readOnlyHint=false or whether repeated runs can duplicate orders.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying a distinct fact, with the core action and scope front-loaded before the since-defaults and prerequisites. Density is high with essentially no filler, though the prerequisite sentences are somewhat staccato.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotation detail on effects, the description still covers the operation's scope, the default time window, the unsupported-platform error path, and both credential and workspace prerequisites. The remaining gap is what a sync actually writes locally and how volume/pagination behaves.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning the schema lacks: the default for 'since' is last sync, or 60 days on the first run, and it clarifies that the bound is exclusive ("orders after that time"). connector_id adds nothing beyond the schema, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Pull recent orders from one linked store") plus the consumer of those orders (the store sales view), which makes the intent clear. It does not name a sibling such as list_orders or sync_commerce_connector to draw an explicit boundary, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies real selection context: this is the store-sales-view ingestion path, one connector at a time, and the default window is since the last sync (60 days on first run). It never states when to prefer list_orders or sync_commerce_connector instead, so there are no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_commerce_policyA
Read-onlyIdempotent
Inspect

Dry-run a commerce pricing policy against an item and competitor observations you supply, and see the price it would propose and why. Nothing is saved. Needs a Last Price credential with commerce proposal draft scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
itemYesThe catalog item: its id, sku, price and attributes, as list_commerce_catalog shows one.
policy_idYesThe policy id, as list_commerce_policies gives it.
marketplaceNoThe marketplace the item is sold on, when the policy scopes by marketplace.
observationsNoCompetitor observations for the item, as list_commerce_observations shows them. Defaults to none.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds important context: no persistence, required commerce proposal draft scope, and a claimed workspace requirement with a specific 403 failure for sandbox keys. It stops short of exhaustive failure or response details, but provides substantial behavioral value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main action and outcome, followed by the no-save guarantee and prerequisites. It uses three compact sentences with no filler, and every sentence contributes useful selection or invocation context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description states what the caller will see: the proposed price and why. Input schema coverage is complete for the four parameters, including nested object references, and the description adds auth and workspace prerequisites, making it complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter is already documented with references to list_commerce_catalog, list_commerce_policies, and list_commerce_observations. The description names the item and competitor observations but adds little syntax or semantic detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: dry-run a commerce pricing policy against an item and competitor observations. It also states the outcome, the proposed price and rationale, which clearly distinguishes this from mutation and execution siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames this as a dry-run and states that nothing is saved, which implies when to use it for testing before applying changes. It also lists credential and claimed-workspace prerequisites, but does not explicitly name alternatives such as execute_commerce_proposals or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_functionAInspect

Test-run one pricing function with sample data and see the price, explanation, confidence and alternatives it returns, without publishing it or touching live traffic. Your own draft functions can be tested here; a function that runs on a model provider can be tested only by its owner. Send context (for example the current price), constraints or options to override the sample. Needs a Last Price credential with function test scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
contextNoSample request context, for example the current price. Defaults to a current price of 29.99.
optionsNoOptional compute options for the test.
constraintsNoOptional price limits for the test.
function_idYesThe pricing function UUID: id on a list_functions result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: no publishing, no live traffic impact, the 403 failure mode for unclaimed workspaces, and the required credential scope. This is consistent with readOnlyHint=false/openWorldHint=true (a test run is created but nothing live is mutated) and tells the agent what the actual blast radius is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return values are front-loaded, and each following sentence carries real information (ownership restriction, input overrides, auth, workspace state). It reads as one dense block rather than scannable points, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Though there is no output schema, the description enumerates the returned shape (price, explanation, confidence, alternatives). Combined with the auth prerequisites and the nested context/constraints/options inputs, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented, including the 29.99 default. The description adds a light gloss on context/constraints/options ('override the sample') but no syntax or structural detail beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Test-run one pricing function with sample data') and immediately enumerates what it returns (price, explanation, confidence, alternatives). The clause 'without publishing it or touching live traffic' draws the exact boundary between this tool and the live-compute siblings (compute_price, compute_prices_batch).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use conditions: your own draft functions, or a model-provider function only if you own it. Prerequisites are spelled out (function test scope credential, claimed workspace, 403 for sandbox keys). It stops short of naming a sibling as the alternative for live/production pricing, so 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.

top_up_balanceAInspect

Add USDC to your workspace's prepaid balance with one x402 payment signed by your own wallet. amount is in USDC, such as "25". Called without payment it spends nothing and returns the payment requirements to sign. Sign them, then call again with the same amount and payment set to the base64 payment (the value of the X-PAYMENT or PAYMENT-SIGNATURE header). The result gives the credited amount, any bonus and the new balance; get_billing_settings shows the terms. Needs a Last Price credential with the price:compute scope.

NameRequiredDescriptionDefault
amountYesUSDC to add, with at most 6 decimals, such as "25" or "25.50".
paymentNoOptional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header. Omit it to read what the call costs and how to pay; nothing is charged until you send it.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: the no-payment discovery call spends nothing, the second call must carry the signed X-PAYMENT/PAYMENT-SIGNATURE value, and the response contains credited amount, bonus and new balance. It also discloses the required credential and price:compute scope. It does not address what happens on payment failure, expiry, or replay, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the payment flow, then the result and auth requirement. Every sentence carries needed information; no restatement of the title or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two parameters, no output schema, and a mutation tool, the description covers purpose, authorization, the two-phase call pattern, and the shape of the result. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description adds real value by explaining that payment must be the base64 value of the X-PAYMENT or PAYMENT-SIGNATURE header and that omitting it makes the call free, which goes beyond the field-level text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add/top up), resource (workspace prepaid balance) and the exact mechanism (a single x402 payment signed by your own wallet). The x402/payment-signed framing distinguishes it cleanly from siblings like create_card_topup or get_credit_balance without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit two-step protocol: call without payment to fetch payment requirements (spends nothing), sign, then call again with the same amount plus the base64 payment. It also routes the agent to get_billing_settings for terms, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

train_hosted_modelA
Destructive
Inspect

Train a new version of a demand model on your workspace's own quote outcomes (reported, or inferred from what buyers did next). A held-out fifth of the quotes scores it against one pooled demand curve, and its metrics say by how much it did better. promote never (the default) stores it as a candidate, always makes it active, and if_better makes it active only when it beats the pooled curve and the active version. Answers 422 with the number of outcomes when there are too few to train on, and 422 for a price model. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
promoteNoWhether the new version becomes active. Defaults to never.
model_idYesThe hosted model's id: id on a list_hosted_models result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) by naming the exact failure surface: 422 with an outcome count when there are too few outcomes, 422 for a price model, 404 not_released while the feature flag is off, and 403 for a self-registered sandbox key. It also discloses the evaluation method (held-out fifth scored against one pooled demand curve) so the agent understands what the resulting metrics mean. The only minor gap is that it does not say explicitly what happens to the previously active version when promote=always, but the destructive implication is inferable from the activation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and each subsequent sentence contributes distinct operational facts: promote semantics, error codes, auth scope, workspace claim requirement. It is dense but not padded, though the credential and workspace-claim prerequisites could be compressed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema mutation with real authorization and release-gating complexity, the description covers what the tool does, what the return metrics convey ('by how much it did better'), every expected error status, and both access prerequisites. An agent can decide whether to call it and predict the outcome without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters already have baseline documentation. The description nonetheless adds real meaning beyond the schema: the default of never, and the precise decision rule behind each enum value (beats the pooled curve and the active version). model_id semantics are left entirely to the schema, which already points at list_hosted_models, so no compensation was needed there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: train a new version of a demand model on the workspace's own quote outcomes, with the training signal spelled out (reported outcomes or inferred from buyer behavior). What keeps it from a 5 is that it never differentiates itself from near-neighbors in the toolset such as create_hosted_model, upload_hosted_model_version, and especially promote_hosted_model_version, even though the 'promote' parameter overlaps with that last tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the selection logic for the promote parameter in detail: never stores a candidate, always activates, if_better activates only when it beats both the pooled curve and the active version. It also lists gating prerequisites (publish-scope credential, claimed workspace, hosted-pricing-models release) that tell the agent when the call will fail rather than when to prefer an alternative tool. There is no explicit 'use this instead of X' routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translate_with_rosettaA
Read-onlyIdempotent
Inspect

Translate one source record into a vendor's payload in one call: Rosetta plans the mapping, compiles source_record against it and validates the result against vendor_contract (an id and the fields the vendor requires). The answer says whether the payload is ready, the plan, the payload, any skipped fields and each validation issue. Set allow_extra to let fields the contract does not list through, and extensions for vendor extensions. A plan below the confidence bar is queued for review. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
extensionsNoVendor extensions to add to the payload.
allow_extraNoLet fields the contract does not list through.
source_recordYesThe record to translate.
source_schemaYesThe source: an id for it and its fields.
vendor_contractYesWhat the vendor requires: an id and its fields.
canonical_schemaYesThe id of a built-in schema (see list_canonical_schemas) or a whole schema with an id and fields.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: low-confidence plans are queued for review rather than returned ready, auth prerequisites, the specific 403 failure mode for unclaimed sandbox workspaces, and the full response shape (ready flag, plan, payload, skipped fields, validation issues).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and pipeline, then the return shape, then parameters, then prerequisites — a sensible order with no filler. The opening sentence is long and comma-chained, and prerequisites could be grouped more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter nested-schema tool with no output schema, the description supplies the return shape, the review-queue consequence, and both auth gates. It stops short of saying how to act on validation issues (retry, fix source schema, or escalate) or whether repeated calls re-queue the same review.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description's phrasing for allow_extra and extensions is nearly verbatim from the schema. It does add pipeline context (what source_record is compiled against, that vendor_contract carries the id and required fields), but canonical_schema's built-in-vs-inline choice is only explained in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Translate') plus resource ('one source record into a vendor's payload') and decomposes the internal pipeline (plan → compile → validate), which distinguishes it from the sibling steps plan_rosetta_mapping and normalize_with_rosetta by emphasizing 'in one call'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions (claimed Last Price credential, claimed workspace, sandbox keys rejected with 403) and the 'in one call' framing signals this replaces the individual plan/compile steps. It never explicitly names plan_rosetta_mapping or normalize_with_rosetta as alternatives, so routing is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_alert_preferencesA
DestructiveIdempotent
Inspect

Turn email alert types on or off, or choose right away or one daily summary, for yourself in your workspace. Send preferences, delivery or both, naming at least one alert type; the types are approval requested, dispute opened, webhook failing, payout update and outcomes needed. A caller that gets no alerts is refused. Needs a Last Price credential with notifications write scope; the agent that owns an unclaimed workspace needs none.

NameRequiredDescriptionDefault
deliveryNoAlert types to send right away or daily.
preferencesNoAlert types to switch on or off.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare mutation, idempotency, and destructive behavior, so the description's main added value is the authorization requirement and the validation rule that a caller requesting no alerts is refused. It also clarifies the self-only scope. It does not elaborate on the destructive implication of disabling alerts, but annotations cover that safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and stays relatively compact. The long semicolon-delimited sentence and incomplete alert-type list slightly reduce clarity, but there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with rich schema and annotations, it covers scope, authorization, validation, and update modes. The main completeness gap is the omitted analyst_brief alert type in the description's enumeration; otherwise an agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents nested preferences and delivery fields. The description adds useful top-level semantics, notably that callers may send preferences, delivery, or both and must name at least one alert type. However, its list of alert types omits analyst_brief, which is a valid field in both schema objects, making the enumeration incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: turning email alert types on/off or choosing immediate vs daily delivery, scoped to the caller in their workspace. It clearly distinguishes this mutation from related read tools such as get_alert_preferences, even without naming that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when to call this: to change one's own email alert delivery or enablement, sending preferences, delivery, or both. It does not explicitly name get_alert_preferences as the alternative for viewing current settings, so the when-not guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_billing_settingsA
DestructiveIdempotent
Inspect

Change your workspace's billing settings. Only the settings you send change. outcome_pricing turns on paying in full only when a price is used: a rejection reported with report_outcome within its window gives part back. balance_billing makes every compute call draw on the prepaid balance, and a call the balance cannot cover is refused. auto_topup is an offer, not a charge: below the threshold, results carry a top-up hint and nothing is paid automatically. A self-registered agent workspace cannot change outcome_pricing or balance_billing until it is claimed. Needs a Last Price credential with price compute scope; a person also needs the owner, admin or billing role.

NameRequiredDescriptionDefault
auto_topupNoThe auto top-up offer, or null to clear it.
balance_billingNoTurn balance billing on or off.
outcome_pricingNoTurn outcome pricing on or off.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds substantial context beyond them: that omitted settings are untouched, that a covered balance call is refused rather than charged, that auto_topup is an offer and never an automatic charge, and the credential/scope/role requirements. It does not explain what is lost when a setting is cleared (auto_topup=null), which keeps it below a 5 for a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the partial-update rule, then one clause per setting. Dense but each sentence carries information; minor cost is that the credential/role sentence packs several conditions into one long clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description covers mutation semantics, per-setting effects, and authorization preconditions well enough to call the tool safely. It stops short of indicating what the response returns (e.g. the resulting settings), a small gap for a no-output-schema mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, giving a baseline of 3, and the description adds genuine semantic meaning beyond the schema: outcome_pricing is tied to full-price billing with report_outcome refund behavior, and balance_billing to refusal of uncovered calls. The auto_topup 'offer, not a charge' clarification largely restates the schema's 'Whether to offer a top-up below the threshold', so it is not uniformly additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change your workspace's billing settings') and immediately qualifies scope with partial-update semantics ('Only the settings you send change'). The three settings are named with their effects, so it is distinguishable from the read-only sibling get_billing_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear usage context: partial update behavior plus an explicit description of when each setting matters (paying in full only on priced calls, compute drawing on prepaid balance, offering rather than charging a top-up). Prerequisites and the restriction for unclaimed self-registered agent workspaces are stated, but no alternative tool (e.g. get_billing_settings) is named as a comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_commerce_policyA
DestructiveIdempotent
Inspect

Change a commerce pricing policy. Only the fields you send change; rules replace the whole rule list. policy_id is the id from list_commerce_policies. Needs a Last Price credential with commerce configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameNoA name for the policy.
rulesNoThe rules, tried in order; the first that produces a price wins. Each rule has an id, a kind and the fields its kind needs: a percent to undercut by, an amount to beat the lowest price by, a percent off the list price, a competitor to match, a fixed price, or a routing choice. The Pricing Policies section of the documentation lists them.
scopeNoWhich items the policy covers: skus, brands and marketplaces lists. Empty covers every item.
is_activeNoWhether the pipeline applies the policy.
policy_idYesThe policy id, as list_commerce_policies gives it.
descriptionNoWhat the policy is for.
floor_priceNoNo proposal goes below this price.
approval_modeNomanual queues every proposal for a decision, auto approves small changes, shadow records proposals without acting on them.
ceiling_priceNoNo proposal goes above this price.
auto_approve_max_delta_pctNoWith approval_mode auto: proposals that move the price by at most this percent skip the queue. Required for auto.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the partial-update semantics, the destructive nuance that 'rules replace the whole rule list' (which is the key consequence behind destructiveHint=true), and both auth and workspace-claim requirements including the specific 403 refusal. That is exactly the context an agent cannot infer from idempotentHint/destructiveHint alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose then mutation semantics then prerequisites. Every sentence carries operational weight; only the two separate 'Needs a ...' sentences could be merged, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive mutation with nested objects and no output schema, it covers the high-risk gaps: what is merged vs replaced, credentials, and workspace state. It does not describe the response or the interaction between approval_mode auto and auto_approve_max_delta_pct, both of which remain for the schema to convey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: policy_id provenance from list_commerce_policies and the replace-not-merge behavior of the rules array, which the schema does not state. Other parameters (scope, approval_mode, floor/ceiling) get no description-level elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change a commerce pricing policy') and immediately clarifies update semantics ('Only the fields you send change; rules replace the whole rule list'), which separates it from a full create/replace. It never names the sibling alternatives (create_commerce_policy, test_commerce_policy, delete_commerce_policy), so differentiation relies on the name rather than explicit routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete preconditions: a Last Price credential with 'commerce configure' scope, a claimed workspace with the exact 403 failure mode, and where to obtain policy_id (list_commerce_policies). It stops short of saying when to prefer this over create_commerce_policy or test_commerce_policy for validation, so no explicit alternatives/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_contactA
DestructiveIdempotent
Inspect

Change a contact: pass contact_id and at least one of name, email, phone, address, external_id and metadata; null clears phone, address or external_id. A contact cannot be moved to another customer. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameNoThe contact name.
emailNoThe contact email.
phoneNoThe contact phone number; null clears it.
addressNoThe contact address.
metadataNoAnything worth keeping with the record.
contact_idYesThe contact: its id, as list_contacts shows it.
external_idNoYour own id for the contact; null clears it.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial context beyond the annotations: null-clearing behavior for specific fields, the tenant-boundary restriction against moving contacts, the credential requirement, and the claimed-workspace precondition with a concrete 403 failure mode. These details are not expressed in the schema or annotations and directly affect whether an agent should attempt the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the action, the required inputs, the clearing semantics, the tenant restriction, and then the auth/workspace prerequisites. No sentence is filler, and the ordering supports quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent mutation with no output schema, the description covers the critical behavioral surface: partial-update requirement, null-clearing fields, cross-customer restriction, credential requirement, and claimed-workspace gate with a 403 consequence. An agent has enough information to decide whether to call it and what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3. The description still adds two important constraints absent from the schema: at least one optional field must be supplied alongside contact_id, and null clears address in addition to phone and external_id (the schema description for address does not state this). These additions meaningfully improve parameter interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Change a contact.' It immediately distinguishes the operation from create/delete/update_customer by stating that contact_id is required and that a contact cannot be moved to another customer. An agent can identify this as a partial-update tool without consulting sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear invocation conditions: pass contact_id and at least one mutable field, and note that null clears phone, address, or external_id. It also states when the tool will fail: moving to another customer is not allowed, and an unclaimed sandbox workspace gets a 403. The only gap is that it does not explicitly name sibling alternatives like create_contact or delete_contact.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_credit_bundle_planA
DestructiveIdempotent
Inspect

Change a credit bundle: activate it (status active), take it off sale (inactive), archive it, or change its name, description, price, credits or rollover. Code and currency are fixed. Early access. Needs a Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameNo
priceNo
statusNo
creditsNo
plan_idYesThe bundle id from list_credit_bundle_plans.
descriptionNo
rollover_creditsNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing credential requirements (Last Price credential with billing write scope) and a prerequisite that causes hard failure (claimed workspace; sandbox key → 403). The annotation set already flags destructive/idempotent, and the description adds the operational constraints that actually determine whether the call succeeds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the field list, then constraints. Dense and mostly waste-free, though the trailing auth/workspace sentences are packed together without structural separation, making them easy to skim past.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, it covers the fields, immutable properties, permissions, and failure modes. It does not describe what a successful response returns or how nulls on credits/rollover_credits are interpreted (clear vs no-op), which matters for a partial-update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 14%, so the description must compensate and largely does: it maps the status enum values to human intents (activate/inactive/archive) and names the mutable fields. It stops short of clarifying the distinction between credits and rollover_credits (both nullable) or price units, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change a credit bundle') and then enumerates exactly which attributes are mutable (status, name, description, price, credits, rollover) plus what each status value means. Clearly distinguishable from create_credit_bundle_plan and list_credit_bundle_plans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: code and currency are immutable, and the tool is 'Early access'. It does not explicitly name an alternative tool or a when-not-to-use condition, so it falls short of a 5, but the usage envelope is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_customerA
DestructiveIdempotent
Inspect

Change a customer: pass customer_id and at least one of name, email and metadata. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameNoThe customer name.
emailNoThe customer email.
metadataNoAnything worth keeping with the record.
customer_idYesThe customer: its id, as list_customers shows it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false; the description adds genuinely non-obvious context about credentials and the workspace-claim 403 gate. However, it never explains why the call is destructive (metadata semantics: merge vs replace, whether omitted fields are nulled) which is the biggest behavioral question for a mutation with a nested object.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool does and then the gating conditions; no filler. Slightly dense run-on phrasing in the second and third sentences but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Auth and field-selection prerequisites are covered, which is more than most mutation tools. Missing is what happens to the record on update (partial vs full metadata replacement, reversibility) and there is no output schema to fall back on for the agent to learn the response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 is the floor, and the description adds a real constraint the schema does not enforce: only customer_id is required, but at least one of name/email/metadata must be passed. It also points to list_customers as the source of customer_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Change a customer" states a specific verb and resource, and the follow-up enumerates the mutable fields (name, email, metadata), which distinguishes it from create_customer and update_contact. It does not explicitly name a sibling it is not, but the resource scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states prerequisites (needs a claimed credential and a claimed workspace, sandbox keys get 403), which implies when the call will succeed. But there is no guidance on when to use this versus update_contact or delete_customer, nor on what happens when no mutable field is supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_disputeA
DestructiveIdempotent
Inspect

Change a payment dispute: pass dispute_id and at least one of status, reason (null clears it) and metadata. Move it to under review while you look into it and to resolved or rejected when you have decided. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
reasonNoWhy it is disputed; null clears it.
statusNoThe dispute status.
metadataNoAnything worth keeping with the record.
dispute_idYesThe dispute: its id, as list_disputes shows it.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds substantial context: auth prerequisites (claimed Last Price credential), workspace-claim enforcement with the specific 403 on sandbox keys, and the null-clears-reason nuance. This is exactly the kind of operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with verb+resource and the parameter contract, then workflow, then prerequisites. Every sentence carries information, though the workspace-claim prerequisite runs slightly long relative to the core call guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param mutation tool with no output schema, the description covers parameters, valid transitions, and auth/environment prerequisites. An agent has everything needed to invoke it correctly or understand why a 403 occurred.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the field meanings are already documented. The description earns credit by stating the at-least-one-of constraint across status/reason/metadata, which is not expressible in the schema (only dispute_id is required), adding a genuine usage rule beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Change a payment dispute") and immediately scopes which fields can change. It is clearly distinguishable from create_dispute, get_dispute, and list_disputes in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete workflow guidance mapping statuses to situations: under_review while investigating, resolved/rejected once decided. It doesn't explicitly route away from sibling tools (e.g., use get_dispute to read), but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_functionA
DestructiveIdempotent
Inspect

Change a pricing function your workspace owns: its display name, description, status, tags, cost per unit, cost multiplier, endpoint, credential, schemas or model configuration. Only the fields you send change. Built-in functions and other workspaces' functions cannot be changed. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
ruleNoFor a rule based function: the rule it prices by. Its input schema is made from the rule, and a rule based function needs one before it can be active. On update null removes it.
tagsNoThe tag list. On update it replaces the whole list.
statusNoactive functions are routed to; draft, review, inactive and deprecated ones are not.
auth_configNoHow to authenticate to the endpoint, such as { type: "bearer", token: "..." }. Stored encrypted and never returned: a read says only whether one is saved. On update an object replaces it and null removes it. Treat the secret as sensitive: it passes through this conversation.
descriptionNoWhat the function does. Null clears it.
function_idYesThe pricing function UUID: id on a list_functions result.
display_nameNoThe name people and agents see.
endpoint_urlNoFor a function that calls your own service: the https endpoint that returns the price.
input_schemaNoJSON Schema of what a price request supplies to the function.
cost_per_unitNoWhat one call to the function costs, in USD.
output_schemaNoJSON Schema of what the function returns.
cost_multiplierNoMultiplies the cost of each call, for a more expensive model tier. 1 is the default; stored to 4 decimal places.
inference_configNoFor a function that runs on a model. On update an object replaces it and null removes it, so the function uses the rule-based formula.
quote_valid_secondsNoHow long a price this function computes stays valid, in seconds (30 to 86400). Prices carry it as valid_until where quote expiry is switched on for the workspace. Omit for the default of 15 minutes; on update null returns to the default.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by disclosing the preconditions an agent would otherwise hit blind: a Last Price credential with function publish scope and a claimed (non-sandbox) workspace, with the concrete 403 failure mode. It does not explain why destructiveHint is true (list replacement, null-clears on auth_config/rule/inference_config are only in the schema), leaving that annotation somewhat unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, action and mutable-field list front-loaded, then constraints, then auth preconditions. Dense but every clause carries operational weight; the closing sandbox-key parenthetical is slightly tangential but prevents a real failure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation tool with nested objects and no output schema, the description covers ownership, update semantics, permissions, and the main failure mode. Return behavior is unaddressed, and the destructive side of the operation (whole-list tag replacement, null-clearing of auth_config/rule/inference_config) is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds a curated field inventory that maps directly onto the 14 parameters and states the partial-update contract that the schema cannot express per-field. It does not touch the nested rule/inference_config internals, which the schema handles well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ("Change a pricing function your workspace owns") and enumerates exactly which attributes are mutable, so it cannot be confused with create_function, delete_function, or get_function. The ownership qualifier further narrows scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Only the fields you send change" explicitly establishes partial-update semantics, and the exclusions (built-in functions, other workspaces' functions, unclaimed sandbox workspaces returning 403) tell the agent when the call will be refused. It never names a sibling alternative such as create_function or get_function, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_invoiceA
DestructiveIdempotent
Inspect

Change an invoice: pass invoice_id and at least one of status, amount, currency, due_date and metadata. Needs a claimed Last Price credential with billing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
amountNoThe amount.
statusNoThe invoice status.
currencyNoThe currency code.
due_dateNoWhen the invoice is due, as an RFC 3339 date-time.
metadataNoAnything worth keeping with the record.
invoice_idYesThe invoice: its id, as list_invoices shows it.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered; the description adds genuinely new context about required billing write scope and the workspace-claim gate with its 403 failure mode. It does not explain what 'destructive' means here (e.g. whether metadata is merged or replaced), which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler: purpose and required inputs first, then credential scope, then the workspace gate and its error. Each sentence contributes a distinct, actionable fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter partial-update tool with full schema coverage, annotations covering mutability/idempotency, and no output schema, the description covers purpose, required inputs, auth, and the most likely failure mode. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so field meanings are already documented; however, the description adds a constraint the schema does not encode — the schema requires only invoice_id, while the tool actually needs at least one mutable field — which is real semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change an invoice') and immediately enumerates the mutable fields plus the 'at least one of' rule, so it is clearly distinguishable from create_invoice, delete_invoice, get_invoice, and send_invoice in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the concrete precondition for a valid call ('pass invoice_id and at least one of status, amount, currency, due_date and metadata') and spells out both credential and workspace prerequisites, including the 403 outcome for unclaimed sandbox keys. It stops short of naming alternatives — e.g. whether send_invoice should be used instead to move an invoice to 'sent'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_marketplace_listingA
DestructiveIdempotent
Inspect

Change one of your marketplace listings: pass listing_id and at least one of is_public, commission_rate and min_payout_threshold. Making a private listing public runs the marketplace review first; a function that fails it stays as it was and the refusal carries the report. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
is_publicNoWhether the listing is public.
listing_idYesThe marketplace listing: its id, as list_my_marketplace_listings shows it.
commission_rateNoThe share of each sale the marketplace keeps.
min_payout_thresholdNoThe least balance that is paid out.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the destructiveHint/idempotentHint annotations: it discloses that making a private listing public triggers marketplace review, that a failed function is left unchanged, and that the refusal carries the report. It also states two hard preconditions (claimed Last Price credential, claimed workspace; sandbox self-registration keys get a 403) that no annotation or schema field captures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the mutation contract, then the review/failure semantics, then credential and workspace preconditions. Four dense sentences with no filler, though the workspace-prerequisite sentence is long enough to be slightly hard to parse on first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-output-schema mutation, the description covers the call contract, the review gate, failure behavior, and auth/workspace prerequisites. It does not say what a successful response contains or whether unlisted settings are preserved, which is a minor residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each field is already documented, so the schema carries most of the load. The description still adds a constraint the schema does not encode — that at least one of the three optional fields must be supplied — which is genuine meaning beyond the structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Change one of your marketplace listings') and immediately distinguishes the operation from create/delete/list siblings by stating the required id plus the at-least-one-of field set. An agent can identify the tool from the first clause alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the call shape ('pass listing_id and at least one of is_public, commission_rate and min_payout_threshold') and points at list_my_marketplace_listings as the source of the id. No sibling is named as an alternative for the update case, but the preconditions and the review path for the public flip give clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_orderA
DestructiveIdempotent
Inspect

Change an order: pass order_id and at least one of status, total_amount, currency, metadata and billing_contact_id; null clears the billing contact. An order that has left draft cannot return to it. Needs a claimed Last Price credential. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
statusNoThe order status.
currencyNoThe currency code.
metadataNoAnything worth keeping with the record.
order_idYesThe order: its id, as list_orders shows it.
total_amountNoThe order total.
billing_contact_idNoThe contact to bill, one of the order's customer; null clears it.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds genuinely new behavior: null clears the billing contact, the one-way status transition rule, and two auth prerequisites (claimed Last Price credential, claimed workspace with a 403 for self-registered sandbox keys). This is exactly the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and field list, then constraints, then permissions. Dense but every clause carries operational information; the workspace-claim sentence is long but is required context rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent mutation with six parameters and no output schema, the description covers the invocation contract, the state constraint, the null-clearing semantics, and both auth gates. Nothing an agent needs in order to call this correctly and avoid a 403 is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description exceeds it by stating the cross-field constraint that at least one of the five mutable fields must be supplied — a rule the schema (which requires only order_id) does not express — and by reiterating the null-clears-contact semantics for billing_contact_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change an order') and immediately names the fields it operates on, which cleanly distinguishes it from create_order/delete_order/get_order siblings. An agent knows exactly what class of operation this is without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the invocation precondition — pass order_id plus at least one mutable field — and adds the state-transition rule that a non-draft order cannot return to draft. It does not name an alternative sibling (e.g. activate_order, cancel flows) for when this tool is the wrong choice, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_routing_policyA
DestructiveIdempotent
Inspect

Change a routing policy. Only the fields you send change; config replaces the whole config. The strategy must still be usable with the config that results. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
nameNoA new name.
configNoWhat the strategy needs. weights gives each function id a share (weighted). rules each send requests whose field matches to a function (policy). fallback_chain lists function ids to try in order when the strategy picks none.
strategyNoA new strategy.
policy_idYesThe routing policy UUID: id on a list_routing_policies result.
is_defaultNoMake this the workspace default.
fallback_function_idNoA function to use when the strategy picks none. Null clears it.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: it distinguishes merge semantics for scalar fields from full replacement for `config`, and states a cross-field validity constraint (the strategy must remain usable with the resulting config). It also surfaces an auth/tenancy failure mode (403 until workspace claim) that annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The mutation verb is front-loaded, followed by update semantics, a validity constraint, and prerequisites in descending order of importance. Five short sentences with no filler or restated schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param, nested-object mutation with no output schema, the description covers the risky parts (replacement semantics, validity coupling, auth/tenancy). It omits what a successful response contains and behavior when policy_id does not exist, which would be useful but are secondary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining that `config` replaces the entire object rather than merging, which is the single most consequential semantic the schema does not encode. It does not itemize other params, but the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Change a routing policy") and immediately clarifies the partial-update semantics. It is clearly distinct from create/delete/get routing policy siblings by implication, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the agent clear preconditions for a successful call: a Last Price credential with routing write scope and a claimed workspace, plus the specific consequence (403 for sandbox keys). It stops short of explicit when-not guidance or naming create_routing_policy / get_routing_policy as alternatives for adjacent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_scrape_jobA
DestructiveIdempotent
Inspect

Change a scrape job: send job_id and only the fields you want to change, at least one. Set plan_selector to null to clear it. Hosted scraping is behind a release flag: until it is on for your workspace this answers 501 hosted_scraping_not_enabled. Runs honour robots.txt and fetch only public https pages. Needs a Last Price credential with the commerce:configure scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
urlNoThe public page to read. Must start with https://.
nameNoA name for the job.
job_idYesThe scrape job UUID: id on a list_scrape_jobs result.
enabledNofalse pauses the schedule.
currencyNoThree-letter ISO 4217 code, such as USD.
scheduleNoHow often the job runs. manual runs only with run_scrape_job.
verticalNoThe vertical the prices belong to, such as saas.
plan_selectorNoCSS selector for the plan name beside each price.
price_selectorNoCSS selector for the price elements.
auto_contributeNoWhether run results are contributed to the shared price pool.
extraction_modeNocss reads the selectors only; css_with_llm_fallback asks a model when they find nothing.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: exact failure modes and status codes (501 hosted_scraping_not_enabled, 403 for unclaimed sandbox workspaces), the robots.txt/https-only constraint, and the required credential scope. That is precisely the kind of operational context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the partial-update rule before the prerequisite laundry list, and no sentence is filler. The auth/flag/workspace prerequisites arrive as a dense run of clauses, which is efficient but slightly list-like rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no output schema, it covers the failure surface, auth scope, workspace state and safety constraints thoroughly. The remaining gap is that it says nothing about what a successful update returns or how to verify the change (e.g. list_scrape_jobs).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding two constraints absent from the schema: a minProperties-style 'at least one field' rule and the clearing semantics of 'Set plan_selector to null to clear it' (the schema only shows string|null with minLength 1, which does not imply null clears). Other parameters are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Change a scrape job') and immediately pins down the partial-update contract ('send job_id and only the fields you want to change, at least one'), which distinguishes it from create_scrape_job, delete_scrape_job and run_scrape_job. It never names those siblings explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear invocation guidance ('send job_id and only the fields you want to change, at least one') plus three hard preconditions: the hosted-scraping release flag, a commerce:configure credential, and a claimed workspace. It stops short of naming alternatives, so an agent must infer that run_scrape_job triggers execution and create_scrape_job builds a new job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_storefrontA
DestructiveIdempotent
Inspect

Change a storefront. Only the fields you send change; an empty string clears optional text. Set published to put it live or take it down. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
taglineNoOne line on what it sells.
logo_urlNoAn https link to your logo.
publishedNotrue puts it live; false takes it down.
subdomainNoThe <subdomain> in <subdomain>.store.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved.
offer_tagsNoOnly functions with one of these tags. Empty lists every public function.
brand_colorNoA hex colour such as #0f766e.
contact_urlNoAn https link where people reach you.
descriptionNoA paragraph on the seller and its offers.
product_idsNoOnly these products open to offers. Empty lists every one.
display_nameNoThe name agents see.
storefront_idYesThe storefront id, from list_storefronts.
show_functionsNoList your public marketplace pricing functions.
show_negotiationNoList your products open to offers.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, idempotentHint=true), the description explains partial-update semantics, that an empty string destroys optional text, the publish toggle, the not_released feature-gate error code, required credential scope, and the 403 refusal for unclaimed sandbox workspaces. That is substantial context an agent cannot get from the structured fields alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the mutation semantics, followed by the two hard prerequisites (credential scope, claimed workspace) that would otherwise cause a failure. Every sentence carries a distinct constraint, though the prerequisite sentences are dense run-ons.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation with no output schema, the description covers patch semantics, auth, feature gating and workspace-claim failures — the main ways a call goes wrong. It omits anything about return values and whether changing the subdomain interacts with existing DNS/domain records.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds genuinely new semantics not present in the schema — that omitted fields are untouched and that empty strings clear text fields, plus that storefront_id can be sourced from list_storefronts. It does not explain the interplay of show_functions/show_negotiation with offer_tags/product_ids, so it falls short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ('Change a storefront'), which clearly separates it from create_storefront, delete_storefront and get_storefront in the sibling set. It stops short of explicitly contrasting with those siblings, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the operative condition ('Only the fields you send change; an empty string clears optional text') and how to publish/unpublish, plus the gating condition 'only where the workspace has storefronts switched on'. It does not name alternative tools (e.g. delete_storefront for removal), so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ucp_checkoutA
DestructiveIdempotent
Inspect

Change a UCP checkout session that is still open: pass checkout_id and at least one of line_items, buyer, context, payment, signals, fulfillment and discounts. A completed or canceled session answers 422. Needs a Last Price credential with price compute scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
buyerNoWho is buying.
contextNoWhere the checkout happens: locale, country, channel and the like.
paymentNoThe payment handler and currency.
signalsNoWhere the buyer came from: referrer, utm values and device type.
discountsNoDiscount codes to apply.
line_itemsNoWhat is being bought.
checkout_idYesThe checkout session: its id, as create_ucp_checkout and list_ucp_checkouts show it.
fulfillmentNoHow the order is fulfilled: its methods.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds valuable operational context beyond annotations: 422 for completed/canceled sessions, a required price compute credential scope, and 403 for unclaimed sandbox workspaces. It still does not say whether omitted fields are preserved or cleared on update, so it is not fully complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with no filler. The eligibility constraint is front-loaded, followed by required inputs, error behavior, and auth prerequisites.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation with eight nested parameters and no output schema, the description covers eligibility, required input shape, error responses, and credential/workspace prerequisites. Nothing essential for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents individual fields and the baseline is 3. The description adds a cross-parameter rule not enforced by the schema: checkout_id is required and at least one of line_items, buyer, context, payment, signals, fulfillment, or discounts must also be supplied. It adds little about nested object syntax, but the schema covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — change a UCP checkout session — and immediately scopes it to sessions that are still open. This clearly separates it from create_ucp_checkout, complete_ucp_checkout, and cancel_ucp_checkout without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly limits use to open sessions and warns that completed or canceled sessions answer 422, which is a clear when-not-to-use condition. It does not explicitly name the sibling alternatives such as complete_ucp_checkout or cancel_ucp_checkout, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_webhookA
DestructiveIdempotent
Inspect

Change a webhook endpoint: its url, the events it gets, or switch it off and on with status. Only the fields you send change; events replaces the whole list. Needs the owner or admin role, and a key with no scope limits or a person's sign-in. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
urlNoWhere to send events. Must start with https://.
eventsNoReplaces the whole list of events, at least one.
statusNoinactive stops deliveries; active resumes them.
webhook_idYesThe webhook endpoint UUID: id on a list_webhooks result.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: explains patch semantics ('only the fields you send change'), that 'events' is a lossy full replacement rather than a merge, and the auth/workspace preconditions including the specific 403 failure mode. This is exactly the destructive/idempotent nuance the destructiveHint and idempotentHint flags cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and fields before prerequisites. Dense but every clause carries information; the workspace-claim sentence is slightly long but explains a concrete rejection case an agent would otherwise hit blind.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, it covers what changes, what is preserved, replacement semantics, and permission gates. It omits what the response contains and whether an accidental events replacement can be recovered, but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds meaningful semantics by framing the call as a partial update, clarifying that status is the on/off switch, and reinforcing that events replaces rather than appends. It does not add anything about webhook_id resolution beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Change) and resource (webhook endpoint) plus the exact mutable fields (url, events, status). An agent can distinguish it from create_webhook/delete_webhook/list_webhooks without opening the schema, since those verbs are semantically disjoint and the description scopes it to modifying an existing endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the operative context for using it: owner/admin role required, key must have no scope limits or be a person's sign-in, and a claimed workspace is required or the call returns 403. It does not explicitly name alternatives (e.g., delete_webhook to remove, create_webhook to add), so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workspace_settingsA
DestructiveIdempotent
Inspect

Change your workspace settings. Only the fields you send change: company details, tax id, default currency, payment terms in days, invoice prefix and footer, tax on or off, tax registrations (null clears them) and the sales playbook (null resets it). Model keys are managed in the dashboard, never here. Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
tax_idNoTax id.
tax_ratesNoTax registrations. Null clears the list.
tax_enabledNoWhether tax is added to invoices.
company_logoNoLogo address.
company_nameNoCompany name.
company_emailNoCompany email. Null clears it.
company_phoneNoCompany phone. Null clears it.
invoice_footerNoText at the foot of each invoice.
invoice_prefixNoText at the start of each invoice number.
sales_playbookNoThe sales playbook. Null resets it.
company_addressNoAddress with line1, line2, city, state, zip and country, each text up to 200 characters. Null resets it.
company_websiteNoCompany website. Null clears it.
default_currencyNoThree-letter currency code, such as USD.
payment_terms_daysNoDays to pay an invoice.
company_descriptionNoWhat the company does. Null clears it.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (destructive/idempotent/write): it discloses patch semantics ('Only the fields you send change'), destructive null semantics for tax registrations and the sales playbook, the required credential scope, and the 403 failure mode for unclaimed sandbox workspaces. These are exactly the traits an agent cannot infer from the schema or hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with scope, then semantics, then exclusion, then prerequisites. No filler, no restatement of the tool name, and each sentence carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation with annotations but no output schema, the description covers patch behavior, null semantics, auth, and failure modes. The only gap is that it says nothing about what a successful call returns or whether the response reflects the full settings object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by stating the partial-update rule that governs all 15 optional fields and by reiterating the null-clears/resets semantics for the nested fields where misunderstanding is costly. It stops short of adding format or value guidance beyond what the schema already carries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Change your workspace settings') and then enumerates exactly which settings it covers (company details, tax id, currency, payment terms, invoice prefix/footer, tax, tax registrations, sales playbook). The line 'Model keys are managed in the dashboard, never here' draws a hard scope boundary that an agent can act on without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong preconditions (Last Price credential with workspace settings write scope; claimed workspace required, sandbox keys 403 until claimed) and an explicit exclusion (model keys). It does not explicitly point at get_workspace_settings for reading current values or distinguish itself from update_billing_settings, so the alternative routing 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.

upload_hosted_model_versionAInspect

Upload a model trained anywhere as a new version of a hosted model: the ONNX file as base64 (at most 4 MiB) and the spec that maps request fields to its inputs. It is checked before it is stored: it must parse, use only operators the hosted runtime runs (scikit-learn, XGBoost and LightGBM tree ensembles, linear models, small neural networks), take as many inputs as the spec lists, and give a finite answer of the right shape on a test row; otherwise it answers 422 naming the problem. Stored as a candidate unless promote is true. The hosted MCP endpoint (/api/mcp/rpc) takes requests of at most 64 KiB, so send a larger file with the stdio server, the tool packages or POST /api/hosted-models/{model_id}/versions. Answers 404 not_released while hosted models (the hosted-pricing-models release) are not switched on for your workspace. Needs a Last Price credential with function publish scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
specYesHow request fields become the model's inputs.
notesNoOptional notes kept with the version.
promoteNoMake it the active version at once. Defaults to false: stored as a candidate.
model_idYesThe hosted model's id: id on a list_hosted_models result.
artifact_base64YesThe .onnx file, base64 encoded. At most 4 MiB before encoding.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds the annotations, which only flag it as a non-idempotent, non-destructive write. The description discloses the validation gauntlet (must parse, only supported operators, matching input count, finite/shape-correct output), the 422-on-failure behavior, the candidate-vs-promoted default, size ceilings, and the auth/workspace prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence, with validation, gating, and transport constraints following. It is a dense single paragraph – every clause carries information, though the run-on length costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation with nested spec and no output schema, it covers validation rules, error codes, size limits, auth scope, workspace prerequisites, and success semantics (candidate vs active). An agent has everything needed to call it correctly or diagnose failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds real value on top by explaining the 4 MiB pre-encoding limit, the 64 KiB request cap, and what spec is for (mapping request fields to model inputs).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: upload a model trained anywhere as a new version of a hosted model, with the artifact format (ONNX as base64) and the accompanying spec. It is clearly distinguishable from siblings like train_hosted_model, create_hosted_model, and promote_hosted_model_version.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions: needs publish-scoped credential, a claimed workspace (sandbox keys get 403), and the release must be on (else 404). It also names alternatives for oversized files (stdio server, tool packages, direct POST). It stops short of explicitly contrasting with train_hosted_model, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

use_api_keyA
Idempotent
Inspect

Use a Last Price API key you already hold (a saved file, LASTPRICE_API_KEY) in this MCP connection, when it was opened without one: pass api_key. On the hosted MCP server this session then runs as that key's agent, so the tools that need a credential work at once with no header to add; it lasts until the session ends or the key is revoked or rotated. The key is checked, never echoed back. A connection that already has a credential keeps it. Public: needs no other credential.

NameRequiredDescriptionDefault
api_keyYesYour Last Price API key: lp_ and 40 lowercase hex characters.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that the key becomes the session's identity, that the effect is session-scoped and ends on session end/revocation/rotation, that the key is validated but never echoed, and that existing credentials take precedence. That is exactly the lifecycle and side-effect information an agent needs for a stateful auth operation with destructiveHint=false but readOnlyHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded — the precondition and the action come first, then consequences, then the security note. The first sentence is an awkward colon-spliced run-on, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single required parameter with full schema coverage and no output schema, the description covers scope, duration, and credential precedence, which is what an agent needs to decide and act. It does not say what happens on an invalid or revoked key at call time, a minor gap given the schema pattern already screens format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already specifies the lp_ + 40-hex pattern, so the baseline is 3. The description adds real value by telling the agent where the value comes from (a saved file or LASTPRICE_API_KEY env var the caller already holds), which the schema does not say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action — authenticating the current MCP session with a Last Price API key the caller already holds — and names the concrete condition (connection was opened without one). No sibling tool in the list does anything comparable, so there is no ambiguity to resolve.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both the trigger (session opened without a credential) and the exclusion (a connection that already has a credential keeps it, so this call is unnecessary). It also notes the endpoint is public and needs no other credential, removing a common precondition question.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_agent_protocolA
Idempotent
Inspect

Check the Personal Agent Protocol file you published: Last Price fetches https:///.well-known/poppy.json and compares it with the one get_agent_protocol gives. A match verifies the domain for your workspace; a failure returns reason and message saying what to fix, and a domain another workspace verified answers 409. Answers 404 until agent protocol files are switched on for your workspace. Needs a Last Price credential with routing write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (openWorldHint, idempotentHint, non-destructive) by disclosing that it performs an outbound HTTPS fetch, enumerating the 404/409/403 failure modes and their causes, and specifying the credential scope and workspace-claim prerequisite. This is exactly the preconditions-and-failure-modes context an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the comparison mechanism before layering on error codes and prerequisites, and every sentence carries operational information. It is dense and somewhat run-on (several sentences packed with status codes), but no content is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does cover returns at a high level — success verifies the domain, failure returns reason and message, and 409/404/403 cases are named. A short note on what a successful verification changes for the workspace would close the last gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description still implies the subject domain comes from the workspace's published protocol rather than an argument, which is useful framing, but there is nothing further to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check the Personal Agent Protocol file you published') and immediately explains the mechanism: fetching https://<domain>/.well-known/poppy.json and comparing it against what get_agent_protocol returns. This clearly distinguishes it from sibling verifiers like verify_storefront_domain or verify_webhook_signature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives rich operational context: it only applies when agent protocol files are enabled (404 otherwise), requires a routing-write credential, and refuses sandbox keys from self-registration with a 403 until a human claims the workspace. It references get_agent_protocol as the comparison source but doesn't explicitly route the agent away from similarly-purposed siblings, keeping it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_priceAInspect

Ask whether a price makes sense for its context, rather than what the price should be. Returns a verdict (fair, too_high, too_low, or unknown), the band it was judged against, a signed deviation from the reference, a confidence, and the evidence behind it. A verdict of "unknown" means the price could not be judged, which is not the same as fair. Pass quote_valid_until from the compute_price result the price came from, and where quote expiry is switched on the answer says quote_expired when that quote is stale. Where buyers' spend limits are switched on and metadata.category names a category, the evidence includes buyer_budget: what buyers' own spend checks allowed for it (buyer_envelope), reported and never counted in the verdict.

NameRequiredDescriptionDefault
geoNoOptional geography hint, e.g. US.
channelNoOptional. The sales channel the price is for, such as a shopping agent or an agent marketplace. When your workspace saved a rate for it with set_channel_rates and channel pricing is on, the price is raised so you keep the same amount after the channel's cut.
currencyNoThree-letter ISO currency code, e.g. USD. Defaults to USD.
metadataNoOptional free-form context.
max_priceNoOptional hard ceiling. Binding: a verdict will never relax it.
min_priceNoOptional hard floor. Binding: a verdict will never relax it.
buyer_typeNoOptional. Who the price is for: an AI agent or a person. Recorded with the quote only.
product_idNoOptional identifier of what is being priced.
buyer_agentNoOptional. The buying agent, e.g. chatgpt or agent.example.com. A label recorded with the quote only (while its release flag is on); never sent to the pricing function.
product_typeNoOptional category of what is being priced.
current_priceNoOptional incumbent price. Not required: asking whether a price is sensible does not presuppose an existing one.
outcome_termsNoOptional, for a price charged per outcome. When the outcome counts as failed and what is owed then. Where outcome terms are switched on for the workspace, the result carries outcome_terms: these terms normalised, the deadline as a time, the amount owed on timeout, and which terms are missing (complete is false without success_definition, resolve_by and on_timeout). Sending it marks the price as an outcome price; so does metadata.unit "outcome".
proposed_priceYesThe price to judge. This is the subject of the call.
customer_segmentNoOptional segment, e.g. enterprise.
quote_valid_untilNoOptional. The valid_until of the compute_price result this price came from (RFC 3339). Where quote expiry is switched on, a time already past is answered with quote_expired: true.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses side effects the annotations only hint at (readOnlyHint=false): buyer_type and buyer_agent are 'recorded with the quote only,' sending outcome_terms or metadata.unit 'outcome' marks the price as an outcome price. It also documents flag-gated behaviors (quote_expired, buyer_budget evidence) and that buyer envelope is 'reported and never counted in the verdict,' which is genuinely valuable beyond the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and return shape before diving into conditional flag behaviors. A few clauses are dense (the buyer_budget sentence), but every sentence conveys substantive, non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 15 parameters, a nested outcome_terms object, and no output schema, the description carries the return-shape burden well: it enumerates the verdict, band, signed deviation, confidence, and evidence, and explains the unknown and quote_expired cases. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 15 parameters, including quote_valid_until and the outcome_terms fields. The description adds some semantic context (unknown ≠ fair, buyer_agent is a label never sent to the pricing function, outcome_terms normalization) but mostly reinforces rather than extends the schema, warranting baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise framing: 'Ask whether a price makes sense for its context, rather than what the price should be,' which is a specific verb+resource and explicitly contrasts with the sibling compute_price that produces prices. The verdict enumeration further pins down what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear when-to-use context: validate a price rather than compute one, and pass quote_valid_until from the compute_price result the price came from. It does not give explicit when-not-to-use rules or name sibling alternatives beyond the implicit compute_price contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_signed_quoteA
Read-onlyIdempotent
Inspect

Check a signed price quote you received from a seller: was it issued by Last Price, is it unaltered, and is it still valid. Pass its jws string. A quote that fails still answers: valid is false and reason says why (a forged signature, or expired, which still returns the claims). Public: needs no credential. It answers 501 while signed quotes are off on this deployment, and you can instead verify offline against the public keys at /.well-known/quote-keys.json.

NameRequiredDescriptionDefault
jwsYesThe jws value of the signed quote you were given.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: failure behavior is spelled out (valid is false, reason identifies forged signature or expiry, expired still returns the claims), auth is stated (public, no credential), and a deployment-specific 501 condition is disclosed with an offline fallback. These are exactly the traits an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core question and the input, then layers failure semantics, auth, and the 501 fallback — each sentence earns its place. The final sentence is compound (501 plus offline alternative), which costs a little readability but not enough to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the return-value burden and does so: valid/reason fields, the expired-but-claims nuance, and the 501 signal. Nothing an agent needs to call this correctly or interpret a failure is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema coverage is 100% with a description already present on jws. The description's 'Pass its jws string' and 'the signed quote you were given' add framing but no format or encoding detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check/verify) and a precise resource (a signed price quote received from a seller), and enumerates the three questions it answers: issuer, integrity, validity. This clearly distinguishes it from siblings such as verify_webhook_signature, verify_price, and verify_storefront_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use (you received a signed quote from a seller) and names one explicit alternative — verifying offline against /.well-known/quote-keys.json. It doesn't compare itself to nearby siblings like verify_price or get_ucp_quote, so routing among verification tools is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_storefront_domainA
Idempotent
Inspect

Check a storefront domain's TXT record now. verified true means the domain is proven yours and the storefront answers there once routing is in place; otherwise reason and detail say what is missing. Only where the workspace has storefronts switched on (else an error with code not_released). Needs a Last Price credential with workspace settings write scope. Needs a claimed workspace: a sandbox key from self-registration is refused (403) until a person claims the workspace.

NameRequiredDescriptionDefault
domain_idYesThe domain id, from list_storefronts or add_storefront_domain.
storefront_idYesThe storefront id, from list_storefronts.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (not read-only, idempotent, non-destructive, open-world), and the description adds genuinely new context: the not_released error code when storefronts are disabled, the 403 for unclaimed workspaces, and the required credential scope. Slight ambiguity remains between the read-flavored verb 'Check' and readOnlyHint=false, but the note that verified=true 'proves' ownership implies state is recorded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and result semantics, then prerequisites. Every sentence carries information, but the later sentences are densely packed with parenthetical asides ('else an error with code not_released', the sandbox note), which makes it slightly harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return shape (verified, reason, detail) and the failure modes (not_released, 403). Combined with the stated auth and workspace preconditions, an agent has everything needed to call this correctly and interpret the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both UUID parameters already document their provenance (from list_storefronts, add_storefront_domain, list_storefronts). The description adds no meaning about how storefront_id and domain_id relate or must match, so it sits at the baseline for a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check a storefront domain's TXT record now') and immediately explains what a success result means, distinguishing it from siblings like add_storefront_domain, search_storefront_domains, and list_storefront_dns_records. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'now' plus the explanation that verified=true means routing can proceed implies the right moment to call it (after domain/DNS setup). Prerequisites are spelled out explicitly: storefronts must be switched on, a workspace-settings-write credential is required, and sandbox self-registered workspaces are refused with 403. It does not name alternative tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_webhook_signatureA
Read-onlyIdempotent
Inspect

Check a webhook signature the way Last Price signs them: pass payload (the raw body, up to 8 KB), signature and secret, and optionally encoding (hex or base64) and prefix. Answers whether it is valid. Public and limited per address; use a test secret rather than a live one when you can, because the secret travels in the request. Needs no credential.

NameRequiredDescriptionDefault
prefixNoA prefix the signature carries, for example sha256=.
secretYesThe signing secret. Use a test secret where you can.
payloadYesThe raw body the signature covers.
encodingNoHow the signature is encoded. Defaults to hex.
signatureYesThe signature to check.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world); the description adds value with rate limiting ('limited per address'), the no-credential posture, and a genuine security warning that the secret travels in the request. This is meaningful context beyond the structured hints, though it doesn't discuss latency or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, front-loaded with the action and followed by the caveats that matter. It carries a lot of useful content without wasted words, though the flow is slightly run-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does state the return nature ('Answers whether it is valid'), and it covers the security and rate-limit context an agent needs. Complete enough to invoke correctly; only error/response-shape detail is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter is documented in the schema, so the baseline is 3. The description re-mentions payload size (8 KB), encoding (hex/base64), and prefix, but adds no syntax or format detail beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Check a webhook signature') and grounds it in the product's own signing scheme ('the way Last Price signs them'). It's clearly separable from siblings like ping_webhook, create_webhook, or verify_signed_quote, though it never explicitly names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real operational context: public endpoint, rate-limited per address, no credential required, and the advice to prefer a test secret. It stops short of explicit when-not-to-use or sibling routing, but there is no obvious competing tool for this exact job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Addedregister_agent
    • Addeduse_api_key
  2. 2 tool updates
    • Removedregister_agent
    • Removeduse_api_key
  3. 36 tool updates
    • Addedcalculate_tax
    • Addedcancel_credit_bundle_subscription
    • Changedcheck_purchase1 field changed
      • addedInput schema / properties / pay_to
        Added value: +{
        +  "description": "Optional: the wallet address (bare or CAIP-10) or merchant account id the money goes to. A person's approval is then for that account only, and confirm_purchase and settle_purchase must name the same one: another is refused with code payee_changed. Only where the workspace has payee binding switched on (else an error with code not_released).",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedcompute_price1 field changed
      • addedInput schema / properties / include_buyer_envelope
        Added value: +{
        +  "description": "If true, and metadata.category names a category, the result carries buyer_envelope: what buyers' own spend checks allowed in that category (p25 to p75, the median, and how often checks were refused over a limit, pooled over 5 or more buyer workspaces; no numbers below 5) and where this price sits. A limit, not a valuation: it never changes the price. Where it is not switched on for the workspace it is ignored.",
        +  "type": "boolean"
        +}
    • Changedconfirm_purchase1 field changed
      • addedInput schema / properties / pay_to
        Added value: +{
        +  "description": "The account you are about to pay, when check_purchase named pay_to (then required). Another account releases the hold with code payee_changed: do not pay.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedcreate_credit_bundle_plan
    • Changedcreate_function2 fields changed
      • addedInput schema / properties / rule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "For a rule based function: the rule it prices by. Its input schema is made from the rule, and a rule based function needs one before it can be active. On update null removes it.",
        +  "properties": {
        +    "base": {
        +      "additionalProperties": {},
        +      "description": "Where the price starts: {\"from\":\"current_price\"}, {\"from\":\"unit_cost\"}, {\"from\":\"competitor_prices\",\"pick\":\"min\"|\"avg\"|\"max\"} or {\"from\":\"field\",\"field\":\"<context field>\"}.",
        +      "type": "object"
        +    },
        +    "steps": {
        +      "description": "Applied in order: adjust_pct, margin (target_margin_pct), scale, tiers, floor, ceiling, ending (cents such as 0.99) and round. A floor or ceiling holds through every later step.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "base"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "draft (the default) or active, to have it routed to at once. A self-registered sandbox saves drafts only.",
        +  "enum": [
        +    "draft",
        +    "active"
        +  ],
        +  "type": "string"
        +}
    • Addedcreate_scrape_job
    • Changedcreate_storefront1 field changed
      • changedInput schema / properties / subdomain / description
        Previous value: -"The <subdomain> in <subdomain>.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved."New value: +"The <subdomain> in <subdomain>.store.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved."
    • Addeddelete_scrape_job
    • Addeddescribe_item_so_far
    • Changeddraw_session_spend1 field changed
      • addedInput schema / properties / pay_to
        Added value: +{
        +  "description": "The account this call pays, when open_spend_session named pay_to (then required). Another account is refused with code payee_changed: do not pay; the session stays open.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedgenerate_monetization_code
    • Addedget_github_app_connection
    • Addedget_price_check
    • Addedget_stripe_connection
    • Addedgrant_credit_bundle_plan
    • Addedissue_invoice_with_stripe
    • Addedlist_credit_bundle_plans
    • Addedlist_credit_bundle_subscriptions
    • Addedlist_price_checks
    • Addedlist_scrape_job_runs
    • Addedlist_scrape_jobs
    • Addedopen_monetization_pull_request
    • Changedopen_spend_session1 field changed
      • addedInput schema / properties / pay_to
        Added value: +{
        +  "description": "Optional: the wallet address (bare or CAIP-10) or merchant account id the calls pay. Every draw_session_spend must then name the same one: another is refused with code payee_changed. Only where the workspace has payee binding switched on (else an error with code not_released).",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedpreview_scrape_job
    • Addedprice_from_capture
    • Addedread_quote_reply
    • Addedreport_problem
    • Addedrun_reference_pipeline
    • Addedrun_scrape_job
    • Changedsettle_purchase1 field changed
      • addedInput schema / properties / pay_to
        Added value: +{
        +  "description": "With paid, when check_purchase named pay_to (then required): the account the money went to. Another account keeps the amount held as unknown, with code payee_changed, for the owner to reconcile with reconcile_purchase. A retry cannot clear the hold.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedupdate_credit_bundle_plan
    • Changedupdate_function1 field changed
      • addedInput schema / properties / rule
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "For a rule based function: the rule it prices by. Its input schema is made from the rule, and a rule based function needs one before it can be active. On update null removes it.",
        +  "properties": {
        +    "base": {
        +      "additionalProperties": {},
        +      "description": "Where the price starts: {\"from\":\"current_price\"}, {\"from\":\"unit_cost\"}, {\"from\":\"competitor_prices\",\"pick\":\"min\"|\"avg\"|\"max\"} or {\"from\":\"field\",\"field\":\"<context field>\"}.",
        +      "type": "object"
        +    },
        +    "steps": {
        +      "description": "Applied in order: adjust_pct, margin (target_margin_pct), scale, tiers, floor, ceiling, ending (cents such as 0.99) and round. A floor or ceiling holds through every later step.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "base"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Addedupdate_scrape_job
    • Changedupdate_storefront1 field changed
      • changedInput schema / properties / subdomain / description
        Previous value: -"The <subdomain> in <subdomain>.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved."New value: +"The <subdomain> in <subdomain>.store.last-price.ai: 3 to 40 lowercase letters, digits or hyphens. Some names are reserved."
  4. 2 tool updates
    • Addedregister_agent
    • Addeduse_api_key
  5. 264 tool updates
    • Addedaccept_counter
    • Addedactivate_order
    • Addedadd_commerce_observation
    • Addedadd_order_line
    • Addedadd_storefront_dns_record
    • Addedadd_storefront_domain
    • Addedadd_team_member
    • Addedallocate_variant_traffic
    • Addedapply_analyst_proposal
    • Addedapprove_commerce_proposal
    • Addedapprove_payout_run
    • Addedask_pricing_analyst
    • Addedbuy_day_pass
    • Addedcancel_ucp_checkout
    • Addedchange_team_member_role
    • Addedcheck_agent_readiness
    • Addedcheck_purchase
    • Addedcheck_variant_significance
    • Addedclose_spend_session
    • Addedcomplete_ucp_checkout
    • Changedcompute_price8 fields changed
      • addedInput schema / properties / buyer_agent
        Added value: +{
        +  "description": "Optional. The buying agent, e.g. chatgpt or agent.example.com. A label recorded with the quote only (while its release flag is on); never sent to the pricing function.",
        +  "maxLength": 100,
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / buyer_type
        Added value: +{
        +  "description": "Optional. Who the price is for: an AI agent or a person. Recorded with the quote only.",
        +  "enum": [
        +    "agent",
        +    "person",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / channel
        Added value: +{
        +  "description": "Optional. The sales channel the price is for, such as a shopping agent or an agent marketplace. When your workspace saved a rate for it with set_channel_rates and channel pricing is on, the price is raised so you keep the same amount after the channel's cut.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Optional. A new value (e.g. a UUID) for each call you mean to make; send the SAME value if you retry after a timeout or error you cannot interpret, and the call is computed and charged once. Ignored without a credential.",
        +  "maxLength": 255,
        +  "minLength": 8,
        +  "type": "string"
        +}
      • addedInput schema / properties / learned_routing
        Added value: +{
        +  "description": "Optional. With routing_preference cheapest, fastest, round robin or weighted, let the router learn which of the functions that strategy chooses from serves your workspace best (from your own routed calls), falling back to the strategy while there is too little data. Ignored for any other preference or a function_id, and until learned routing is released for your workspace. get_learned_routing with strategy shows what it learned.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / no_explore
        Added value: +{
        +  "description": "If true, give this price exactly as computed, without the small per-call variation a workspace may run so learned pricing can learn what buyers will pay (see get_price_exploration).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / outcome_terms
        Added value: +{
        +  "description": "Optional, for a price charged per outcome. When the outcome counts as failed and what is owed then. Where outcome terms are switched on for the workspace, the result carries outcome_terms: these terms normalised, the deadline as a time, the amount owed on timeout, and which terms are missing (complete is false without success_definition, resolve_by and on_timeout). Sending it marks the price as an outcome price; so does metadata.unit \"outcome\".",
        +  "properties": {
        +    "evidence": {
        +      "description": "What proves the outcome, e.g. [\"delivery_receipt\"].",
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    },
        +    "on_timeout": {
        +      "description": "What is owed when the deadline passes without success.",
        +      "enum": [
        +        "no_charge",
        +        "partial",
        +        "full"
        +      ],
        +      "type": "string"
        +    },
        +    "resolve_by": {
        +      "description": "The deadline: an ISO 8601 duration from the quote (P30D, PT48H) or an RFC 3339 time. After it, with no success, the outcome has failed.",
        +      "type": "string"
        +    },
        +    "success_definition": {
        +      "description": "What the buyer must see for the outcome to count.",
        +      "maxLength": 500,
        +      "type": "string"
        +    },
        +    "timeout_share": {
        +      "description": "With on_timeout \"partial\": the fraction of the price owed, e.g. 0.3 for 30%.",
        +      "exclusiveMaximum": 1,
        +      "exclusiveMinimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / payment
        Added value: +{
        +  "description": "Optional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header. Omit it to read what the call costs and how to pay; nothing is charged until you send it.",
        +  "maxLength": 8192,
        +  "minLength": 20,
        +  "type": "string"
        +}
    • Addedcompute_prices_batch
    • Addedconfirm_purchase
    • Addedcontribute_price_data
    • Addedcontribute_price_data_batch
    • Addedcreate_card_topup
    • Addedcreate_commerce_connector
    • Addedcreate_commerce_policy
    • Addedcreate_contact
    • Addedcreate_credit
    • Addedcreate_customer
    • Addedcreate_dispute
    • Addedcreate_experiment
    • Addedcreate_function
    • Addedcreate_hosted_model
    • Addedcreate_invoice
    • Addedcreate_marketplace_listing
    • Addedcreate_order
    • Addedcreate_payment
    • Addedcreate_routing_policy
    • Addedcreate_storefront
    • Addedcreate_ucp_checkout
    • Addedcreate_webhook
    • Addeddecide_approval
    • Addeddecide_learned_price_change
    • Addeddecide_rosetta_review
    • Addeddelete_commerce_policy
    • Addeddelete_contact
    • Addeddelete_credit
    • Addeddelete_customer
    • Addeddelete_feature_contract
    • Addeddelete_function
    • Addeddelete_invoice
    • Addeddelete_marketplace_listing
    • Addeddelete_order
    • Addeddelete_price_guardrails
    • Addeddelete_routing_policy
    • Addeddelete_storefront
    • Addeddelete_webhook
    • Addeddisconnect_connected_app
    • Addeddiscover_offers
    • Addeddraw_session_spend
    • Addedestimate_task_cost
    • Addedexecute_commerce_proposals
    • Addedfreeze_rosetta_adapter
    • Addedget_agent_behaviour_test_run
    • Addedget_agent_behaviour_tests
    • Addedget_agent_capabilities
    • Addedget_agent_protocol
    • Addedget_agent_value_receipt
    • Addedget_aitune_profiling
    • Addedget_aitune_system_stats
    • Addedget_alert_preferences
    • Addedget_analyst_brief
    • Addedget_analyst_settings
    • Addedget_approval
    • Addedget_buyer_aware_pricing
    • Addedget_card_topup
    • Addedget_changelog
    • Addedget_channel_rates
    • Addedget_commerce_policy
    • Addedget_contact
    • Addedget_contact_by_external_id
    • Addedget_cost_analytics
    • Addedget_credit
    • Addedget_credit_balance
    • Addedget_customer
    • Addedget_customer_by_external_id
    • Addedget_cut_advisor_settings
    • Addedget_dispute
    • Addedget_experiment_definition
    • Addedget_experiment_results
    • Addedget_experiment_stopping
    • Addedget_feature_contract
    • Addedget_feature_launch_plan
    • Addedget_forge_status
    • Addedget_frontier_model
    • Addedget_function_health
    • Addedget_function_review
    • Addedget_hosted_model
    • Addedget_invoice
    • Addedget_jale_token_balance
    • Addedget_learned_elasticity_curve
    • Addedget_learned_pricing
    • Addedget_learned_routing
    • Addedget_llm_usage
    • Addedget_marketplace_earnings
    • Addedget_negotiation
    • Addedget_offer_settings
    • Addedget_offer_terms
    • Addedget_order
    • Addedget_payment
    • Addedget_payout_run
    • Addedget_payout_schedule
    • Addedget_price_exploration
    • Addedget_prompt_class_benchmarks
    • Addedget_public_leaderboard
    • Addedget_purchase_intent
    • Addedget_reel
    • Addedget_rosetta_health
    • Addedget_routing_policy
    • Addedget_spend_policy
    • Addedget_spend_session
    • Addedget_storefront
    • Addedget_ucp_checkout
    • Addedget_ucp_profile
    • Addedget_ucp_quote
    • Addedget_usage_breakdown
    • Addedget_wallet_balance
    • Addedget_workspace_settings
    • Addedget_x402_price_index
    • Addedinfer_feature_contract
    • Addedingest_with_rosetta
    • Addedinvite_team_member
    • Addedlist_aitune_backends
    • Addedlist_approvals
    • Addedlist_audit_events
    • Addedlist_canonical_schemas
    • Addedlist_commerce_audit_events
    • Addedlist_commerce_catalog
    • Addedlist_commerce_connectors
    • Addedlist_commerce_observations
    • Addedlist_commerce_policies
    • Addedlist_commerce_proposals
    • Addedlist_connected_apps
    • Addedlist_contacts
    • Addedlist_costs
    • Addedlist_credits
    • Addedlist_customers
    • Addedlist_day_passes
    • Addedlist_demo_apps
    • Addedlist_disputes
    • Addedlist_experiments
    • Addedlist_feature_launches
    • Addedlist_hosted_models
    • Addedlist_inference_providers
    • Addedlist_invitations
    • Addedlist_invoices
    • Addedlist_jale_contributions
    • Addedlist_learned_price_changes
    • Addedlist_llm_usage_events
    • Addedlist_marketplace_listings
    • Addedlist_my_marketplace_listings
    • Addedlist_negotiations
    • Addedlist_order_lines
    • Addedlist_orders
    • Addedlist_payments
    • Addedlist_payout_runs
    • Addedlist_pricing_pipelines
    • Addedlist_product_categories
    • Addedlist_reels
    • Addedlist_rosetta_review
    • Addedlist_routing_policies
    • Addedlist_storefront_dns_records
    • Addedlist_storefront_domain_quotes
    • Addedlist_storefronts
    • Addedlist_team_members
    • Addedlist_ucp_checkouts
    • Changedlist_usage_events1 field changed
      • addedInput schema / properties / buyer_agent
        Added value: +{
        +  "description": "verified: only calls whose buying agent proved who it was with an AgentID token. Defaults to all.",
        +  "enum": [
        +    "all",
        +    "verified"
        +  ],
        +  "type": "string"
        +}
    • Addedlist_vendor_adapters
    • Addedlist_verification_strategies
    • Addedlist_webhook_deliveries
    • Addedlist_webhooks
    • Addedmake_offer
    • Addednormalize_with_rosetta
    • Addedopen_spend_session
    • Addedping_webhook
    • Addedplan_rosetta_mapping
    • Addedpredict_with_hosted_model
    • Addedpreview_offer
    • Addedpromote_hosted_model_version
    • Addedpropose_experiment_variant
    • Addedquery_jale_pool
    • Addedquote_storefront_domain
    • Addedrecommend_jale_price
    • Addedreconcile_purchase
    • Addedrecord_cost
    • Addedrefund_payment
    • Addedreject_commerce_proposal
    • Addedreject_forge_candidate
    • Addedreject_payout_run
    • Addedremove_offer_product
    • Addedremove_storefront_dns_record
    • Addedremove_storefront_domain
    • Addedremove_team_member
    • Changedreport_outcome2 fields changed
      • changedInput schema / properties / usage_event_id / description
        Previous value: -"The usage event of the priced call: receipt.id on the compute_price result."New value: +"The usage event of the priced call: receipt.id on the compute_price result. Pass it whenever you priced more than one thing. Omitted, the last compute_price result on this connection is reported, once."
      • changedInput schema / required
        Previous value: -[
        -  "usage_event_id",
        -  "outcome"
        -]New value: +[
        +  "outcome"
        +]
    • Addedrequest_payout_run
    • Addedretry_payout_run
    • Addedrevoke_invitation
    • Addedrollback_hosted_model
    • Addedrun_agent_behaviour_tests
    • Addedrun_commerce_cycle
    • Addedrun_function_health_probe
    • Addedrun_function_review
    • Addedrun_pricing_chain
    • Addedsearch_storefront_domains
    • Addedseed_commerce_sample
    • Addedsend_invoice
    • Addedset_agent_protocol
    • Addedset_analyst_settings
    • Addedset_buyer_aware_pricing
    • Addedset_channel_rates
    • Addedset_commerce_connector_active
    • Addedset_experiment_bandit
    • Addedset_feature_contract
    • Addedset_learned_pricing
    • Addedset_offer_product
    • Addedset_offer_settings
    • Addedset_payout_schedule
    • Addedset_price_exploration
    • Addedset_product_category
    • Addedset_spend_policy
    • Addedsettle_purchase
    • Addedsettle_session_draw
    • Addedsimulate_agent_cut
    • Addedstart_aitune_profiling
    • Addedsuggest_frontier_price
    • Addedsync_commerce_connector
    • Addedsync_commerce_orders
    • Addedtest_commerce_policy
    • Addedtest_function
    • Addedtop_up_balance
    • Addedtrain_hosted_model
    • Addedtranslate_with_rosetta
    • Addedupdate_alert_preferences
    • Addedupdate_commerce_policy
    • Addedupdate_contact
    • Addedupdate_customer
    • Addedupdate_dispute
    • Changedupdate_function7 fields changed
      • addedInput schema / properties / auth_config
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "How to authenticate to the endpoint, such as { type: \"bearer\", token: \"...\" }. Stored encrypted and never returned: a read says only whether one is saved. On update an object replaces it and null removes it. Treat the secret as sensitive: it passes through this conversation.",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / endpoint_url
        Added value: +{
        +  "description": "For a function that calls your own service: the https endpoint that returns the price.",
        +  "format": "uri",
        +  "type": "string"
        +}
      • addedInput schema / properties / inference_config
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "For a function that runs on a model. On update an object replaces it and null removes it, so the function uses the rule-based formula.",
        +  "properties": {
        +    "model": {
        +      "description": "The model id at that provider.",
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "prompt": {
        +      "description": "Your pricing instructions for the model.",
        +      "maxLength": 4000,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "The model provider.",
        +      "enum": [
        +        "openai",
        +        "anthropic",
        +        "openrouter",
        +        "together-ai",
        +        "huggingface",
        +        "replicate",
        +        "baseten",
        +        "aitune"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "provider"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / input_schema
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "JSON Schema of what a price request supplies to the function.",
        +  "type": "object"
        +}
      • addedInput schema / properties / output_schema
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "JSON Schema of what the function returns.",
        +  "type": "object"
        +}
      • addedInput schema / properties / quote_valid_seconds
        Added value: +{
        +  "description": "How long a price this function computes stays valid, in seconds (30 to 86400). Prices carry it as valid_until where quote expiry is switched on for the workspace. Omit for the default of 15 minutes; on update null returns to the default.",
        +  "maximum": 86400,
        +  "minimum": 30,
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / tags / description
        Previous value: -"Replaces the whole tag list."New value: +"The tag list. On update it replaces the whole list."
    • Addedupdate_invoice
    • Addedupdate_marketplace_listing
    • Addedupdate_order
    • Addedupdate_routing_policy
    • Addedupdate_storefront
    • Addedupdate_ucp_checkout
    • Addedupdate_webhook
    • Addedupdate_workspace_settings
    • Addedupload_hosted_model_version
    • Addedverify_agent_protocol
    • Changedverify_price5 fields changed
      • addedInput schema / properties / buyer_agent
        Added value: +{
        +  "description": "Optional. The buying agent, e.g. chatgpt or agent.example.com. A label recorded with the quote only (while its release flag is on); never sent to the pricing function.",
        +  "maxLength": 100,
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / buyer_type
        Added value: +{
        +  "description": "Optional. Who the price is for: an AI agent or a person. Recorded with the quote only.",
        +  "enum": [
        +    "agent",
        +    "person",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / channel
        Added value: +{
        +  "description": "Optional. The sales channel the price is for, such as a shopping agent or an agent marketplace. When your workspace saved a rate for it with set_channel_rates and channel pricing is on, the price is raised so you keep the same amount after the channel's cut.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / outcome_terms
        Added value: +{
        +  "description": "Optional, for a price charged per outcome. When the outcome counts as failed and what is owed then. Where outcome terms are switched on for the workspace, the result carries outcome_terms: these terms normalised, the deadline as a time, the amount owed on timeout, and which terms are missing (complete is false without success_definition, resolve_by and on_timeout). Sending it marks the price as an outcome price; so does metadata.unit \"outcome\".",
        +  "properties": {
        +    "evidence": {
        +      "description": "What proves the outcome, e.g. [\"delivery_receipt\"].",
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    },
        +    "on_timeout": {
        +      "description": "What is owed when the deadline passes without success.",
        +      "enum": [
        +        "no_charge",
        +        "partial",
        +        "full"
        +      ],
        +      "type": "string"
        +    },
        +    "resolve_by": {
        +      "description": "The deadline: an ISO 8601 duration from the quote (P30D, PT48H) or an RFC 3339 time. After it, with no success, the outcome has failed.",
        +      "type": "string"
        +    },
        +    "success_definition": {
        +      "description": "What the buyer must see for the outcome to count.",
        +      "maxLength": 500,
        +      "type": "string"
        +    },
        +    "timeout_share": {
        +      "description": "With on_timeout \"partial\": the fraction of the price owed, e.g. 0.3 for 30%.",
        +      "exclusiveMaximum": 1,
        +      "exclusiveMinimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / quote_valid_until
        Added value: +{
        +  "description": "Optional. The valid_until of the compute_price result this price came from (RFC 3339). Where quote expiry is switched on, a time already past is answered with quote_expired: true.",
        +  "format": "date-time",
        +  "type": "string"
        +}
    • Addedverify_signed_quote
    • Addedverify_storefront_domain
    • Addedverify_webhook_signature
  6. 4 tool updates
    • Addedget_pricing_analysis
    • Addedlist_notifications
    • Addedmark_notifications_read
    • Addedread_my_inbox
  7. 9 tool updates
    • Addedget_billing_settings
    • Addedget_function
    • Addedget_receipt
    • Addedget_usage
    • Addedlist_outcomes
    • Addedlist_receipts
    • Addedlist_usage_events
    • Addedupdate_billing_settings
    • Addedupdate_function
  8. 2 tool updates
    • Addedget_price_guardrails
    • Addedset_price_guardrails
  9. 1 tool update
    • Addedreport_outcome
  10. 1 tool update
    • Addedpricing_conversation
  11. 4 tool updates
    • First observedbrowse_catalog
    • First observedcompute_price
    • First observedlist_functions
    • First observedverify_price

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources