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 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 10 tools
Most tools have clearly distinct roles: compute, verify, report, receipt lookup, auth, and discovery are separable. However, call_tool can execute any listed tool as well, overlapping every direct tool, and pricing_conversation can lead into compute_price, so the boundaries are not perfectly crisp.
Nine of ten tools follow a clear verb_noun pattern such as compute_price, get_receipt, list_functions, register_agent, and verify_price. pricing_conversation is a readable noun-phrase exception, but it is the one minor deviation from an otherwise consistent convention.
Ten tools are well-scoped for the exposed pricing workflow: auth, discovery, pricing, verification, outcome reporting, and receipts. search_tools and call_tool sensibly avoid exposing the server's 300+ other tools as a bloated direct surface.
The core pricing lifecycle is covered: register/use credentials, discover functions, compute a price, verify it, report an outcome, and retrieve receipts. Direct create/update/delete management for pricing functions and broader billing/order operations are not exposed as first-class tools, though search_tools and call_tool can reach them.
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 | A short sentence about the result that an agent can show its person. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real context beyond the annotations: the invoked tool may be one this connection does not expose, and effects are whatever the target tool declares rather than the conservative destructiveHint=true on the dispatcher itself. It stops short of describing failure behavior for an unknown name or whether the target's output is passed through unchanged.
Agents need to know what a tool does to the 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 what the tool does, then the naming prerequisite, then the behavior caveat. Nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a dynamic dispatcher with arbitrary nested arguments this covers the essentials: how to obtain the name, how to shape arguments, and that semantics belong to the target tool; an output schema exists so return values need no explanation. The remaining gap is error handling for an unresolvable tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both properties are self-documenting, so the baseline is 3. The description reinforces where the name and argument shape come from (search_tools), but adds no detail beyond what the schema's "as its input schema from search_tools describes" already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Run any Last Price tool by name, including one this connection does not list" gives a specific verb (run) and resource (a named tool), plus the non-obvious scope that unlisted tools are reachable. It also implicitly separates this from the sibling search_tools, which only finds names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Find the name and its arguments with search_tools first" is an explicit prerequisite that routes the agent to the sibling before calling. It does not say when to call a listed tool directly instead of going through this dispatcher, so the boundary against the other siblings is only implied.
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. confidence is the function's own 0 to 1 score for its price, not a probability that a buyer accepts. price_statement says what the answer is: a third party's estimate for you, or the workspace's commitment when a signed quote is attached.
| 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". | |
| buyer_ceiling | No | Optional. The most the buyer says it will pay, in the request currency (its budget, spend limit or offer cap). Never reaches the pricing function, so it cannot set the price; the model layer reads it as evidence about the buyer and checks it against what the buyer then does. Echoed in price_object.evidence.declared_ceiling. | |
| 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 |
|---|---|---|
| kind | No | What sort of claim the price is: an estimate by a pricing function, advice rather than a commitment. Term: lp:price-kind.computed. |
| message | No | A short sentence about the result that an agent can show its person. |
| receipt | No | The usage event that records this call. Pass receipt.id to report_outcome only when it differs from request_id; when no usage event was recorded, receipt.id falls back to request_id and there is nothing to report against. Term: lp:usage-event. |
| currency | No | ISO 4217 code of computed_price. |
| confidence | No | The function's own 0 to 1 score for this price; not a probability that a buyer accepts. Term: lp:confidence.quote. |
| request_id | No | This call's id; the receipt id unless receipt.id says otherwise. |
| explanation | No | Why the function chose this price, in plain words; null when it gave none. |
| function_id | No | The pricing function that produced the price. Term: lp:pricing-function. |
| valid_until | No | RFC 3339; the price holds only until then. |
| alternatives | No | Other prices the function considered, each with its confidence and a label. |
| price_object | No | What the price means beside the number: the expected acceptance at each price, the range it was chosen in, what it was conditioned on, the evidence behind it, what it cost to compute and whether it was an exploring draw. Term: lp:price-object. |
| function_name | No | Its name, such as lastprice/cost-plus. Term: lp:pricing-function. |
| computed_price | No | The price the function returned, after the caller's bounds and the workspace's guardrails. Term: lp:computed-price. |
| price_statement | No | What this answer is: a third party's estimate for you (standing estimate), or the workspace's commitment until valid_until when a signed quote is attached (speaker seller, standing commitment). Term: lp:price-statement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains charging semantics: nothing is charged until payment is sent, idempotency_key enables safe retry after ambiguous errors, valid_until limits how long a result holds, and missing inputs produce a named error. These details materially help an agent invoke a non-read-only, non-idempotent tool safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and return summary are front-loaded, followed by conditional guidance. It is a dense single paragraph, but nearly every sentence carries distinct invocation or behavioral information relevant to this complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 27-parameter tool with an output schema, the description covers the main pricing modes, error behavior, payment flow, result validity, and confidence/price_statement semantics. The remaining parameter details are well handled by the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description adds meaningful relationships among unit_cost, current_price, target_margin_pct, competitor metadata, and payment, and clarifies confidence and price_statement beyond field-level definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Compute a price') and enumerates the returned values, so the core purpose is clear. It does not explicitly distinguish this from sibling tools such as verify_price or pricing_conversation, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear invocation context: send currency with unit_cost or current_price, use metadata for competitor offers, omit payment to read the price, and expect missing inputs to error. It lacks explicit when-not-to-use guidance or direct comparison to sibling pricing tools, but the operating context is well established.
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 | A short sentence about the result that an agent can show its person. |
| receipt | No | |
| issued_at | No |
TDQS
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, but the description still adds real behavior: receipts are generated on demand rather than continuously, the credential needs price compute or billing read scope, and a self-registered sandbox key is refused with 403 until the workspace is claimed. That last point 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then key semantics, then the REST alternative, then prerequisites — a logical order with no filler sentences. It runs slightly long because it enumerates return fields ('what was priced, by which function and agent, when, the amount, how it was paid...') that an output schema already covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage, annotations, and an output schema, this covers everything an agent needs: how to obtain the id, what comes back, an alternative for other formats, and both auth/workspace preconditions including the 403 case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented, so baseline is high; the description still adds meaning by identifying the id as the same one returned by list_usage_events and accepted by report_outcome, which clarifies provenance and reuse beyond the schema's own wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the receipt for one of your workspace's priced calls') and pins the exact lookup key, distinguishing it from list-style siblings. It also cross-references the tools that produce/consume the same id (list_usage_events, report_outcome), so an agent can place it in a workflow without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (a single priced call identified by usage event id) and an explicit alternative for other needs: 'For CSV or a printable page, call GET /api/receipts/{id} with format=csv or format=html.' It also states the two prerequisites (scope and claimed workspace) that otherwise cause silent failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionsBRead-onlyIdempotentInspect
List the pricing functions registered for the authenticated tenant.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size. Defaults to 50; the API caps it at 100. | |
| offset | No | Rows to skip. Defaults to 0. | |
| status | No | Only functions in this status. | |
| is_builtin | No | True for built-in functions only, false for the tenant's own only. | |
| execution_type | No | Only functions of this execution type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| message | No | A short sentence about the result that an agent can show its person. |
| functions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's only addition is the tenant scoping, which largely restates openWorldHint=false; it says nothing about pagination behavior, default ordering, or result caps beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity comes at the cost of any operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional filter/pagination params, rich annotations, and an output schema, the description does the minimum: it identifies the resource and tenant scope. It never explains that all five params are optional combinable filters or how paging should be driven, leaving that entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with well-documented limit/offset/status/is_builtin/execution_type fields, so the baseline of 3 applies. The description adds no filtering or pagination semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource ("List the pricing functions") with a useful scope qualifier ("registered for the authenticated tenant"). No sibling tool overlaps with function listing, so explicit differentiation is unnecessary, though the description never says what a 'pricing function' is relative to the compute_price/verify_price siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of when to prefer get-by-id or compute_price instead, and no hint that results are paginated or filtered via the optional params. The usage context is only inferable from the name.
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 | A short sentence about the result that an agent can show its person. |
| questions | No | |
| assumptions | No | |
| explanation | No | |
| continuation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: prepare is free and does not compute, compute uses the authenticated pricing API, credentials must be configured, and continuation must not be treated as authorization. It also explicitly forbids inventing answers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and then explains the prepare/compute flow, credential prerequisite, and safety rule. It is dense but mostly efficient, with minor awkwardness from phrases such as 'return its questions to the caller.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 tool with nested request objects, an output schema, and workflow actions, the description covers the essential preparation, computation, authentication, and safety behavior. It could be stronger by explicitly relating this tool to sibling pricing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents the parameters well. The description still adds useful workflow meaning for action, request reuse via continuation.request, and answers to the questions asked by the previous call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool asks Last Price which pricing inputs are missing and supports prepare versus compute actions. It does not explicitly distinguish the tool from sibling tools such as compute_price or verify_price, so it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage steps: start with request {}, return questions, then send continuation.request and answers, and only use compute when ready. It also states that prepare is free and that a credential must be configured first, though it does not name sibling alternatives.
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 | A short sentence about the result that an agent can show its person. |
| 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?
Beyond the annotations it discloses statelessness of the hosted endpoint ('remembers nothing, so pass it there'), single-shot semantics for the fallback path, the refund mechanic for rejections inside the outcome window, the required Last Price credential, and the 403 refusal for unclaimed sandbox keys. That is substantial behavioral context the annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and the parentheticals are compact, though the single dense paragraph mixes reporting rules, billing mechanics, and auth constraints. The line 'Report only what actually happened' is the one sentence that adds little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent write with an output schema, the description covers everything an agent needs before calling: trigger condition, id resolution, credential and workspace prerequisites, and the consequence of rejection. Return values are delegated to the output schema appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description still adds real meaning for usage_event_id by explaining that omission resolves to the last compute_price result and that this only works once and not on the hosted endpoint. Other parameters (evidence fields, quality_score) 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?
The description opens with a specific verb + resource ('Report whether a price from compute_price was used') and ties the tool to the exact upstream call that produces its input, so an agent can tell it apart from verify_price or get_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the triggering condition clearly ('once the buyer has accepted or turned down a price, report it') and explains the omitted-parameter path versus passing a specific receipt id. No sibling alternative is named as a when-not, 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.
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 | A short sentence about the result that an agent can show its person. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: the result set includes full input schemas for the matched tools, and an empty query returns every tool name rather than an error. It notes the 300+ tool breadth of the server, which is context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core guidance is front-loaded, but the parenthetical catalog enumeration ("pricing functions, routing, experiments, webhooks, billing, orders, the marketplace and more") is padding that does not help an agent act. The opening "Find the Last Price tool" phrasing is confusing and costs the reader a pass before the real purpose lands.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary, and the description still covers the essential next step after results arrive. For a two-parameter discovery tool this is nearly complete, with only the `limit` behavior and any ordering/ranking semantics left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds the meaningful empty-query semantics for `query` (lists all tool names) but says nothing about `limit` beyond what the schema contains, so it adds only partial value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: find/list tools matching a task query, and it explicitly distinguishes itself from the rest of the catalog by noting that this connection only exposes price-reaching tools while the server hosts 300+ others. The opening phrase "Find the Last Price tool for a task" is awkward and slightly obscure, which keeps it from a 5, but the intended purpose (tool discovery) is unambiguous by the second sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames the workflow: pass a few words, get matching tools with full input schemas, then invoke one via call_tool or by name. The no-query behavior is explicitly described, so an agent knows both the normal and the fallback path. It stops short of stating when not to use it (e.g., when the target tool is already known or is a visible sibling), 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.
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 (within_band, 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 within_band. Act on next_step: buy (within band on confident, independent evidence), negotiate (too high), walk_away (far too high, confidently) or check_more (unknown, too low, or weak evidence); next_step_reason says why. 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. price_statement says what the answer is: a third party's estimate whose band is an acceptance range around the reference, not an interval of value.
| 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 |
|---|---|---|
| band | No | The range the price was judged against; a null bound is open on that side. Term: lp:band.verification. |
| message | No | A short sentence about the result that an agent can show its person. |
| verdict | No | unknown means nothing could judge the price, which is not within_band. Term: lp:verdict. |
| currency | No | ISO 4217 code of proposed_price and the band. |
| evidence | No | Each source's reference, band and weight. Term: lp:evidence. |
| next_step | No | What a buyer should do with this price. Term: lp:next-step. |
| confidence | No | The lowest evidence weight, halved when sources disagree. Term: lp:confidence.verdict. |
| valid_until | No | RFC 3339; the verdict holds only until then. |
| deviation_pct | No | Percent from the reference price; positive is above it. Term: lp:deviation. |
| proposed_price | No | The price that was judged. Term: lp:proposed-price. |
| price_statement | No | What this answer is: a third party's estimate whose band is an acceptance range around the reference (interval_meaning acceptance_range), not an interval of value. Term: lp:price-statement. |
| reference_price | No | The price the evidence points at. Term: lp:reference-price. |
| next_step_reason | No | Why next_step was chosen, in one sentence. |
| independent_evidence | No | False means the verdict partly reasoned from the price itself. Term: lp:independent-evidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the verdict values, what unknown means, how next_step should be interpreted, quote-expiry behavior, x402 payment behavior, and that unknown verdicts are not charged. These are meaningful behavioral details for a tool whose annotations mark it as non-read-only and open-world.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the purpose, return values, and next-step guidance, and most sentences carry useful information. It is longer than typical because the tool has complex payment and verification modes, but the single-paragraph structure makes it somewhat harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, 16 parameters, and rich output schema, the description covers the critical behavioral context: verdict semantics, next steps, quote expiry, payment, and buyer-budget evidence. It does not need to explain return values in full because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds useful meaning for key parameters such as proposed_price being the subject, quote_valid_until coming from compute_price, payment using x402, and metadata.category triggering buyer_budget evidence. It does not need to restate every schema-described field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: verifying whether a price makes sense for its context. It explicitly contrasts this with computing what the price should be, which distinguishes it from the sibling compute_price tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence tells the caller when to use this tool versus compute_price, and later text explains the workflow by saying to pass quote_valid_until from the compute_price result. It also gives concrete guidance on acting on next_step values and when a paid verdict applies.
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.
8 tool updates
- Changed
call_tool1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
compute_price9 fields changed- added
Input schema / properties / buyer_ceilingAdded value: +{ + "description": "Optional. The most the buyer says it will pay, in the request currency (its budget, spend limit or offer cap). Never reaches the pricing function, so it cannot set the price; the model layer reads it as evidence about the buyer and checks it against what the buyer then does. Echoed in price_object.evidence.declared_ceiling.", + "exclusiveMinimum": 0, + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / alternatives / descriptionAdded value: +"Other prices the function considered, each with its confidence and a label." - added
Output schema / properties / currency / descriptionAdded value: +"ISO 4217 code of computed_price." - added
Output schema / properties / explanation / descriptionAdded value: +"Why the function chose this price, in plain words; null when it gave none." - added
Output schema / properties / kindAdded value: +{ + "description": "What sort of claim the price is: an estimate by a pricing function, advice rather than a commitment. Term: lp:price-kind.computed.", + "enum": [ + "computed" + ], + "type": "string" +} - added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person." - added
Output schema / properties / price_objectAdded value: +{ + "description": "What the price means beside the number: the expected acceptance at each price, the range it was chosen in, what it was conditioned on, the evidence behind it, what it cost to compute and whether it was an exploring draw. Term: lp:price-object.", + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / price_statementAdded value: +{ + "description": "What this answer is: a third party's estimate for you (standing estimate), or the workspace's commitment until valid_until when a signed quote is attached (speaker seller, standing commitment). Term: lp:price-statement.", + "properties": { + "audience": { + "enum": [ + "public", + "one_counterparty", + "private" + ], + "type": "string" + }, + "interval_meaning": { + "enum": [ + "credible_interval", + "evidence_spread", + "acceptance_range", + "negotiation_room" + ], + "type": "string" + }, + "speaker": { + "enum": [ + "seller", + "buyer", + "both", + "third_party", + "market" + ], + "type": "string" + }, + "standing": { + "enum": [ + "proposal", + "commitment", + "executed", + "estimate", + "constraint" + ], + "type": "string" + } + }, + "required": [ + "speaker", + "standing", + "audience" + ], + "type": "object" +} - added
Output schema / properties / request_id / descriptionAdded value: +"This call's id; the receipt id unless receipt.id says otherwise."
- Changed
get_receipt1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
list_functions1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
pricing_conversation1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
report_outcome1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
search_tools1 field changed- added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person."
- Changed
verify_price4 fields changed- added
Output schema / properties / currency / descriptionAdded value: +"ISO 4217 code of proposed_price and the band." - added
Output schema / properties / message / descriptionAdded value: +"A short sentence about the result that an agent can show its person." - added
Output schema / properties / next_step_reason / descriptionAdded value: +"Why next_step was chosen, in one sentence." - added
Output schema / properties / price_statementAdded value: +{ + "description": "What this answer is: a third party's estimate whose band is an acceptance range around the reference (interval_meaning acceptance_range), not an interval of value. Term: lp:price-statement.", + "properties": { + "audience": { + "enum": [ + "public", + "one_counterparty", + "private" + ], + "type": "string" + }, + "interval_meaning": { + "enum": [ + "credible_interval", + "evidence_spread", + "acceptance_range", + "negotiation_room" + ], + "type": "string" + }, + "speaker": { + "enum": [ + "seller", + "buyer", + "both", + "third_party", + "market" + ], + "type": "string" + }, + "standing": { + "enum": [ + "proposal", + "commitment", + "executed", + "estimate", + "constraint" + ], + "type": "string" + } + }, + "required": [ + "speaker", + "standing", + "audience" + ], + "type": "object" +}
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
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- AlicenseAqualityCmaintenanceEnables agents to verify claims against live web evidence with calibrated confidence, paying per call via x402 and receiving offline-verifiable signed receipts.3MIT
- AlicenseBqualityBmaintenanceDials any LiveKit voice agent with an AI simulated caller and records a full forensic behavior log.127MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to calculate, compare, and recommend AI API costs from multiple providers, with support for currency conversion and platform fee analysis.27 PyPI1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.