Last Price
Server Details
Compute and verify prices from an agent, metered per call. Works keyless on a demo tenant.
- Status
- Healthy
- Uptime
- 100.0% over 30 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Each tool has a distinct role in the pricing lifecycle: compute, verify, report outcome, get receipt, plus auth and discovery. The main overlap is the gateway pattern, where call_tool and search_tools partially duplicate what the directly-listed tools already do, and list_functions vs search_tools both perform listing operations, which could cause a minor misselection.
Nine of ten tools follow a clean verb_noun snake_case pattern (compute_price, get_receipt, verify_price, report_outcome, register_agent, use_api_key, list_functions, search_tools, call_tool). The single deviation is pricing_conversation, a noun phrase that breaks the verb-first convention.
Ten tools is well-scoped for a pricing service, and the set deliberately gates a much larger 300+ tool surface behind search_tools and call_tool rather than exposing everything. Each listed tool earns its place covering a distinct lifecycle stage.
The core lifecycle is well covered: compute, verify, report outcome, retrieve receipts, discovery, and two auth paths. There is a small gap around listing usage events and receipt formats, which are only reachable via the gateway or an external HTTP endpoint rather than a dedicated listed tool.
Available Tools
10 toolscall_toolADestructiveInspect
Run any Last Price tool by name, including one this connection does not list. Find the name and its arguments with search_tools first. What it does, and whether it changes anything, is what that tool says.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The tool to run, e.g. "list_webhooks". | |
| arguments | No | The arguments for that tool, as its input schema from search_tools describes. Defaults to {}. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring destructiveHint=true and openWorldHint=true, the description adds useful context that behavior and side effects are determined by the invoked tool, not by call_tool itself. It also discloses that unlisted tools can be invoked, though it does not elaborate on auth, rate limits, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and then the required discovery workflow. Every sentence carries useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex open-world meta-tool with rich annotations and an output schema, the description covers the key workflow and delegated behavior. It is mostly complete, though it could say more about invalid tool names or validation errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents name and arguments. The description adds meaningful nuance by saying the name may refer to a tool this connection does not list, which is not captured by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it runs any Last Price tool by name, including tools not listed by the connection. It also clearly distinguishes this executor from discovery via search_tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to use search_tools first to find the tool name and arguments, which is strong usage guidance. It does not state when not to use this tool or name other alternatives beyond search_tools.
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. Returns the price, the function that produced it, the metered cost and a trace of each stage. Send currency plus unit_cost (what the work costs you) or current_price. Missing inputs return an error naming them. For a competitor offer, put competitor_price, competitor_currency and competitive_action in metadata. To pay for this one call with x402, pass payment (call without it to read the price). A result with valid_until (RFC 3339) holds only until then.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Optional geography hint, e.g. US. | |
| payer | No | Optional. Who pays, as distinct from who calls: an agent wallet, a person by card, or a company billed later. | |
| intent | No | Optional. The spending limit the buyer approved, e.g. a card network mandate. The result says whether the price fits it. | |
| channel | No | Optional. The sales channel, e.g. an agent marketplace. With a rate saved by set_channel_rates, the price covers the channel's cut. | |
| payment | No | Optional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header; or, where the answer offers MPP tempo, the whole Payment-Authorization value ("Payment " and the credential). Omit it to read what the call costs and how to pay; nothing is charged until you send it. | |
| routing | No | Optional. Which functions may answer this call, by UUID from list_functions. If none qualifies, the call is refused before any charge. | |
| currency | Yes | Three-letter ISO currency code, e.g. USD. | |
| metadata | No | Optional context. Competitive pricing: competitor_price, competitor_currency and competitive_action (match, or undercut with undercut_pct); confirm the products are comparable. Or market_query (the job in plain words) to look up market prices instead. | |
| max_price | No | Optional maximum acceptable price. | |
| min_price | No | Optional minimum acceptable price. A competitive offer needs this or a declared unit_cost and target_margin_pct. | |
| unit_cost | No | What 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_type | No | Optional. Who the price is for: an AI agent or a person. Recorded with the quote only. | |
| no_explore | No | 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). | |
| product_id | No | Optional identifier of what is being priced. | |
| buyer_agent | No | Optional. The buying agent, e.g. chatgpt. A label recorded with the quote only. | |
| function_id | No | Optional explicit pricing function UUID to use. | |
| product_type | No | Optional category. Defaults to "custom". | |
| current_price | No | The current or reference price. Optional: functions that price relative to an incumbent need it, but lastprice/cost-plus prices from unit_cost instead. | |
| outcome_terms | No | Optional, for a price charged per outcome: when the outcome counts as failed and what is owed then. The result echoes the terms normalised, with complete false until success_definition, resolve_by and on_timeout are all set. | |
| idempotency_key | No | 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. | |
| learned_routing | No | Optional. With routing_preference cheapest, fastest, round_robin or weighted, let the router learn from your own calls which function serves you best (see get_learned_routing). Ignored with a function_id. | |
| customer_segment | No | Optional segment, e.g. enterprise. | |
| target_margin_pct | No | Margin on price for cost-plus, not markup on cost: price = unit_cost / (1 - margin). Defaults to 30. | |
| routing_preference | No | How to route across pricing functions. Defaults to "default". | |
| include_explanation | No | If true, ask for an explanation and confidence with the price. | |
| include_buyer_envelope | No | If true, with metadata.category set, the result adds buyer_envelope: what buyers' spend limits allowed in that category (pooled over 5 or more buyers) and where this price sits. It never changes the price. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| currency | No | |
| confidence | No | |
| request_id | No | |
| computed_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that nothing is charged until payment is sent, that missing inputs return a named error, and that a result with valid_until is time-bounded. This adds real behavioral context for a non-read-only, open-world tool, though it doesn't discuss auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and return shape before moving to input modes, and each sentence addresses a distinct concern (inputs, competitor pricing, payment, validity). Slightly dense, but no filler given the tool's breadth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema handling return values and 100% param coverage, the description only needs to convey the operational modes, and it does: cost-plus vs relative pricing, competitive offers, payment flow, and quote expiry. Nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 26 parameters in depth. The description restates the core currency/unit_cost/current_price and metadata patterns but adds little semantics the schema doesn't already carry, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Compute a price') and immediately specifies the return shape: price, producing function, metered cost, and per-stage trace. It is clearly a computation tool, not a verification or receipt tool, though it never explicitly contrasts itself with siblings like verify_price 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete conditional guidance: send currency plus unit_cost or current_price, use metadata for competitor offers, omit payment to read the cost, and set no_explore to suppress per-call variation. It stops short of explicitly stating when to prefer a sibling tool over this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receiptARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| usage_event_id | Yes | The priced call's usage event id, as list_usage_events returns it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issuer | No | |
| object | No | |
| message | No | |
| receipt | No | |
| issued_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the read-only/idempotent annotations by disclosing required credential scopes (price compute or billing read), the 403 refusal for unclaimed sandbox keys, and the fact that receipts are materialized lazily rather than generated per call. These are the exact operational facts an agent needs before invoking it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the id, then layers in laziness, export alternatives, and auth constraints. The enumerated receipt contents are slightly redundant given the output schema, but the overall density and ordering are efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, a full input schema, and an output schema already present, the description fills the remaining gaps: credential requirements, workspace-claim failure mode, lazy creation semantics, and the HTTP alternative for CSV/HTML. Nothing material is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the schema already defines usage_event_id. The description still adds meaning by tying that id to both list_usage_events and report_outcome, clarifying where to obtain a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (the receipt for a priced call), keys it to a usage event id, and enumerates what the receipt contains. It distinguishes itself from siblings by naming list_usage_events as the id source and report_outcome as another consumer of that id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that receipts are created only on request, references the id-producing sibling, and points to GET /api/receipts/{id} when CSV or HTML is needed. It does not explicitly rule out alternatives like compute_price or verify_price, but the context for when to call it is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionsARead-onlyIdempotentInspect
List the pricing functions registered for the authenticated tenant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| message | No | |
| functions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful scope by noting results are limited to the authenticated tenant, but does not mention ordering, pagination, or whether inactive functions are included. With annotations doing the heavy lifting, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler. Every phrase ("List", "pricing functions", "registered", "authenticated tenant") contributes to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool with both annotations and an output schema, the description covers what is needed to call it correctly. It could optionally connect the output to siblings like call_tool, but that is not required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics are inherently simple and the baseline is 4. The description correctly does not invent parameter details that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("List") and resource ("pricing functions") with a clear scope ("registered for the authenticated tenant"). An agent can distinguish this listing operation from siblings like compute_price, verify_price, and call_tool, which act on pricing functions rather than enumerate them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for discovering available pricing functions, but it does not explicitly say when to use it versus alternatives such as search_tools or pricing_conversation. No exclusions or prerequisites are given, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | prepare (free) returns the questions still open; compute prices once nothing is missing. | prepare |
| answers | No | Answers to the questions the last call asked, by field, e.g. {"currency":"USD","unit_cost":4}. | |
| request | No | Partial REST PricingComputeRequest, including nested context, constraints, an explicit function selection and options. Reuse continuation.request on subsequent calls. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | |
| status | No | |
| message | No | |
| questions | No | |
| assumptions | No | |
| explanation | No | |
| continuation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations: prepare is free and non-computing, compute hits an authenticated pricing API requiring a pre-configured credential, and there are safety rules ("never invent answers", "a continuation is not authorization"). This complements the readOnlyHint=false / idempotentHint=false flags rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the prepare-first workflow before the compute path and the safety caveats. Minor deduction for introducing "continuation.request" as if already known, which makes the middle sentence require a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the prepare→answers→compute loop is broadly covered. Gaps remain: no explanation of what a continuation object is, no error behavior, and no differentiation from the compute_price sibling in a set where overlap is likely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining that request is a partial PricingComputeRequest to reuse via continuation.request and that answers are the responses to the questions the previous call returned. That workflow semantics is not derivable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a concrete verb and resource ("Ask Last Price what pricing inputs are missing") and the action split (prepare vs compute) is spelled out. It falls short of 5 because it never explicitly positions itself against siblings like compute_price or verify_price, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does describe the intended call sequence (start with request: {}, return questions, then send continuation.request and answers) and the condition for compute ("when ready"). But it gives no guidance on when to pick this tool over compute_price or verify_price, and no guidance on failure/precondition handling beyond "configure a credential first."
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | What to call this agent, such as your-system/role-name: letters, digits, spaces and . _ : @ / + - | |
| intended_use | No | What the agent will price, in a sentence. | |
| contact_email | No | Where a person can reach whoever runs this agent. Never used to send mail until a person claims the workspace. |
TDQS
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.
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| outcome | Yes | Whether the price was used. | |
| evidence_url | No | Optional evidence: an https link to the record. | |
| evidence_note | No | Optional evidence: a short note on why. | |
| quality_score | No | Optional: how good the price was, 0 to 1. | |
| usage_event_id | No | 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. | |
| evidence_reference | No | Optional evidence: an order, ticket or invoice id in your own system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| event | No | |
| message | No | |
| quote_expired | No | |
| outcome_window | No | |
| quote_expired_seconds_ago | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context the annotations cannot carry: a Last Price credential is required, a self-registered sandbox key is refused with 403 until the workspace is claimed, the hosted MCP endpoint is stateless so the id must be passed there, and rejections inside the outcome window trigger a partial refund. The one-shot 'report once' semantics also qualify the idempotentHint=false annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and its trigger, then stacks the credential, statelessness, refund and workspace requirements in short declarative sentences. Dense but every sentence carries an operational constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, yet the description still flags that the result reports any refund. Auth, workspace claim, statelessness and the accept/reject trigger are all covered for a non-read-only, non-idempotent write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining where usage_event_id comes from ('receipt.id on the compute_price result') and what omission means ('the last price compute_price returned on this connection'). The optional evidence and quality_score parameters are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Report whether a price from compute_price was used') and ties the event directly to the compute_price result. It never mentions verify_price or get_receipt, so the boundary against those siblings is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('once the buyer has accepted or turned down a price, report it') and a constraint ('Report only what actually happened'), plus when to pass vs omit usage_event_id. It stops short of naming alternatives such as verify_price or what to do if no price was ever computed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsARead-onlyIdempotentInspect
Find the Last Price tool for a task. This connection lists only the tools that reach a price; the server has over 300 more (pricing functions, routing, experiments, webhooks, billing, orders, the marketplace and more). Pass query, a few words for the job, and get back the best matching tools with their full input schemas. Then call one with call_tool, or by its name. With no query it lists every tool name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many tools to return. Defaults to 5. | |
| query | No | What you want to do, in a few words, e.g. "create a webhook" or "experiment results". |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| query | No | |
| tools | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses non-obvious behavior: the search is scoped to a subset of a 300+ tool server, matches are returned with full input schemas, and an empty query degrades to a full name listing. It does not mention ranking behavior, result ordering, or any rate limits, but for a read-only lookup the important behavioral traits are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose, then scope, then the call pattern – no filler. The parenthetical list of the 300+ hidden tool categories is somewhat long but earns its place by telling the agent how much is behind this gateway.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't describe return values, and it still covers what an agent must know: what the search covers, how to phrase the query, what comes back (full input schemas), and how to act on results via call_tool. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both fields are already documented, making 3 the baseline. The description adds real semantic value for `query` by framing it as 'a few words for the job' and by explaining the no-query case, which is a behavioral branch the schema does not convey. `limit` is left entirely to the schema, which is acceptable given its self-explanatory description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Find the ... tool for a task', 'get back the best matching tools with their full input schemas') and distinguishes itself from the sibling call_tool, which it explicitly names as the follow-up step. The scope note ('lists only the tools that reach a price; the server has over 300 more') makes the search domain concrete, though the phrase 'Last Price tool' is product jargon that takes a beat to parse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear sequencing: pass a short query to get matches, then invoke one via call_tool or by name, and with no query it returns every tool name. That covers the main use pattern and names the alternative tool. It stops short of saying when *not* to use it (e.g., when the tool name is already known), 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.
use_api_keyAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Your Last Price API key: lp_ and 40 lowercase hex characters. |
TDQS
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.
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.
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.
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.
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.
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_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 paid verdicts are switched on, a caller with no key can pay for one verdict with x402: pass payment, a signed payment for the price and terms listed under payments.x402.verify_price in /.well-known/agents.json; a verdict of unknown is not charged. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Optional geography hint, e.g. US. | |
| channel | No | Optional. The sales channel, e.g. an agent marketplace. With a rate saved by set_channel_rates, the price covers the channel's cut. | |
| payment | No | Optional. The signed x402 payment, base64, as sent in an X-PAYMENT or PAYMENT-SIGNATURE header; or, where the answer offers MPP tempo, the whole Payment-Authorization value ("Payment " and the credential). Omit it to read what the call costs and how to pay; nothing is charged until you send it. | |
| currency | No | Three-letter ISO currency code, e.g. USD. Defaults to USD. | |
| metadata | No | Optional free-form context. | |
| max_price | No | Optional hard ceiling. Binding: a verdict will never relax it. | |
| min_price | No | Optional hard floor. Binding: a verdict will never relax it. | |
| buyer_type | No | Optional. Who the price is for: an AI agent or a person. Recorded with the quote only. | |
| product_id | No | Optional identifier of what is being priced. | |
| buyer_agent | No | Optional. The buying agent, e.g. chatgpt. A label recorded with the quote only. | |
| product_type | No | Optional category of what is being priced. | |
| current_price | No | Optional incumbent price. Not required: asking whether a price is sensible does not presuppose an existing one. | |
| outcome_terms | No | Optional, for a price charged per outcome: when the outcome counts as failed and what is owed then. The result echoes the terms normalised, with complete false until success_definition, resolve_by and on_timeout are all set. | |
| proposed_price | Yes | The price to judge. This is the subject of the call. | |
| customer_segment | No | Optional segment, e.g. enterprise. | |
| quote_valid_until | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| verdict | No | |
| currency | No | |
| confidence | No | |
| proposed_price | No | |
| reference_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld/idempotent/destructive; the description goes well beyond them by disclosing the billing model (one verdict per payment, unknown verdicts are never charged), the expiry behavior (quote_expired on stale quotes), the conditional buyer_budget evidence and that it never affects the verdict, and the semantic difference between 'unknown' and 'fair'. The readOnlyHint=false is consistent with the disclosed fact that it can charge and records quote metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return values are front-loaded, and each subsequent clause maps to a distinct concern (judgment semantics, expiry, payment, buyer_budget). It is dense but not padded; the payment sentence stacks several nested clauses and could be split, which is the main structural cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with nested objects and an output schema, the description covers the parts that structured fields cannot: the meaning of each verdict including the unknown case, when charging occurs, expiry handling, and the informational-only status of buyer_budget. Return-value detail is already carried by the output schema, so nothing material is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns more by explaining cross-tool provenance for quote_valid_until and the wire format/endpoint for payment (payments.x402.verify_price in /.well-known/agents.json), plus the metadata.category trigger for buyer_budget. It leaves other high-value parameters such as max_price/min_price and outcome_terms entirely to the schema, so it does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and subject ('ask whether a price makes sense for its context') and immediately distinguishes itself from the price-generating sibling by the clause 'rather than what the price should be.' It also enumerates the exact return shape (verdict, band, deviation, confidence, evidence), so an agent knows precisely what it gets back and how it differs from compute_price.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The compute_price vs. verify_price split is explicit, and the description supplies concrete routing instructions: pass quote_valid_until from the compute_price result that produced the price, and use the x402 payment path only when paid verdicts are enabled and no key is present. What's absent is a direct statement of when not to call it (e.g., when no price exists yet, use compute_price first), which is only implied by the quote_valid_until sentence.
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.
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
337 tool updates
- Removed
accept_counter - Removed
activate_order - Removed
add_commerce_observation - Removed
add_order_line - Removed
add_storefront_dns_record - Removed
add_storefront_domain - Removed
add_team_member - Removed
allocate_variant_traffic - Removed
apply_analyst_proposal - Removed
approve_commerce_proposal - Removed
approve_payout_run - Removed
archive_notifications - Removed
ask_pricing_analyst - Removed
browse_catalog - Removed
buy_day_pass - Removed
calculate_tax - Added
call_tool - Removed
cancel_credit_bundle_subscription - Removed
cancel_ucp_checkout - Removed
change_team_member_role - Removed
check_agent_readiness - Removed
check_purchase - Removed
check_variant_significance - Removed
close_spend_session - Removed
complete_ucp_checkout - Changed
compute_price11 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / buyer_agent / descriptionPrevious value: -"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."New value: +"Optional. The buying agent, e.g. chatgpt. A label recorded with the quote only." - changed
Input schema / properties / channel / descriptionPrevious value: -"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."New value: +"Optional. The sales channel, e.g. an agent marketplace. With a rate saved by set_channel_rates, the price covers the channel's cut." - changed
Input schema / properties / include_buyer_envelope / descriptionPrevious value: -"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."New value: +"If true, with metadata.category set, the result adds buyer_envelope: what buyers' spend limits allowed in that category (pooled over 5 or more buyers) and where this price sits. It never changes the price." - changed
Input schema / properties / intent / descriptionPrevious value: -"Optional. The spending limit the buyer approved, such as a card network or payment rail mandate. Where this is switched on for the workspace, the result says whether the price fits it, with the reasons when not, and a signed quote binds the same so an issuer or buyer can check it."New value: +"Optional. The spending limit the buyer approved, e.g. a card network mandate. The result says whether the price fits it." - changed
Input schema / properties / learned_routing / descriptionPrevious value: -"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."New value: +"Optional. With routing_preference cheapest, fastest, round_robin or weighted, let the router learn from your own calls which function serves you best (see get_learned_routing). Ignored with a function_id." - changed
Input schema / properties / metadata / descriptionPrevious value: -"Optional context. For competitive pricing: competitor_price, competitor_currency and competitive_action (match or undercut); undercut requires undercut_pct. Confirm product comparability before calling. Or send market_query (the job, in plain words) instead of competitor_price: where market prices are switched on, the market is looked up first and the answer carries market_prices (low, median, high and the pages); with competitive_action and no competitor_price, the lowest market price is used to undercut and the median to match (market_reference: low, median or high chooses)."New value: +"Optional context. Competitive pricing: competitor_price, competitor_currency and competitive_action (match, or undercut with undercut_pct); confirm the products are comparable. Or market_query (the job in plain words) to look up market prices instead." - changed
Input schema / properties / outcome_terms / descriptionPrevious value: -"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\"."New value: +"Optional, for a price charged per outcome: when the outcome counts as failed and what is owed then. The result echoes the terms normalised, with complete false until success_definition, resolve_by and on_timeout are all set." - changed
Input schema / properties / payer / descriptionPrevious value: -"Optional. Who pays, as distinct from who calls: the agent from its own wallet, a person by card, or a company billed later. Where this is switched on it reaches buyer-aware pricing as metadata.payer and the answer echoes it."New value: +"Optional. Who pays, as distinct from who calls: an agent wallet, a person by card, or a company billed later." - changed
Input schema / properties / routing / descriptionPrevious value: -"Optional. Which functions may answer this one call, by UUID from list_functions. A call these leave with no function is refused, naming why, before anything runs or is charged. Where routing preferences are not yet on for your workspace they are ignored."New value: +"Optional. Which functions may answer this call, by UUID from list_functions. If none qualifies, the call is refused before any charge." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "computed_price": { + "type": "number" + }, + "confidence": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "message": { + "type": "string" + }, + "request_id": { + "type": "string" + } + }, + "type": "object" +}
- Removed
compute_prices_batch - Removed
confirm_purchase - Removed
contribute_price_data - Removed
contribute_price_data_batch - Removed
create_card_topup - Removed
create_child_workspace - Removed
create_commerce_connector - Removed
create_commerce_policy - Removed
create_contact - Removed
create_credit - Removed
create_credit_bundle_plan - Removed
create_customer - Removed
create_dispute - Removed
create_experiment - Removed
create_function - Removed
create_hosted_model - Removed
create_invoice - Removed
create_marketplace_listing - Removed
create_order - Removed
create_payment - Removed
create_routing_policy - Removed
create_scrape_job - Removed
create_storefront - Removed
create_ucp_checkout - Removed
create_webhook - Removed
create_workspace - Removed
decide_approval - Removed
decide_learned_price_change - Removed
decide_rosetta_review - Removed
delete_commerce_policy - Removed
delete_contact - Removed
delete_credit - Removed
delete_customer - Removed
delete_feature_contract - Removed
delete_function - Removed
delete_invoice - Removed
delete_marketplace_listing - Removed
delete_order - Removed
delete_price_guardrails - Removed
delete_routing_policy - Removed
delete_scrape_job - Removed
delete_storefront - Removed
delete_webhook - Removed
describe_item_so_far - Removed
disconnect_connected_app - Removed
discover_offers - Removed
draw_session_spend - Removed
estimate_task_cost - Removed
execute_commerce_proposals - Removed
find_market_prices - Removed
freeze_rosetta_adapter - Removed
generate_monetization_code - Removed
get_agent_behaviour_test_run - Removed
get_agent_behaviour_tests - Removed
get_agent_capabilities - Removed
get_agent_protocol - Removed
get_agent_value_receipt - Removed
get_aitune_profiling - Removed
get_aitune_system_stats - Removed
get_alert_preferences - Removed
get_analyst_brief - Removed
get_analyst_settings - Removed
get_approval - Removed
get_billing_settings - Removed
get_buyer_aware_pricing - Removed
get_card_topup - Removed
get_changelog - Removed
get_channel_rates - Removed
get_commerce_policy - Removed
get_contact - Removed
get_contact_by_external_id - Removed
get_cost_analytics - Removed
get_credit - Removed
get_credit_balance - Removed
get_customer - Removed
get_customer_by_external_id - Removed
get_customer_intel - Removed
get_customer_overview - Removed
get_cut_advisor_settings - Removed
get_dispute - Removed
get_experiment_definition - Removed
get_experiment_results - Removed
get_experiment_stopping - Removed
get_feature_contract - Removed
get_feature_launch_plan - Removed
get_forge_status - Removed
get_frontier_model - Removed
get_function - Removed
get_function_health - Removed
get_function_review - Removed
get_github_app_connection - Removed
get_hosted_model - Removed
get_instrumentation_setup - Removed
get_invoice - Removed
get_jale_token_balance - Removed
get_learned_elasticity_curve - Removed
get_learned_pricing - Removed
get_learned_routing - Removed
get_llm_usage - Removed
get_marketplace_earnings - Removed
get_negotiation - Removed
get_offer_settings - Removed
get_offer_terms - Removed
get_order - Removed
get_payment - Removed
get_payout_run - Removed
get_payout_schedule - Removed
get_price_check - Removed
get_price_exploration - Removed
get_price_guardrails - Removed
get_pricing_analysis - Removed
get_prompt_class_benchmarks - Removed
get_public_leaderboard - Removed
get_purchase_intent - Changed
get_receipt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "issued_at": { + "type": "string" + }, + "issuer": { + "type": "object" + }, + "message": { + "type": "string" + }, + "object": { + "enum": [ + "receipt" + ], + "type": "string" + }, + "receipt": { + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "payment": { + "type": "string" + }, + "usage_event_id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Removed
get_reel - Removed
get_rosetta_health - Removed
get_routing_experiment - Removed
get_routing_policy - Removed
get_sales_playbook - Removed
get_spend_policy - Removed
get_spend_session - Removed
get_storefront - Removed
get_stripe_connection - Removed
get_ucp_checkout - Removed
get_ucp_profile - Removed
get_ucp_quote - Removed
get_usage - Removed
get_usage_breakdown - Removed
get_wallet_balance - Removed
get_workspace_settings - Removed
get_x402_price_index - Removed
get_x402_voucher_status - Removed
grant_credit_bundle_plan - Removed
infer_feature_contract - Removed
ingest_with_rosetta - Removed
invite_team_member - Removed
issue_invoice_with_stripe - Removed
list_account_sessions - Removed
list_aitune_backends - Removed
list_approvals - Removed
list_audit_events - Removed
list_canonical_schemas - Removed
list_child_workspaces - Removed
list_commerce_audit_events - Removed
list_commerce_catalog - Removed
list_commerce_connectors - Removed
list_commerce_observations - Removed
list_commerce_policies - Removed
list_commerce_proposals - Removed
list_connected_apps - Removed
list_contacts - Removed
list_costs - Removed
list_credit_bundle_plans - Removed
list_credit_bundle_subscriptions - Removed
list_credits - Removed
list_customers - Removed
list_day_passes - Removed
list_demo_apps - Removed
list_disputes - Removed
list_experiment_calls - Removed
list_experiments - Removed
list_feature_launches - Changed
list_functions2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "functions": { + "type": "array" + }, + "items": { + "type": "array" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Removed
list_hosted_demos - Removed
list_hosted_models - Removed
list_inference_providers - Removed
list_integrations - Removed
list_invitations - Removed
list_invoices - Removed
list_jale_contributions - Removed
list_learned_price_changes - Removed
list_llm_usage_events - Removed
list_marketplace_listings - Removed
list_my_marketplace_listings - Removed
list_negotiations - Removed
list_notifications - Removed
list_order_lines - Removed
list_orders - Removed
list_outcomes - Removed
list_payments - Removed
list_payout_runs - Removed
list_price_checks - Removed
list_pricing_pipelines - Removed
list_product_categories - Removed
list_receipts - Removed
list_reels - Removed
list_rosetta_review - Removed
list_routing_policies - Removed
list_scrape_job_runs - Removed
list_scrape_jobs - Removed
list_security_events - Removed
list_storefront_dns_records - Removed
list_storefront_domain_quotes - Removed
list_storefronts - Removed
list_team_members - Removed
list_ucp_checkouts - Removed
list_usage_events - Removed
list_usage_signal_filters - Removed
list_usage_signals - Removed
list_vendor_adapters - Removed
list_verification_strategies - Removed
list_webhook_deliveries - Removed
list_webhooks - Removed
make_offer - Removed
mark_notifications_read - Removed
negotiate_stop - Removed
normalize_with_rosetta - Removed
open_monetization_pull_request - Removed
open_spend_session - Removed
ping_webhook - Removed
plan_rosetta_mapping - Removed
predict_with_hosted_model - Removed
preview_offer - Removed
preview_scrape_job - Removed
price_from_capture - Changed
pricing_conversation3 fields changed- added
Input schema / properties / action / descriptionAdded value: +"prepare (free) returns the questions still open; compute prices once nothing is missing." - added
Input schema / properties / answers / descriptionAdded value: +"Answers to the questions the last call asked, by field, e.g. {\"currency\":\"USD\",\"unit_cost\":4}." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "assumptions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "continuation": { + "properties": { + "request": { + "type": "object" + } + }, + "type": "object" + }, + "explanation": { + "type": "string" + }, + "message": { + "type": "string" + }, + "questions": { + "items": { + "properties": { + "field": { + "type": "string" + }, + "question": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "result": { + "properties": { + "computed_price": { + "type": "number" + }, + "confidence": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "enum": [ + "needs_input", + "ready", + "completed", + "unable_to_assess" + ], + "type": "string" + } + }, + "type": "object" +}
- Removed
promote_experiment_winner - Removed
promote_hosted_model_version - Removed
propose_experiment_variant - Removed
query_jale_pool - Removed
quote_storefront_domain - Removed
read_my_inbox - Removed
read_payable_invoice - Removed
read_quote_reply - Removed
recommend_jale_price - Removed
reconcile_purchase - Removed
record_cost - Removed
refund_payment - Removed
register_agent - Removed
reject_commerce_proposal - Removed
reject_forge_candidate - Removed
reject_payout_run - Removed
remove_offer_product - Removed
remove_storefront_dns_record - Removed
remove_storefront_domain - Removed
remove_team_member - Changed
report_outcome2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "event": { + "properties": { + "id": { + "type": "string" + }, + "outcome": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "message": { + "type": "string" + }, + "outcome_window": { + "type": "object" + }, + "quote_expired": { + "type": "boolean" + }, + "quote_expired_seconds_ago": { + "type": "number" + } + }, + "type": "object" +}
- Removed
report_problem - Removed
request_payout_run - Removed
retry_payout_run - Removed
revoke_invitation - Removed
rollback_hosted_model - Removed
run_agent_behaviour_tests - Removed
run_commerce_cycle - Removed
run_function_health_probe - Removed
run_function_review - Removed
run_pricing_chain - Removed
run_reference_pipeline - Removed
run_scrape_job - Removed
save_instrumentation_setup - Removed
search_storefront_domains - Added
search_tools - Removed
seed_commerce_sample - Removed
send_invoice - Removed
set_agent_protocol - Removed
set_analyst_settings - Removed
set_buyer_aware_pricing - Removed
set_channel_rates - Removed
set_commerce_connector_active - Removed
set_experiment_bandit - Removed
set_feature_contract - Removed
set_learned_pricing - Removed
set_offer_product - Removed
set_offer_settings - Removed
set_payout_schedule - Removed
set_price_exploration - Removed
set_price_guardrails - Removed
set_product_category - Removed
set_spend_policy - Removed
settle_purchase - Removed
settle_session_draw - Removed
simulate_agent_cut - Removed
start_aitune_profiling - Removed
suggest_frontier_price - Removed
sync_commerce_connector - Removed
sync_commerce_orders - Removed
sync_salesforce - Removed
test_commerce_policy - Removed
test_datadog_keys - Removed
test_function - Removed
top_up_balance - Removed
train_hosted_model - Removed
translate_with_rosetta - Removed
unarchive_notifications - Removed
update_alert_preferences - Removed
update_billing_settings - Removed
update_commerce_policy - Removed
update_contact - Removed
update_credit_bundle_plan - Removed
update_customer - Removed
update_dispute - Removed
update_function - Removed
update_invoice - Removed
update_marketplace_listing - Removed
update_order - Removed
update_routing_policy - Removed
update_sales_playbook - Removed
update_scrape_job - Removed
update_storefront - Removed
update_ucp_checkout - Removed
update_webhook - Removed
update_workspace_settings - Removed
upload_hosted_model_version - Removed
use_api_key - Removed
verify_agent_protocol - Removed
verify_instrumentation_setup - Changed
verify_price5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / buyer_agent / descriptionPrevious value: -"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."New value: +"Optional. The buying agent, e.g. chatgpt. A label recorded with the quote only." - changed
Input schema / properties / channel / descriptionPrevious value: -"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."New value: +"Optional. The sales channel, e.g. an agent marketplace. With a rate saved by set_channel_rates, the price covers the channel's cut." - changed
Input schema / properties / outcome_terms / descriptionPrevious value: -"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\"."New value: +"Optional, for a price charged per outcome: when the outcome counts as failed and what is owed then. The result echoes the terms normalised, with complete false until success_definition, resolve_by and on_timeout are all set." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "confidence": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "message": { + "type": "string" + }, + "proposed_price": { + "type": "number" + }, + "reference_price": { + "type": [ + "number", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "type": "object" +}
- Removed
verify_signed_quote - Removed
verify_storefront_domain - Removed
verify_webhook_signature
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
2 tool updates
- Added
register_agent - Added
use_api_key
2 tool updates
- Removed
register_agent - Removed
use_api_key
Related MCP Connectors
Pay-per-call APIs and MCP services for agents, no accounts or keys, with verifiable receipts.
Prepaid inference for agents over hosted MCP. Chat, image, and video.
Find, call and pay per call: the capability layer for agents, plus skills. One key or OAuth.
Agent payment readiness and AI visibility checks, $1 per call over MPP or prepaid credits.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceEnables agents to query live AI model pricing, compare providers, and calculate token workload costs from current published prices.MIT- AlicenseAqualityDmaintenanceEnables agents to verify claims against live web evidence with calibrated confidence, paying per call via x402 and receiving offline-verifiable signed receipts.320 PyPIMIT
- AlicenseBqualityAmaintenanceDials any LiveKit voice agent with an AI simulated caller and records a full forensic behavior log.127MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to calculate, compare, and recommend AI API costs from multiple providers, with support for currency conversion and platform fee analysis.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.