Skip to main content
Glama

Server Details

Agentic commerce gateway: discovery, search, checkout across Shopify/Woo/Odoo/PrestaShop.

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

TDQS

A3.6/5.0

Scored across 23 tools

Disambiguation2/5

There are two parallel, largely overlapping checkout flows: the native one (create_cart, preview_checkout, complete_checkout, get_trust_receipt) and the UCP one (ucp_create_checkout, ucp_get_checkout, ucp_update_checkout, ucp_complete_checkout, ucp_cancel_checkout). Nothing in the descriptions tells an agent when to choose one flow over the other, and search_products vs search_products_enriched also overlap.

Naming Consistency4/5

Nearly all tools follow a predictable snake_case verb_noun pattern (create_cart, get_shipping_rates, select_shipping_option), and the UCP tools are cleanly namespaced with a consistent ucp_ prefix. Minor deviation: the two search_products* variants differ only by a suffix rather than a clear convention.

Tool Count3/5

23 tools is on the heavy side for a store-checkout gateway, and the count is inflated by two near-duplicate checkout flows plus two product-search variants. Without that redundancy the surface would be a reasonable ~15 tools.

Completeness4/5

The domain (product discovery, cart, shipping, checkout, trust/verification, and docs) is well covered end-to-end with no obvious dead ends. The main issue is over-coverage via duplicate flows rather than missing operations.

Available Tools

23 tools
apply_discount
Idempotent
Inspect

Apply a discount or promo code to the cart.

SKYFIRE TOKEN (optional): Pass a kya or kya-pay token in the skyfire-pay-id header to boost trust score. No token required — request proceeds normally if omitted. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoSet to 'ucp_identity' to apply a loyalty discount derived from a UCP identity token instead of a promo code.
cart_idYesCart session ID
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
discount_codeNoDiscount or promo code to apply (required unless source is ucp_identity)
identity_tokenNoUCP identity bearer token (required when source is ucp_identity).
idempotency_keyNoIdempotency key for this call (UUID-v4 or bounded ASCII token, 1-128 chars). Equivalent to the `Idempotency-Key` header — send it here if your client cannot set headers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cart_idYes
currencyYes
discount_codeYes
discount_centsYes
new_total_centsYes
browse_categoriesA
Read-onlyIdempotent
Inspect

List all product categories in Demo Store with product counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
categoriesYes
store_nameYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'product counts' and the 'all categories' scope, which is useful but does not disclose behavior such as pagination, ordering, or response size. This meets the baseline without exceeding it.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. The main action and resource appear first, and the useful detail about product counts is included without verbosity.

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

Completeness5/5

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

With zero parameters, a rich annotation set, and an output schema present, the description fully equips an agent to select and invoke this tool correctly. Nothing about when to call it or what to expect is missing.

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

Parameters4/5

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

There are 0 parameterschers, so no parameter explanation is needed. The baseline of 4 applies because the description compensates for the absence of parameters by clarifying exactly what will be returned.

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

Purpose5/5

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

The description states a specific verb ('List'), a clear resource ('all product categories'), and a meaningful detail ('with product counts'), within the context of Demo Store. This distinguishes it from sibling tools that search or retrieve individual products or pages.

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

Usage Guidelines4/5

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

The description clearly implies this is the tool for browsing the full category listing in Demo Store, which provides enough context for when to use it. It does not explicitly name alternatives or exclusions, but none are necessary for such a straightforward no-parameter listing tool.

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

compare_productsA
Read-onlyIdempotent
Inspect

Compare 2 to 5 products side-by-side with normalized attribute table and best-value recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesArray of product IDs to compare (2-5)

Output Schema

ParametersJSON Schema
NameRequiredDescription
productsYes
bestValueYes
commonFieldsYes
comparisonTableYes
recommendation_provenance_warningNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds meaningful behavioral context by specifying that it produces a normalized attribute table and a best-value recommendation, going beyond the minimal safety profile. It does not contradict any annotations.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that front-loads the action ('Compare') and immediately states the key constraints and outputs. Every word earns its place with no redundancy or filler.

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

Completeness4/5

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

With a single parameter, full schema coverage, annotations covering the safety profile, and an output schema present, the description gives enough for correct invocation. It could have mentioned that the product IDs must reference existing products, but this is a minor gap given the output schema will define the result structure.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description already states 'Array of product IDs to compare (2-5)'. The tool description repeats the 2-5 range but does not add extra meaning about ID formats, source, or preprocessing requirements, so the schema carries the weight.

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

Purpose5/5

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

The description states a specific verb ('Compare'), a specific resource ('products'), an explicit range ('2 to 5'), and the output type ('normalized attribute table and best-value recommendation'). This clearly differentiates it from single-product tools like get_product_details and search tools like search_products.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when comparing 2 to 5 products side-by-side—but does not explicitly mention alternatives, exclusions, or when not to use it. It provides no direct routing guidance against sibling tools like get_product_details or search_products_enriched.

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

complete_checkoutA
Idempotent
Inspect

Complete the purchase. Provide buyer.name and buyer.email from the conversation before opening approval; ask in chat if either is missing. The approval page only reviews these details. PREFER THE CART CARD: if there is an interactive card for this cart, let the buyer confirm and (when the store offers a choice) pick the payment method there — including retrying after a declined payment or switching method — instead of calling this tool yourself. Each call you make here opens a new card in the transcript instead of updating the one already open. Only call it yourself when there is no interactive card or the buyer explicitly asks you to complete it in chat. Idempotent — replay is keyed on checkout_session_id: any retry against a session that already has an order returns that same order (COMPLETED or PENDING_EXTERNAL_CONFIRMATION) without re-charging. The provided idempotency_key is recorded on the session for audit and short-circuits a repeated call with the same key.

If the response has status PENDING_EXTERNAL_CONFIRMATION, no purchase has completed yet: read order_placed and next_action — a person has to approve or pay at its url; next_action says whether calling again with the same checkout_session_id and idempotency_key can read the outcome. SKYFIRE TOKEN (payment_method=KYAPAY): Requires a Skyfire pay or kya-pay token. Preferred: pass the JWT in the skyfire-pay-id request header. Alternative: pass as kyapay_token parameter. Claims validated: sub (account ID), jti (replay prevention), amount (USD, matched against cart total), cur (must be USD), sps (pricing scheme). Missing token with KYAPAY method → error. Invalid token → error 'Invalid Skyfire token'. For other payment methods (MOCK, PAYPAL) no Skyfire token is required. PAYMENT MANDATE: this tool also requires one. Send it as the payment_mandate argument if your client cannot set headers, or as an X-Payment-Mandate header. It must carry mandate_id, max_amount_cents, currency, exp, sub, aud. Two of these are rejected outright if guessed: exp is an INTEGER of Unix seconds (not an ISO 8601 date), and aud is this store's slug (the one in the URL you are calling, not a domain). Its currency must match the cart's currency. Demo Store enforces max_amount_cents against the cart total; a real merchant may only observe that boundary, so enforce the buyer's limit in the agent too. The mandate is a spending cap you declare to limit yourself — it authorises nothing and does not prove the buyer's consent — and its sub must be the identity you authenticate as. max_amount_cents is the spending limit the person you are buying for gave you: ask them if they gave none. Schema: https://trusteed.xyz/.well-known/payment-mandate.schema.json. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoOptional buyer contact information
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
cel_contextNoOptional enforcement context for Trusteed native MCP flows (no Shopify/WooCommerce/PrestaShop/Magento plugin). Providing these fields enables full evaluation of rules R004, R006, R008, R012-R013, R015-R017, R026-R028. See each field's own description for what it means and whether the server verifies it. These values are not signed into the receipt — do not include values you cannot substantiate.
kyapay_tokenNoSkyfire pay or kya-pay JWT for autonomous payment via Skyfire (payment_method=KYAPAY). Alternative to passing the token in the skyfire-pay-id request header — the header takes precedence if both are provided. Claims required: sub, jti, amount (USD), cur=USD, sps.
payment_methodNoPayment method to use. PAYPAL creates a PayPal order and presents approval URL. KYAPAY requires kyapay_token. ACP (Stripe-native settlement) returns a 'not enabled' response unless this deployment enables native settlement; when enabled it charges the Stripe Shared Payment Token passed as shared_payment_token. X402 is available through the configured x402 protocol flow, not this checkout tool. MOCK moves no money: it completes the order without charging. Whether a store accepts it depends on the store's configuration (it is the default on demo-store). Defaults to MOCK if not specified.
payment_optionNoPayment method THE PERSON chose, when preview_checkout returned payment_options. Ask the person; never choose for them. Card numbers and wallet keys are never sent here: the person approves (and, with own_wallet, signs) on the approval page.
idempotency_keyYesUnique key to prevent duplicate charges on retry. Generate once per purchase attempt. Replay is enforced primarily on checkout_session_id (the existing order is returned). The first key seen for a session is recorded; reusing the same key short-circuits to the existing order.
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents` (integer, minor units), `currency` (3 letters, must match the cart's), `exp` (expiry as an INTEGER of Unix seconds — not an ISO 8601 date string), `sub` (the identity you authenticate as — it is compared against it) and `aud` (the store slug this mandate is for, e.g. the slug in the URL you are calling — not a domain). It is a spending cap you declare to limit yourself: it authorises nothing and does not prove the buyer's consent. Use this when your client cannot set an `X-Payment-Mandate` header.
checkout_session_idYesCheckout session ID from preview_checkout — the same value as create_cart's cart_id (must be a valid UUID)
shared_payment_tokenNoStripe Shared Payment Token (spt_…) granted by the buyer's agent wallet for payment_method=ACP. Issued by Stripe, scoped to this merchant, amount and currency, and consumed when used: it can be charged once. Only honoured when this deployment enables native ACP settlement.
reconfirmed_state_hashNoSHA-256 of the authoritative merchant state, as returned in details.reconfirm_state_hash by a previous STATE_RECONFIRMATION_REQUIRED error. Required to proceed when the merchant state moved after the approved preview. Passing a stale hash is refused: it means the state moved again and must be reconfirmed anew.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
currencyYes
order_idYes
idempotentYes
store_nameYes
test_fundsNo
money_movesNo
next_actionNo
payment_urlNo
total_centsYes
approval_urlNo
order_placedNo
funding_sourceNo
payment_methodNo
shipping_sourceNo
payment_capturedNo
external_order_idNo
checkout_session_idYes
shipping_authoritativeNo

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: idempotency is explained as replay keyed on checkout_session_id returning the same order without re-charging, the PENDING_EXTERNAL_CONFIRMATION state is disambiguated ('no purchase has completed yet') along with how to read order_placed/next_action, and auth/token validation rules (Skyfire claims, mandate fields, header vs argument precedence) are disclosed. The readOnlyHint=false annotation is consistent with the described mutation.

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

Conciseness4/5

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

Front-loaded with the action and the cart-card preference, and the all-caps section headers make the dense content scannable. It is long, though, and the PAYMENT MANDATE paragraph duplicates much of the payment_mandate schema description, so a few sentences do not fully earn their place.

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

Completeness5/5

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

For an 11-parameter, nested-schema, high-stakes mutation with an output schema, the description covers everything an agent needs: credentials, mandate, token, idempotency, and the multi-step approval outcome. Return-value structure is left to the output schema, so nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds real value on top by explaining payment_method semantics (which methods need a Skyfire token, that MOCK moves no money), mandate argument rules ('exp' is Unix seconds not ISO 8601, 'aud' is the store slug), and header precedence. It does not add much about the buyer.* or cel_context fields, which the schema already carries.

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

Purpose4/5

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

The opening sentence states a specific verb and resource ('Complete the purchase') and the description grounds it in the flow by identifying checkout_session_id as coming from preview_checkout/cart_id. It does not, however, distinguish this tool from the sibling ucp_complete_checkout, leaving the agent to infer which completion path applies in a UCP context.

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not-to-use rules: prefer the interactive cart card for confirmation and payment-method choice, only call this tool directly when no card exists or the buyer asks to finish in chat. Prerequisites are spelled out too — buyer.name/email must be collected first, a sandbox key is needed via create_sandbox_key, and a payment mandate is required.

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

create_cart
Idempotent
Inspect

Create a shopping cart in Demo Store. Returns a cart_id (the same value as checkout_session_id in preview_checkout, complete_checkout and get_trust_receipt) for use with get_shipping_rates, preview_checkout, and complete_checkout.

SKYFIRE TOKEN (optional): Provide a kya or kya-pay Skyfire token in the skyfire-pay-id request header to boost your agent trust score (up to +0.35), which may unlock better pricing or priority service. No token required — request proceeds with neutral trust score (0.50) if omitted or invalid. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesItems to add to cart
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
agent_tokenNoJWS compact (EdDSA/Ed25519) signed by the agent. Required for Shopify enforcement rules R001/R002/R004. The token is embedded as a server-authoritative cart attribute — Trusteed does NOT verify the signature here; that is done offline by the Shopify Function WASM.
display_contextNoAgent display capability: webview (browser) or headlessheadless
idempotency_keyNoIdempotency key for this cart creation (UUID-v4 or bounded ASCII token, 1-128 chars). Equivalent to the `Idempotency-Key` header — send it here if your client cannot set headers. Retrying with the same key returns the same cart instead of creating a second one.
agent_session_idNoOpaque agent session identifier for cart resume across sessions

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
statusYes
cart_idYes
currencyYes
next_stepYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
store_nameYes
session_stateYes
subtotal_centsYes
display_contextYes
agent_session_idYes
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
create_sandbox_keyAInspect

Get a temporary sandbox credential for this demo store, valid 24h. Present it as an Authorization: Bearer header, or — when your client cannot set headers — as the agent_key argument of the checkout tools. Payments here are simulated: this credential settles nothing and works only on the demo store. No human login is involved at any point.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
api_keyNo
retryableNo
expires_atNo
presented_asNo
mandate_subjectNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states the credential's temporary nature (24h), that it settles nothing (simulated payments), that it works only on the demo store, and that no human login is involved. This covers the key behavioral aspects an agent needs to know before invoking the tool.

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

Conciseness5/5

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

The description is concise, consisting of three sentences that front-load the core purpose and then provide usage and limitations. Every sentence adds value with no redundancy or unnecessary detail. It is well-structured for quick agent comprehension.

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

Completeness5/5

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

Given that the tool has an output schema (not shown here but indicated), the description does not need to explain the return format. It covers the purpose, usage, validity, scope, and caveats. For a zero-parameter, self-contained tool, the description is complete and sufficient for an agent to use it correctly.

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

Parameters4/5

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

The tool has zero parameters, and the schema confirms this. The description does not need to explain parameter semantics because none exist. The baseline for 0 parameters is 4, and since there is nothing to add, this score is appropriate.

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

Purpose5/5

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

The description clearly identifies the tool's purpose: fetching a temporary sandbox credential for the demo store. It uses a specific verb ('Get') and resource ('temporary sandbox credential') and distinguishes itself from sibling tools that handle carts, checkout, and product browsing. The 24-hour validity and demo-only scope are explicitly stated, leaving no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description provides explicit instructions on how to use the credential: either as an Authorization: Bearer header or as the agent_key argument, with a clear caveat for clients that cannot set headers. It also sets expectation that payments are simulated and the credential only works on the demo store. While it doesn't name alternatives (none exist among siblings), the usage context is fully specified.

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

get_merchant_profileA
Read-onlyIdempotent
Inspect

Get the complete profile — trust score, policies, compliance, and protocol support — of the merchant this MCP endpoint belongs to. Takes NO parameters: the merchant is fixed by which store's /:storeSlug/mcp endpoint you connected to, not by an argument. To read a different merchant's profile, call this same tool on that merchant's own endpoint instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
storeYes
trustYes
identityYes
policiesYes
discoveryYes
protocolsYes
acpFeedUrlYes
complianceYes
manifest_jwsYes
manifest_hashYes
protocolScopeNoteYes
agentPolicySummaryYes
manifest_signed_atYes
supportedProtocolsYes
identityProviderTypeYes
enrichedCatalogEnabledYes
identityLinkingEnabledYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructiveness, so the safety profile is covered. The description adds valuable context: the merchant is fixed by endpoint, not by a parameter, and no parameters are accepted—this prevents misuse and clarifies an unusual behavioral trait.

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

Conciseness5/5

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

Three sentences pack the essential information with no waste: what the tool returns, why it takes no arguments, and what to do for a different merchant. The most critical fact—'Takes NO parameters'—is front-loaded in the second sentence, and the overall structure is easily scannable.

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

Completeness5/5

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

Given the tool has zero parameters, rich annotations covering safety and idempotency, and an output schema, nothing an agent needs to call it correctly is missing. The endpoint-binding behavior is explicitly clarified, which is the main source of potential confusion.

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

Parameters5/5

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

With zero parameters, the schema alone provides no semantic guidance. The description explicitly states 'Takes NO parameters' and explains why the merchant is fixed by the endpoint, which is essential for an agent to avoid inventing arguments, especially since additionalProperties is true.

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

Purpose4/5

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

The description clearly states that the tool retrieves the complete merchant profile, including trust score, policies, compliance, and protocol support. It identifies the resource and scope precisely, but does not explicitly differentiate itself from sibling tools like get_trust_receipt, which appears related.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to read the profile of the merchant associated with the current MCP endpoint. It also provides a clear rule for accessing a different merchant's profile by using the same tool on that merchant's endpoint, though it does not mention alternative sibling tools.

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

get_page_contentA
Read-onlyIdempotent
Inspect

Get a SUMMARY of a specific page on Trusteed: its title, description, keywords, related tools and the link to the full page. It returns a summary, not the full page text: read the linked URL when the whole page is needed. content_scope says what came back. Pass the page slug (e.g. 'for-agents', 'pricing', 'blog') or a blog post slug (returns its excerpt). Use get_site_map first to discover available slugs. Pass page='blog' to list all blog posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage slug (e.g. 'for-agents', 'pricing', 'trust') or blog post slug. Use 'blog' to list all blog posts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNo
slugNo
tagsNo
typeNo
foundNo
postsNo
titleNo
totalNo
excerptNo
categoryNo
keywordsNo
suggestionNo
descriptionNo
readingTimeNo
content_scopeNo
datePublishedNo
related_toolsNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely non-structured behavior: the response is a summary rather than full page text, and `content_scope` reports what was actually returned. It does not describe truncation limits or pagination of the blog listing, so it falls short of a 5.

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

Conciseness4/5

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

Front-loads the single most important fact (it returns a SUMMARY, not the full page) in the first clause, then moves to usage and slug mechanics. It is dense and mostly waste-free, though the slug examples ('for-agents', 'pricing') duplicate the schema and could be trimmed.

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

Completeness5/5

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

With an output schema present, the description need not explain return values, and the annotations cover the safety profile. It supplies the remaining pieces an agent needs: the summary scope, the discovery path via get_site_map, and the fallback to the linked URL for full content.

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

Parameters4/5

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

Schema coverage is 100%, so the inline description of `page` already carries the baseline documentation, which the tool description largely repeats. It does add one non-obvious semantic: passing a blog post slug returns that post's excerpt rather than page metadata, which the schema does not state.

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

Purpose5/5

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

States a specific verb and resource (get a summary of a page) and enumerates exactly what the summary contains: title, description, keywords, related tools, and full-page link. The summary-vs-full-text boundary also separates it from genuinely different siblings, so an agent can classify it without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance ('read the linked URL when the whole page is needed') and names the prerequisite alternative ('Use get_site_map first to discover available slugs'). Both routing decisions an agent must make are stated rather than implied.

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

get_product_detailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific product in Demo Store, including all variants, sizes, colors, and availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesProduct ID — use the `id` field returned by search_products or nlweb_ask (e.g. 'prod-001'). Do not invent IDs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
tagsNo
errorNo
priceNo
titleNo
jsonLdNo
vendorNo
messageNo
currencyNo
variantsNo
image_urlNo
attributesNo
categoriesNo
product_idNo
review_countNo
stock_statusNo
average_ratingNo
compare_at_priceNo
rating_provenanceNo

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description carries no burden for safety traits. What it adds is content scope (variants, sizes, colors, availability) rather than behavioral characteristics like rate limits, errors, or authorization requirements. This is adequate but adds no significant behavioral transparency beyond annotations.

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

Conciseness5/5

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

A single sentence with no filler, the action is front-loaded, and the included detail modifiers are concise. Every word contributes to understanding the tool's purpose.

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

Completeness4/5

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

For a one-parameter, read-only tool with an output schema and rich annotations, the description is essentially complete. It doesn't explain when to use it vs alternatives, but that gap is relatively minor for a get-by-ID operation and is somewhat addressed by the schema. Overall, it provides enough for an agent to call it correctly.

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

Parameters3/5

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

The schema description for product_id is complete (100% coverage) and already instructs using the `id` field from search_products or nlweb_ask and not to invent IDs. The tool description provides no additional parameter-level meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the tool retrieves detailed information for a specific product, listing included attributes (variants, sizes, colors, availability). The verb 'Get' and resource 'specific product' are explicit. It does not explicitly distinguish from sibling tools like search_products or search_products_enriched, but the 'specific product' phrasing implies a lookup-by-ID role.

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

Usage Guidelines3/5

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

The description implies usage when a specific product ID is known, but it does not provide explicit guidance on when to use this tool versus alternatives such as search_products or compare_products. The parameter schema adds the hint to use IDs from search_products or nlweb_ask, but the description itself lacks this context.

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

get_shipping_ratesAInspect

Get available shipping rates for the cart. Requires shipping_address — pass it in the call. If the buyer requests the cheapest option, use cheapest_shipping_handle when non-null; it is null when rates cannot be compared in the cart currency. Rates marked authoritative=false are estimates, not the final charge.

PREFER THE CART CARD: if create_cart returned an interactive card (the buyer can see and click it), let them enter the address and pick shipping there instead of calling this tool yourself — each top-level call you make here opens a new card in the transcript instead of updating the one already open. Only call it yourself when there is no interactive card (text-only client) or the buyer explicitly asks you to handle it in chat.

SKYFIRE TOKEN (optional): Pass a kya or kya-pay token in the skyfire-pay-id header to boost trust score. No token required — request proceeds normally if omitted. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
cart_idYesCart session ID returned by create_cart
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
shipping_addressNoDestination address. Required: this tool does not prompt for it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratesYes
cart_idYes
address_cityNo
address_countryNo
cheapest_shipping_handleYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, and the description explains exactly why: each top-level call opens a new card in the transcript rather than updating the existing one. It further discloses credential requirements, that authoritative=false rates are estimates, the nullability of cheapest_shipping_handle, and that the skyfire token is optional — rich context beyond the annotations.

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

Conciseness4/5

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

Front-loads purpose, then the cart-card routing rule, then credential details. It is on the longer side with a URL and repeated credential instructions, but nearly every sentence carries actionable information, so little is wasted.

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

Completeness5/5

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

With an output schema present, return values need not be explained. The description covers purpose, usage routing, prerequisites, credential path, and rate semantics — everything an agent needs to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema omits: it states shipping_address is effectively required ('this tool does not prompt for it') even though the schema lists only cart_id as required, and clarifies agent_key can be replaced by an Authorization header.

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

Purpose5/5

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

States a specific verb+resource ('Get available shipping rates for the cart') and implicitly differentiates from the selection sibling by focusing on retrieval vs. choosing an option. An agent can immediately tell what this returns and what it needs.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'PREFER THE CART CARD... Only call it yourself when there is no interactive card (text-only client) or the buyer explicitly asks.' It also gives the cheapest-option path and the create_sandbox_key prerequisite, leaving little to inference.

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

get_site_mapA
Read-onlyIdempotent
Inspect

Returns the complete site map of Trusteed: all public pages organized by category. Use this to discover what sections are available (docs, blog, integrations, legal, marketing) and find the right path before calling get_page_content.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter pages by category: commerce, docs, legal, blog, marketing, integrations

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes
totalYes
faq_countYes
blog_countYes
categoriesYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by stating the tool returns the complete site map and that it is a discovery/pre-navigation step. It does not contradict annotations. A small gap is that it doesn't mention whether the optional category filter changes the completeness of the returned map, but the schema covers the filter.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the core function and scope; the second gives the usage context and names the next tool. Every clause earns its place.

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

Completeness4/5

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

The tool is simple (one optional parameter, no required params) and has a rich output schema plus annotations covering safety. The description explains the purpose and the workflow context. It could mention that the category filter is optional, but the schema already marks it as not required, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single optional category parameter. The description mentions categories in the body ('docs, blog, integrations, legal, marketing') but does not add meaning beyond the schema's enum list. Baseline 3 is appropriate because the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('Returns'), a specific resource ('complete site map of Trusteed'), and the organizational principle ('all public pages organized by category'). It also names the sibling tool it is meant to precede ('get_page_content'), which distinguishes it from the other browsing/search tools in the sibling list.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: 'Use this to discover what sections are available... and find the right path before calling get_page_content.' This gives a clear workflow directive and names the alternative/next step, which is strong usage guidance.

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

get_store_trust
Read-onlyIdempotent
Inspect

Get Demo Store's signed trust score (v4.1, 0-100) with per-signal data quality, confidence level, and a detached JWS for offline verification. Don't trust the number — verify it: download the JWKS at jwks_snapshot_uri, validate jws_compact with signing_kid, and recompute payload_hash_sha256.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes
availableYes
breakdownYes
issued_atYes
signatureYes
store_slugYes
scoring_versionYes
confidence_levelYes
recommended_actionYes
confidence_intervalYes
get_trust_receiptAInspect

Retrieve the signed trust receipt for a checkout. A receipt records the complete_checkout call; read order_placed before telling anyone a purchase happened. Returns the receipt id, the JWS signature and how to verify it. Issuance is asynchronous: right after complete_checkout this may answer status: "pending" with a retry delay. pending with code receipt_pending means the purchase completed and the receipt is on its way; checkout_in_progress means it has not settled yet. Only the credential that made the purchase can read its receipt. PREFER THE CART CARD: if the purchase was completed on an interactive card, it already fetches and shows this receipt itself right after the order — calling this tool yourself right after is usually redundant and opens a new card in the transcript. Call it yourself only when there is no interactive card, or the buyer asks for the receipt later in a new turn. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
checkout_session_idYesThe checkout session id returned by create_cart and echoed by complete_checkout.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jwsNo
codeNo
docsNo
statusYes
call_idNo
messageNo
order_idNo
issued_atNo
dimensionsNo
receipt_idNo
verify_urlNo
verify_withNo
order_placedNo
checkout_statusNo
does_not_attestNo
signature_statusNo
retry_after_secondsNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: asynchronous issuance, the `status: "pending"` response with a retry delay, the distinction between `receipt_pending` (purchase completed) and `checkout_in_progress` (not settled), and the authorization constraint that only the purchasing credential can read the receipt. This is exactly the behavioral context an agent needs before acting on a purchase.

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

Conciseness4/5

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

Long but front-loaded: purpose first, then the critical 'read order_placed before telling anyone a purchase happened' caution, then behavior, then routing. Nearly every sentence earns its place, though the density of status-code detail is close to the limit of what one paragraph should hold.

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

Completeness5/5

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

For a two-parameter read tool with an output schema already describing the return shape, the description covers everything else an agent needs: async timing, retry semantics, authorization scope, and the interactive-card preference. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (agent_key, checkout_session_id) are already fully documented in the schema. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Retrieve the signed trust receipt for a checkout') and immediately distinguishes itself from the sibling complete_checkout by noting the receipt records that call. An agent can tell what this returns and how it differs from adjacent checkout tools.

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

Usage Guidelines5/5

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

Explicitly states when to call and when NOT to: 'PREFER THE CART CARD... calling this tool yourself right after is usually redundant... Call it yourself only when there is no interactive card, or the buyer asks for the receipt later in a new turn.' That is a rare, precise routing rule with the alternative named.

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

preview_checkoutInspect

Preview the complete order summary before payment. Advances the session to ready-for-payment state.

PREFER THE CART CARD: if there is an interactive card for this cart, let it compute and show the summary instead of calling this tool yourself — it keeps the flow in one card.

SKYFIRE TOKEN (optional): Pass a kya or kya-pay token in the skyfire-pay-id header to boost trust score. No token required — request proceeds normally if omitted. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
cart_idYesCart session ID returned by create_cart
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents` (integer, minor units), `currency` (3 letters, must match the cart's), `exp` (expiry as an INTEGER of Unix seconds — not an ISO 8601 date string), `sub` (the identity you authenticate as — it is compared against it) and `aud` (the store slug this mandate is for, e.g. the slug in the URL you are calling — not a domain). It is a spending cap you declare to limit yourself: it authorises nothing and does not prove the buyer's consent. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
statusYes
currencyYes
next_stepNo
tax_centsYes
expires_atNo
store_nameYes
tax_statusYes
total_noteYes
approval_idNo
total_centsYes
approval_urlNo
discount_centsYes
shipping_centsYes
shipping_titleNo
subtotal_centsYes
total_is_finalYes
payment_optionsNo
shipping_sourceNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
approval_status_urlNo
checkout_session_idYes
shipping_authoritativeNo
search_docsA
Read-onlyIdempotent
Inspect

Full-text search across all Trusteed public documentation: pages, blog posts, and FAQ entries. Returns ranked results by relevance. Use this to find answers about protocols, pricing, integration guides, trust scores, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter results by type: page, blog, or faq. Omit to search all types.
limitNoMaximum number of results (1-20, default 10)
queryYesSearch query, e.g. 'trust score threshold', 'shopify integration', 'rate limits'

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
totalYes
resultsYes

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate the safety profile. It adds useful behavioral context by noting that results are 'ranked by relevance,' though it does not describe pagination limits or result structure; the output schema likely covers the return shape.

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

Conciseness5/5

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

The description is three short sentences, front-loading the operation and resource before giving the return behavior and sample use cases. Every sentence contributes useful context and there is no filler or repetition of schema details.

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

Completeness5/5

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

For a read-only, idempotent search tool with a full output schema and well-documented parameters, the description is complete enough for an agent to invoke it correctly. It states the document scope, result ordering, and representative use cases without requiring additional clarification.

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

Parameters3/5

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

Schema description coverage is 100%, and all three parameters already have explanatory descriptions in the schema, so the baseline applies. The description adds modest value by connecting the type values (page, blog, faq) to the listed documentation categories, but it does not substantially expand on the schema.

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

Purpose5/5

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

The description names a specific operation ('Full-text search'), a clear resource ('all Trusteed public documentation'), and the concrete content types included ('pages, blog posts, and FAQ entries'). This makes the tool easy to distinguish from the product-focused sibling tools like search_products and get_page_content.

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

Usage Guidelines4/5

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

The description gives clear usage context: 'Use this to find answers about protocols, pricing, integration guides, trust scores, and more.' It does not explicitly state when not to use an alternative tool, but the resource scope and the search-oriented wording are enough to guide selection.

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

search_productsA
Read-onlyIdempotent
Inspect

Search products in Demo Store. Returns matching products with prices, images, availability, and direct links. Results include data for generating a visual product carousel artifact with category filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results (1-50)
queryNoSearch query (e.g. 'red sneakers', 'winter jacket'). Omit to list all products.
cursorNoOpaque pagination cursor from next_cursor of a previous response. Only valid for the SAME query, category, price range and sort_by — a cursor replayed against different filters is rejected, not silently applied.
compactNoWhen true, the same products are described only once instead of twice. `structuredContent.products` stays the full typed record — every field, every product, untouched — but the text reply becomes a short id/title/price/currency/availability line per product instead of a markdown re-narration of that same data (images, links, ratings inline). Nothing that asserts trust is affected: `merchant_trust`, `rating_provenance` and `sort_provenance_warning` are never trimmed by this flag. Ignored when `field_mask` is also set — a field mask already replaces the narration with a compact listing, so there is nothing left for `compact` to cut.
sort_byNoSort order for resultsrelevance
categoryNoFilter by category slug
max_priceNoMaximum price filter
min_priceNoMinimum price filter
field_maskNoReturn only these product fields, to spend less of your context on a large catalogue. `id` is always included. Supplying a mask also drops the carousel/UI payloads, which are the bulk of a full response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
totalYes
has_moreNo
productsYes
next_cursorNo
store_environmentNo
sort_provenance_warningNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value beyond those by revealing that results are structured for generating a visual product carousel artifact and include category filtering. No contradictions with annotations.

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

Conciseness5/5

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

Three concise sentences, front-loaded with the core action and return value, then the artifact-specific detail. No wasted words or redundant rehashing of the input schema.

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

Completeness4/5

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

With a rich input schema, output schema, and safety annotations, the description is largely complete for invoking the tool correctly. The only notable gap is the lack of any pointer to search_products_enriched when richer results are needed, but that is more of a usage-guidance issue than a completeness failure.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description only lightly touches category filtering soldered and does not need to supplement the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource ('Search products in Demo Store') and summarizes what is returned: matching products with prices, images, availability, and direct links. It is clear but does not explicitly differentiate itself from the sibling 'search_products_enriched', so an agent must infer which search variant to use.

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

Usage Guidelines2/5

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

No explicit guidance is given for when to use this tool versus search_products_enriched or browse_categories. The description implies generic product search but provides no exclusions, alternatives, or route-selection logic.

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

search_products_enrichedA
Read-onlyIdempotent
Inspect

Search products with enriched data including structured attributes, variants, GTIN, and images. Ideal for comparison and detailed product discovery. Matching is keyword/substring-based (title, description, tags, vendor) with rating-then-review ordering — the rating and review count it orders by are asserted by the merchant and are not verified by Trusteed. Use this when you have concrete keywords, a category, or a price range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-20)
queryYesSearch query
categoryNoFilter by category
max_priceNoMaximum price
min_priceNoMinimum price

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
totalYes
productsYes
sort_provenance_warningYes

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating a safe, non-mutating operation. The description adds valuable behavioral context by specifying the matching algorithm (keyword/substring-based on title, description, tags, vendor) and the ordering (rating then review count), plus the important caveat that ratings are not verified by Trusteed. This adds transparency beyond annotations, though it could mention pagination or result limits, hence scoring 4.

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

Conciseness4/5

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

The description is compact and front-loaded with the main purpose and enriched data context, then follows with technical details and usage guidance. It avoids fluff, but slightly dense in the middle with matching/ordering details; still, every sentence contributes to understanding. Score 4 rather than 5 because the flow could be improved by separating use case from mechanics.

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

Completeness4/5

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

With an output schema (likely describing the enriched data structure) and rich annotations, the description covers the key aspects: what data is returned, how matching works, ordering, and when to use. It doesn't explicitly mention pagination or how to handle empty results, but for a search tool with this complexity, it's adequately complete. Score 4.

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

Parameters4/5

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

Schema coverage is 100%, so all parameters are documented. The description reinforces the usage of query, category, and price range (linking to min_price/max_price) and clarifies the search scope. It doesn't introduce entirely new parameter details beyond schema, but given high coverage, baseline is 3, and the description's linking of natural language to parameters adds value, hence 4.

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

Purpose5/5

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

The description clearly states the tool's purpose: searching products with enriched data (structured attributes, variants, GTIN, images) and specifies the use case ('ideal for comparison and detailed product discovery'). It distinctly differentiates from the sibling tool 'search_products' by emphasizing the enriched data and ideal use case, making it easy for an agent to choose correctly.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: 'Use this when you have concrete keywords, a category, or a price range.' It also clarifies the matching mechanism and ordering criteria, and importantly highlights that the ordering is based on merchant-asserted ratings and reviews, which is a key caveat. This provides clear and actionable guidance beyond simple when-to-use.

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

select_shipping_optionA
Idempotent
Inspect

Select a shipping method for the cart. Must call get_shipping_rates first and provide idempotency_key. Reuse the same key for retries of the same cart and option; use a new key if either changes.

PREFER THE CART CARD: if there is an interactive card for this cart, let the buyer pick shipping there instead of calling this tool yourself — it keeps the flow in one card instead of opening a new one per step.

SKYFIRE TOKEN (optional): Pass a kya or kya-pay token in the skyfire-pay-id header to boost trust score. No token required — request proceeds normally if omitted. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json. CREDENTIAL: this store needs one. Call the create_sandbox_key tool first (it is in this tool list and needs no credential), then pass the key you get back as the agent_key argument — or as an Authorization: Bearer header if your client can set headers. Do not ask a person to log in: there is no human login for this store.

ParametersJSON Schema
NameRequiredDescriptionDefault
cart_idYesCart session ID
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
idempotency_keyYesRequired. Reuse this key only when retrying the same cart and shipping option; use a new key if either changes.
shipping_handleYesShipping method handle from get_shipping_rates

Output Schema

ParametersJSON Schema
NameRequiredDescription
cart_idYes
currencyYes
total_centsYes
selected_titleYes
shipping_centsYes
subtotal_centsYes
selected_handleYes
shipping_sourceYes
shipping_authoritativeYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already signal idempotentHint=true and non-destructive, but the description adds substantially more: the exact idempotency reuse rule, the optional skyfire token behavior ('request proceeds normally if omitted'), and the hard credential requirement with the remedy (call create_sandbox_key, pass agent_key or a Bearer header, no human login). This is far beyond what the annotations convey.

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

Conciseness4/5

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

Front-loaded with the core action and prerequisite, then separated into labeled sections (cart card preference, skyfire token, credential) that are each actionable rather than padding. It is longer than typical, but the credential/Auth detail is operational information the agent genuinely needs, so only minor tightening is possible.

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

Completeness5/5

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

For a 4-param mutation with an output schema, the description covers the prerequisite call, the credential bootstrap path, idempotency semantics, and an alternative UI flow. Nothing an agent needs to invoke it correctly appears to be missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema alone would justify a baseline 3, but the description adds real value: it explains why idempotency_key exists and when to regenerate it, and it names the source of shipping_handle (get_shipping_rates) and agent_key (create_sandbox_key). Only marginal gain remains over the schema text, which already repeats the idempotency guidance.

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

Purpose5/5

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

Opens with a precise verb+resource ('Select a shipping method for the cart') and immediately distinguishes itself from the sibling get_shipping_rates by declaring it a prerequisite. An agent can tell exactly what this tool does and how it relates to the rates tool without reading either schema.

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

Usage Guidelines5/5

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

Gives explicit ordering ('Must call get_shipping_rates first'), an explicit when-not-to-use path ('PREFER THE CART CARD... let the buyer pick shipping there instead of calling this tool yourself'), and retry rules for the idempotency key. Alternatives and selecting conditions are all named.

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

ucp_cancel_checkout
DestructiveIdempotent
Inspect

Cancel a UCP checkout session. Transitions to 'canceled' status. Cannot cancel already completed checkouts. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional cancellation reason
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
checkout_idYesUCP checkout session ID (valid UUID)
idempotency_keyNoOptional idempotency key to prevent duplicate cancellations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
next_stepNo
created_atYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
extensionsNo
line_itemsYes
updated_atYes
fulfillmentNo
next_actionNo
approval_urlNo
idempotency_keyNo
payment_optionsNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
ucp_complete_checkout
Idempotent
Inspect

Complete a UCP checkout session. Transitions to 'completed' status. Idempotent — safe to retry with the same idempotency_key. PAYMENT MANDATE: this tool also requires one. Send it as the payment_mandate argument if your client cannot set headers, or as an X-Payment-Mandate header. It must carry mandate_id, max_amount_cents, currency, exp, sub, aud. Two of these are rejected outright if guessed: exp is an INTEGER of Unix seconds (not an ISO 8601 date), and aud is this store's slug (the one in the URL you are calling, not a domain). Its currency must match the cart's currency. Demo Store enforces max_amount_cents against the cart total; a real merchant may only observe that boundary, so enforce the buyer's limit in the agent too. The mandate is a spending cap you declare to limit yourself — it authorises nothing and does not prove the buyer's consent — and its sub must be the identity you authenticate as. max_amount_cents is the spending limit the person you are buying for gave you: ask them if they gave none. Schema: https://trusteed.xyz/.well-known/payment-mandate.schema.json. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoBuyer name and email, needed to request the approval link.
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
checkout_idYesUCP checkout session ID (valid UUID)
x402_payloadNox402: signed payment for the server offer (omit to get it).
payment_optionNoPayment method THE PERSON chose, when preview_checkout returned payment_options. Ask the person; never choose for them. Card numbers and wallet keys are never sent here: the person approves (and, with own_wallet, signs) on the approval page.
idempotency_keyYesUnique key to prevent duplicate completions. Generate once per attempt.
payment_handlerNoPayment handler the store profile publishes. Omit for default.
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents` (integer, minor units), `currency` (3 letters, must match the cart's), `exp` (expiry as an INTEGER of Unix seconds — not an ISO 8601 date string), `sub` (the identity you authenticate as — it is compared against it) and `aud` (the store slug this mandate is for, e.g. the slug in the URL you are calling — not a domain). It is a spending cap you declare to limit yourself: it authorises nothing and does not prove the buyer's consent. Use this when your client cannot set an `X-Payment-Mandate` header.
shared_payment_tokenNoStripe Shared Payment Token (spt_…) granted by the buyer's agent wallet for payment_method=ACP. Issued by Stripe, scoped to this merchant, amount and currency, and consumed when used: it can be charged once. Only honoured when this deployment enables native ACP settlement.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
next_stepNo
created_atYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
extensionsNo
line_itemsYes
updated_atYes
fulfillmentNo
next_actionNo
approval_urlNo
idempotency_keyNo
payment_optionsNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
ucp_create_checkout
Idempotent
Inspect

Create a UCP checkout session from line items. Returns a UCP checkout object with status 'incomplete'. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional label for additional identifiers (e.g. external order ref, multi-PSP reference)
intentNoIntent context for relevance and personalization
currencyYesISO 4217 currency code (e.g. USD)
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
line_itemsYesLine items for the checkout
idempotency_keyNoRequired by the checkout bucket (UUID-v4 or bounded ASCII token). Choose one per purchase attempt and reuse it to retry safely. Alternatively send it as the Idempotency-Key header or params._meta["trusteed/idempotency-key"].

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
next_stepNo
created_atYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
extensionsNo
line_itemsYes
updated_atYes
fulfillmentNo
next_actionNo
approval_urlNo
idempotency_keyNo
payment_optionsNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
ucp_get_checkout
Read-onlyIdempotent
Inspect

Retrieve a UCP checkout session by ID. Returns the current state of the checkout. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
checkout_idYesUCP checkout session ID (valid UUID)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
next_stepNo
created_atYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
extensionsNo
line_itemsYes
updated_atYes
fulfillmentNo
next_actionNo
approval_urlNo
idempotency_keyNo
payment_optionsNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.
ucp_update_checkout
Idempotent
Inspect

Update a UCP checkout session. Send line_items to replace all lines (each line may name a variant_id), and/or fulfillment to set the delivery address (fulfillment.destination, which returns the shipping options) and choose one (fulfillment.selected_option_id, which adds shipping to the totals). Only allowed when status is 'incomplete'. Checkout guide: https://trusteed.xyz/.well-known/agent-checkout-guide.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 currency code (e.g. USD). Optional: defaults to the checkout's currency.
agent_keyNoSandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.
line_itemsNoReplacement line items (replaces all lines). Omit to leave the lines as they are.
checkout_idYesUCP checkout session ID (valid UUID)
fulfillmentNoDelivery. Send destination first, then selected_option_id (or both in one call).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
next_stepNo
created_atYes
expires_atNoISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.
extensionsNo
line_itemsYes
updated_atYes
fulfillmentNo
next_actionNo
approval_urlNo
idempotency_keyNo
payment_optionsNo
next_step_messageNo
expires_in_secondsNoWhole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • Changedapply_discount2 fields changed
      • changedInput schema / additionalProperties
        Previous value: -trueNew value: +false
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Idempotency key for this call (UUID-v4 or bounded ASCII token, 1-128 chars). Equivalent to the `Idempotency-Key` header — send it here if your client cannot set headers.",
        +  "type": "string"
        +}
    • Changedcreate_cart2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedget_store_trust2 fields changed
      • addedOutput schema / properties / recommended_action
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "action": {
        +          "enum": [
        +            "proceed",
        +            "proceed_with_human_confirmation",
        +            "do_not_proceed"
        +          ],
        +          "type": "string"
        +        },
        +        "derived_from": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "reason_code": {
        +          "enum": [
        +            "below_eligibility_threshold",
        +            "limited_history",
        +            "established_record",
        +            "unrecognized_confidence_level"
        +          ],
        +          "type": "string"
        +        },
        +        "signed": {
        +          "const": false,
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "action",
        +        "reason_code",
        +        "derived_from",
        +        "signed"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "store_slug",
        -  "available",
        -  "score",
        -  "confidence_level",
        -  "scoring_version",
        -  "issued_at",
        -  "breakdown",
        -  "signature",
        -  "confidence_interval"
        -]New value: +[
        +  "store_slug",
        +  "available",
        +  "score",
        +  "confidence_level",
        +  "scoring_version",
        +  "issued_at",
        +  "breakdown",
        +  "signature",
        +  "confidence_interval",
        +  "recommended_action"
        +]
    • Changedpreview_checkout1 field changed
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changeducp_cancel_checkout2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changeducp_complete_checkout2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changeducp_create_checkout2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changeducp_get_checkout2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changeducp_update_checkout2 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "ISO-8601 UTC instant at which this checkout SESSION stops being usable. It is not a stock reservation and not a price guarantee.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_in_seconds
        Added value: +{
        +  "description": "Whole seconds left on this checkout SESSION at response time (0 when already past). It is not a stock reservation and not a price guarantee.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
  2. 6 tool updates
    • Changedpreview_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
    • Changeducp_cancel_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
    • Changeducp_complete_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
    • Changeducp_create_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
    • Changeducp_get_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
    • Changeducp_update_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / reason_unavailable / enum
        Previous value: -[
        -  "coming_soon",
        -  "not_enabled"
        -]New value: +[
        +  "coming_soon",
        +  "not_enabled",
        +  "currency_not_supported"
        +]
  3. 2 tool updates
    • Changedcomplete_checkout2 fields changed
      • changedInput schema / properties / buyer / properties / email / description
        Previous value: -"Buyer email address"New value: +"Buyer email address (e.g. ana@example.com). Prefilled in the store checkout."
      • changedInput schema / properties / buyer / properties / name / description
        Previous value: -"Buyer full name"New value: +"Buyer first name and surname(s) as one string, e.g. \"Ana García López\". Prefilled in the store checkout."
    • Changedget_shipping_rates3 fields changed
      • changedInput schema / properties / shipping_address / properties / address1 / description
        Previous value: -"Street address"New value: +"Street name and number, plus flat/door if any (e.g. \"Calle Mayor 1, 2B\")"
      • changedInput schema / properties / shipping_address / properties / country_code / description
        Previous value: -"ISO country code (e.g. US, CA)"New value: +"ISO 3166-1 alpha-2 country code, two letters (e.g. ES, US, CA). Never the country name."
      • changedInput schema / properties / shipping_address / properties / zip / description
        Previous value: -"Postal / ZIP code"New value: +"Postal / ZIP code exactly as written, keeping leading zeros (e.g. \"08001\")"
  4. 7 tool updates
    • Changedcomplete_checkout2 fields changed
      • changedInput schema / properties / payment_option / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card"
        +]
      • changedOutput schema / properties / payment_method / enum
        Previous value: -[
        -  "ACP",
        -  "KYAPAY",
        -  "PAYPAL",
        -  "MOCK",
        -  "X402"
        -]New value: +[
        +  "ACP",
        +  "KYAPAY",
        +  "PAYPAL",
        +  "MOCK",
        +  "X402",
        +  "MERCHANT_CARD"
        +]
    • Changedpreview_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
    • Changeducp_cancel_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
    • Changeducp_complete_checkout2 fields changed
      • changedInput schema / properties / payment_option / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card"
        +]
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
    • Changeducp_create_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
    • Changeducp_get_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
    • Changeducp_update_checkout1 field changed
      • changedOutput schema / properties / payment_options / items / properties / id / enum
        Previous value: -[
        -  "demo_card",
        -  "demo_wallet",
        -  "own_wallet",
        -  "kyapay"
        -]New value: +[
        +  "demo_card",
        +  "demo_wallet",
        +  "own_wallet",
        +  "merchant_card",
        +  "kyapay"
        +]
  5. 1 tool update
    • Addeducp_complete_checkout
  6. 4 tool updates
    • Changeducp_cancel_checkout3 fields changed
      • addedOutput schema / properties / fulfillment
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "destination": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "city": {
        +          "type": "string"
        +        },
        +        "country_code": {
        +          "type": "string"
        +        },
        +        "province_code": {
        +          "type": "string"
        +        },
        +        "zip": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "city",
        +        "country_code",
        +        "zip"
        +      ],
        +      "type": "object"
        +    },
        +    "options": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "authoritative": {
        +            "type": "boolean"
        +          },
        +          "estimated_delivery": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "amount": {
        +                "type": "number"
        +              },
        +              "currency": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "amount",
        +              "currency"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "enum": [
        +              "platform",
        +              "merchant_policy",
        +              "estimated"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "price",
        +          "source",
        +          "authoritative"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "selected_option_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_title
        Added value: +{
        +  "type": "string"
        +}
    • Changeducp_create_checkout5 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Required by the checkout bucket (UUID-v4 or bounded ASCII token). Choose one per purchase attempt and reuse it to retry safely. Alternatively send it as the Idempotency-Key header or params._meta[\"trusteed/idempotency-key\"].",
        +  "type": "string"
        +}
      • addedInput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "description": "Variant (size/colour) id as listed by get_product_details. Required when the product has more than one variant; the price and stock of THAT variant apply.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / fulfillment
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "destination": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "city": {
        +          "type": "string"
        +        },
        +        "country_code": {
        +          "type": "string"
        +        },
        +        "province_code": {
        +          "type": "string"
        +        },
        +        "zip": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "city",
        +        "country_code",
        +        "zip"
        +      ],
        +      "type": "object"
        +    },
        +    "options": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "authoritative": {
        +            "type": "boolean"
        +          },
        +          "estimated_delivery": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "amount": {
        +                "type": "number"
        +              },
        +              "currency": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "amount",
        +              "currency"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "enum": [
        +              "platform",
        +              "merchant_policy",
        +              "estimated"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "price",
        +          "source",
        +          "authoritative"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "selected_option_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_title
        Added value: +{
        +  "type": "string"
        +}
    • Changeducp_get_checkout3 fields changed
      • addedOutput schema / properties / fulfillment
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "destination": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "city": {
        +          "type": "string"
        +        },
        +        "country_code": {
        +          "type": "string"
        +        },
        +        "province_code": {
        +          "type": "string"
        +        },
        +        "zip": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "city",
        +        "country_code",
        +        "zip"
        +      ],
        +      "type": "object"
        +    },
        +    "options": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "authoritative": {
        +            "type": "boolean"
        +          },
        +          "estimated_delivery": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "amount": {
        +                "type": "number"
        +              },
        +              "currency": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "amount",
        +              "currency"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "enum": [
        +              "platform",
        +              "merchant_policy",
        +              "estimated"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "price",
        +          "source",
        +          "authoritative"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "selected_option_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_title
        Added value: +{
        +  "type": "string"
        +}
    • Changeducp_update_checkout8 fields changed
      • changedInput schema / properties / currency / description
        Previous value: -"ISO 4217 currency code (e.g. USD)"New value: +"ISO 4217 currency code (e.g. USD). Optional: defaults to the checkout's currency."
      • addedInput schema / properties / fulfillment
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Delivery. Send destination first, then selected_option_id (or both in one call).",
        +  "properties": {
        +    "destination": {
        +      "additionalProperties": true,
        +      "description": "Delivery address. Sending it loads the shipping options for that destination; the response lists them in fulfillment.options.",
        +      "properties": {
        +        "address1": {
        +          "description": "Street address",
        +          "type": "string"
        +        },
        +        "city": {
        +          "description": "City",
        +          "type": "string"
        +        },
        +        "country_code": {
        +          "description": "ISO 3166-1 alpha-2 country code (e.g. US, ES)",
        +          "type": "string"
        +        },
        +        "province_code": {
        +          "description": "Province or state code (optional)",
        +          "type": "string"
        +        },
        +        "zip": {
        +          "description": "Postal / ZIP code",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "address1",
        +        "city",
        +        "country_code",
        +        "zip"
        +      ],
        +      "type": "object"
        +    },
        +    "selected_option_id": {
        +      "description": "Id of one of fulfillment.options. Choosing it adds the shipping amount to the totals.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / properties / line_items / description
        Previous value: -"Replacement line items"New value: +"Replacement line items (replaces all lines). Omit to leave the lines as they are."
      • addedInput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "description": "Variant (size/colour) id as listed by get_product_details. Required when the product has more than one variant; the price and stock of THAT variant apply.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "checkout_id",
        -  "currency",
        -  "line_items"
        -]New value: +[
        +  "checkout_id"
        +]
      • addedOutput schema / properties / fulfillment
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "destination": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "city": {
        +          "type": "string"
        +        },
        +        "country_code": {
        +          "type": "string"
        +        },
        +        "province_code": {
        +          "type": "string"
        +        },
        +        "zip": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "city",
        +        "country_code",
        +        "zip"
        +      ],
        +      "type": "object"
        +    },
        +    "options": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "authoritative": {
        +            "type": "boolean"
        +          },
        +          "estimated_delivery": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "amount": {
        +                "type": "number"
        +              },
        +              "currency": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "amount",
        +              "currency"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "enum": [
        +              "platform",
        +              "merchant_policy",
        +              "estimated"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "price",
        +          "source",
        +          "authoritative"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "selected_option_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / line_items / items / properties / variant_title
        Added value: +{
        +  "type": "string"
        +}
  7. 2 tool updates
    • Changedcomplete_checkout2 fields changed
      • addedOutput schema / properties / funding_source
        Added value: +{
        +  "enum": [
        +    "platform_test_card",
        +    "platform_test_wallet",
        +    "buyer_wallet"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / test_funds
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedget_page_content1 field changed
      • addedOutput schema / properties / content_scope
        Added value: +{
        +  "enum": [
        +    "summary",
        +    "index"
        +  ],
        +  "type": "string"
        +}
  8. 7 tool updates
    • Changedcomplete_checkout1 field changed
      • addedInput schema / properties / payment_option
        Added value: +{
        +  "description": "Payment method THE PERSON chose, when preview_checkout returned payment_options. Ask the person; never choose for them. Card numbers and wallet keys are never sent here: the person approves (and, with own_wallet, signs) on the approval page.",
        +  "enum": [
        +    "demo_card",
        +    "demo_wallet",
        +    "own_wallet"
        +  ],
        +  "type": "string"
        +}
    • Changedget_trust_receipt1 field changed
      • addedOutput schema / properties / verify_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedpreview_checkout3 fields changed
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "const": "ask_user_payment_method",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "available": {
        +        "type": "boolean"
        +      },
        +      "funding_source": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "platform_test_card",
        +              "platform_test_wallet",
        +              "buyer_wallet"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "enum": [
        +          "demo_card",
        +          "demo_wallet",
        +          "own_wallet",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "rail": {
        +        "enum": [
        +          "stripe",
        +          "x402",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "reason_unavailable": {
        +        "enum": [
        +          "coming_soon",
        +          "not_enabled"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "rail",
        +      "funding_source",
        +      "available"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeducp_cancel_checkout3 fields changed
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "const": "ask_user_payment_method",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "available": {
        +        "type": "boolean"
        +      },
        +      "funding_source": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "platform_test_card",
        +              "platform_test_wallet",
        +              "buyer_wallet"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "enum": [
        +          "demo_card",
        +          "demo_wallet",
        +          "own_wallet",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "rail": {
        +        "enum": [
        +          "stripe",
        +          "x402",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "reason_unavailable": {
        +        "enum": [
        +          "coming_soon",
        +          "not_enabled"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "rail",
        +      "funding_source",
        +      "available"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeducp_create_checkout3 fields changed
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "const": "ask_user_payment_method",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "available": {
        +        "type": "boolean"
        +      },
        +      "funding_source": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "platform_test_card",
        +              "platform_test_wallet",
        +              "buyer_wallet"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "enum": [
        +          "demo_card",
        +          "demo_wallet",
        +          "own_wallet",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "rail": {
        +        "enum": [
        +          "stripe",
        +          "x402",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "reason_unavailable": {
        +        "enum": [
        +          "coming_soon",
        +          "not_enabled"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "rail",
        +      "funding_source",
        +      "available"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeducp_get_checkout3 fields changed
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "const": "ask_user_payment_method",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "available": {
        +        "type": "boolean"
        +      },
        +      "funding_source": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "platform_test_card",
        +              "platform_test_wallet",
        +              "buyer_wallet"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "enum": [
        +          "demo_card",
        +          "demo_wallet",
        +          "own_wallet",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "rail": {
        +        "enum": [
        +          "stripe",
        +          "x402",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "reason_unavailable": {
        +        "enum": [
        +          "coming_soon",
        +          "not_enabled"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "rail",
        +      "funding_source",
        +      "available"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changeducp_update_checkout3 fields changed
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "const": "ask_user_payment_method",
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / payment_options
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "available": {
        +        "type": "boolean"
        +      },
        +      "funding_source": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "platform_test_card",
        +              "platform_test_wallet",
        +              "buyer_wallet"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "enum": [
        +          "demo_card",
        +          "demo_wallet",
        +          "own_wallet",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "rail": {
        +        "enum": [
        +          "stripe",
        +          "x402",
        +          "kyapay"
        +        ],
        +        "type": "string"
        +      },
        +      "reason_unavailable": {
        +        "enum": [
        +          "coming_soon",
        +          "not_enabled"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "rail",
        +      "funding_source",
        +      "available"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  9. 5 tool updates
    • Changedcomplete_checkout4 fields changed
      • changedOutput schema / properties / next_action / properties / reuse_arguments / items / enum
        Previous value: -[
        -  "checkout_session_id",
        -  "idempotency_key"
        -]New value: +[
        +  "checkout_session_id",
        +  "checkout_id",
        +  "idempotency_key"
        +]
      • removedOutput schema / properties / next_action / properties / then_call / const
        Removed value: -"complete_checkout"
      • addedOutput schema / properties / next_action / properties / then_call / maxLength
        Added value: +64
      • addedOutput schema / properties / next_action / properties / then_call / minLength
        Added value: +1
    • Changeducp_cancel_checkout2 fields changed
      • addedOutput schema / properties / approval_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_action
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "actor": {
        +      "const": "buyer",
        +      "type": "string"
        +    },
        +    "do": {
        +      "enum": [
        +        "approve",
        +        "pay"
        +      ],
        +      "type": "string"
        +    },
        +    "instruction": {
        +      "type": "string"
        +    },
        +    "reuse_arguments": {
        +      "items": {
        +        "enum": [
        +          "checkout_session_id",
        +          "checkout_id",
        +          "idempotency_key"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "then_call": {
        +      "maxLength": 64,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "actor",
        +    "do",
        +    "url",
        +    "instruction"
        +  ],
        +  "type": "object"
        +}
    • Changeducp_create_checkout2 fields changed
      • addedOutput schema / properties / approval_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_action
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "actor": {
        +      "const": "buyer",
        +      "type": "string"
        +    },
        +    "do": {
        +      "enum": [
        +        "approve",
        +        "pay"
        +      ],
        +      "type": "string"
        +    },
        +    "instruction": {
        +      "type": "string"
        +    },
        +    "reuse_arguments": {
        +      "items": {
        +        "enum": [
        +          "checkout_session_id",
        +          "checkout_id",
        +          "idempotency_key"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "then_call": {
        +      "maxLength": 64,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "actor",
        +    "do",
        +    "url",
        +    "instruction"
        +  ],
        +  "type": "object"
        +}
    • Changeducp_get_checkout2 fields changed
      • addedOutput schema / properties / approval_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_action
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "actor": {
        +      "const": "buyer",
        +      "type": "string"
        +    },
        +    "do": {
        +      "enum": [
        +        "approve",
        +        "pay"
        +      ],
        +      "type": "string"
        +    },
        +    "instruction": {
        +      "type": "string"
        +    },
        +    "reuse_arguments": {
        +      "items": {
        +        "enum": [
        +          "checkout_session_id",
        +          "checkout_id",
        +          "idempotency_key"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "then_call": {
        +      "maxLength": 64,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "actor",
        +    "do",
        +    "url",
        +    "instruction"
        +  ],
        +  "type": "object"
        +}
    • Changeducp_update_checkout2 fields changed
      • addedOutput schema / properties / approval_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_action
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "actor": {
        +      "const": "buyer",
        +      "type": "string"
        +    },
        +    "do": {
        +      "enum": [
        +        "approve",
        +        "pay"
        +      ],
        +      "type": "string"
        +    },
        +    "instruction": {
        +      "type": "string"
        +    },
        +    "reuse_arguments": {
        +      "items": {
        +        "enum": [
        +          "checkout_session_id",
        +          "checkout_id",
        +          "idempotency_key"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "then_call": {
        +      "maxLength": 64,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "actor",
        +    "do",
        +    "url",
        +    "instruction"
        +  ],
        +  "type": "object"
        +}
  10. 1 tool update
    • Changedget_trust_receipt2 fields changed
      • addedOutput schema / properties / dimensions
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "chain_coverage": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "checkpoint_day": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "covered_through_seq": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "receipt_seq": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "status": {
        +          "enum": [
        +            "covered",
        +            "not_covered",
        +            "unknown"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status",
        +        "receipt_seq",
        +        "covered_through_seq",
        +        "checkpoint_day"
        +      ],
        +      "type": "object"
        +    },
        +    "evidence_present": {
        +      "enum": [
        +        "present",
        +        "absent",
        +        "unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "evidence_verified": {
        +      "enum": [
        +        "verified",
        +        "not_verified",
        +        "not_applicable"
        +      ],
        +      "type": "string"
        +    },
        +    "issuer_signed": {
        +      "enum": [
        +        "verified",
        +        "present_unverified",
        +        "absent",
        +        "rejected"
        +      ],
        +      "type": "string"
        +    },
        +    "revocation": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "checked_at": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "freshness_seconds": {
        +          "anyOf": [
        +            {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "status": {
        +          "enum": [
        +            "not_revoked",
        +            "revoked",
        +            "unknown"
        +          ],
        +          "type": "string"
        +        },
        +        "status_list_url": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "status",
        +        "checked_at",
        +        "freshness_seconds",
        +        "status_list_url"
        +      ],
        +      "type": "object"
        +    },
        +    "settlement": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "rail_evidence_ref": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "status": {
        +          "enum": [
        +            "settled",
        +            "not_attested"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status"
        +      ],
        +      "type": "object"
        +    },
        +    "version": {
        +      "const": "1.0",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "version",
        +    "issuer_signed",
        +    "evidence_present",
        +    "evidence_verified",
        +    "chain_coverage",
        +    "revocation",
        +    "settlement"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / does_not_attest
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  11. 1 tool update
    • Changedpreview_checkout6 fields changed
      • addedOutput schema / properties / approval_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approval_status_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approval_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / status / const
        Removed value: -"READY_FOR_PAYMENT"
      • addedOutput schema / properties / status / enum
        Added value: +[
        +  "READY_FOR_PAYMENT",
        +  "PENDING_APPROVAL"
        +]
  12. 1 tool update
    • Changedcomplete_checkout5 fields changed
      • changedInput schema / properties / payment_method / description
        Previous value: -"Payment method to use. PAYPAL creates a PayPal order and presents approval URL. KYAPAY requires kyapay_token. ACP (Stripe-native settlement) returns a 'not enabled' response unless this deployment enables native settlement; when enabled it charges the Stripe Shared Payment Token passed as shared_payment_token. MOCK moves no money: it completes the order without charging. Whether a store accepts it depends on the store's configuration (it is the default on demo-store). Defaults to MOCK if not specified."New value: +"Payment method to use. PAYPAL creates a PayPal order and presents approval URL. KYAPAY requires kyapay_token. ACP (Stripe-native settlement) returns a 'not enabled' response unless this deployment enables native settlement; when enabled it charges the Stripe Shared Payment Token passed as shared_payment_token. X402 is available through the configured x402 protocol flow, not this checkout tool. MOCK moves no money: it completes the order without charging. Whether a store accepts it depends on the store's configuration (it is the default on demo-store). Defaults to MOCK if not specified."
      • changedInput schema / properties / payment_method / enum
        Previous value: -[
        -  "ACP",
        -  "KYAPAY",
        -  "PAYPAL",
        -  "MOCK"
        -]New value: +[
        +  "ACP",
        +  "KYAPAY",
        +  "PAYPAL",
        +  "MOCK",
        +  "X402"
        +]
      • addedOutput schema / properties / money_moves
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / payment_captured
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / payment_method
        Added value: +{
        +  "enum": [
        +    "ACP",
        +    "KYAPAY",
        +    "PAYPAL",
        +    "MOCK",
        +    "X402"
        +  ],
        +  "type": "string"
        +}
  13. 1 tool update
    • Changedcomplete_checkout2 fields changed
      • changedInput schema / properties / payment_method / description
        Previous value: -"Payment method to use. PAYPAL creates a PayPal order and presents approval URL. KYAPAY requires kyapay_token. ACP (Stripe-native settlement) returns a 'not enabled' response unless this deployment enables native settlement. MOCK moves no money: it completes the order without charging. Whether a store accepts it depends on the store's configuration (it is the default on demo-store). Defaults to MOCK if not specified."New value: +"Payment method to use. PAYPAL creates a PayPal order and presents approval URL. KYAPAY requires kyapay_token. ACP (Stripe-native settlement) returns a 'not enabled' response unless this deployment enables native settlement; when enabled it charges the Stripe Shared Payment Token passed as shared_payment_token. MOCK moves no money: it completes the order without charging. Whether a store accepts it depends on the store's configuration (it is the default on demo-store). Defaults to MOCK if not specified."
      • addedInput schema / properties / shared_payment_token
        Added value: +{
        +  "description": "Stripe Shared Payment Token (spt_…) granted by the buyer's agent wallet for payment_method=ACP. Issued by Stripe, scoped to this merchant, amount and currency, and consumed when used: it can be charged once. Only honoured when this deployment enables native ACP settlement.",
        +  "pattern": "^spt_[A-Za-z0-9_]+$",
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI shopping agents to search products, check stock, apply promotions, manage cart sessions, and create cryptographically signed checkout sessions on e-commerce storefronts, while giving merchants analytics into agent intent and catalog demand gaps.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to autonomously browse inventory, negotiate terms, manage carts, and execute secure payments on Shopify stores using standardized protocols. It provides a bridge for LLMs to handle the entire commerce lifecycle from discovery to order tracking through a verifiable mandate chain.
    5
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources