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 with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 20 tools

Disambiguation3/5

Most tools are distinct, but there is overlap between search_products and search_products_enriched (both search products with different detail levels) and between the standard checkout flow and the UCP checkout flow (both handle checkouts). Agents may struggle to choose the right one without carefully reading descriptions.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., create_cart, get_shipping_rates, complete_checkout). The ucp_ prefix cleanly namespaces a separate checkout workflow, maintaining overall consistency.

Tool Count3/5

With 20 tools, this is at the high end of what is typically appropriate. The server aggregates multiple domains (shopping, content, UCP checkout, credentials), which justifies the count, but it feels heavy and could benefit from tighter scoping.

Completeness2/5

The standard shopping flow is incomplete: there is no tool to add items to a cart after creating it (create_cart) or to retrieve the cart's contents. This creates a dead end for the primary workflow. The UCP flow is more complete (create, get, update, cancel), but the overall surface has significant gaps.

Available Tools

20 tools
apply_discountA
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. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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).
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cart_idYes
currencyYes
discount_codeYes
discount_centsYes
new_total_centsYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description reveals that a payment mandate is required even though the schema lists only cart_id as required, and that mismatched currency or over-cap mandates are denied. It also documents credential setup, optional skyfire-token behavior, and the absence of human login. These details significantly exceed what the annotations provide, and there is no contradiction with readOnlyHint=false, destructiveHint=false, or idempotentHint=true.

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

Conciseness4/5

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

The first sentence front-loads the core purpose, and the labeled paragraphs (SKYFIRE TOKEN, PAYMENT MANDATE, CREDENTIAL) are scannable and mostly non-redundant. It is long, but the tool has unusually complex auth prerequisites. Some header/argument alternatives are repeated from the parameter descriptions, so it is not perfectly concise, but every block earns its place.

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

Completeness5/5

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

For a tool with 6 parameters and hidden requirements, the description covers setup order, mandatory mandate fields, currency-matching and cap-enforcement failure conditions, header fallbacks, and the no-human-login policy. Since an output schema exists, return-value details do not need to be spelled out. The only omissions are minor edge cases such as discount conflicts, which are not needed to invoke the tool correctly.

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?

Although the schema already describes every parameter, the description adds crucial meaning: payment_mandate is actually mandatory and must match the cart currency with cap enforcement; agent_key is a create_sandbox_key credential; discount_code is required unless source is ucp_identity; and identity_token pairs with source='ucp_identity'. It also introduces the skyfire-pay-id header option, going beyond the schema's field descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Apply a discount or promo code to the cart.' This clearly distinguishes it from checkout/payment siblings like complete_checkout and preview_checkout, and the later mention of UCP identity discounts clarifies the alternative input mode. An agent can understand exactly what the tool does without inspecting the schema.

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

Usage Guidelines4/5

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

The description gives strong operational guidance: it explicitly tells the agent to call create_sandbox_key first, to pass the key as agent_key or Authorization header, and not to attempt human login. It also explains when to use the payment_mandate argument versus the X-Payment-Mandate header. It does not formally state exclusions like 'use complete_checkout instead,' but the preconditions and alternative paths are clear.

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

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. Collects buyer contact info via elicitation if supported. 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.

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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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, R022, R026-R029. Fields are validated and signed — 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 (Agentic Commerce Protocol / Stripe-native settlement) is NOT enabled by default: unless MCP_ACP_NATIVE_SETTLEMENT_ENABLED=true, a non-zero non-Shopify ACP cart returns an explicit 'not enabled' response instead of a mock completion. Defaults to MOCK if not specified.
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`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.
checkout_session_idYesCheckout session ID from preview_checkout (must be a valid UUID)
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
payment_urlNo
total_centsYes
external_order_idNo
checkout_session_idYes

TDQS

A5/5.0
Behavior5/5

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

Annotations only state idempotentHint=true and destructiveHint=false. The description goes far beyond by detailing idempotency behavior (replay keyed on checkout_session_id, returns existing order without re-charging), error cases (missing/invalid token), enforcement of payment mandate caps, and credential requirements. This is substantial behavioral disclosure that annotations do not provide.

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?

Though long, every sentence carries essential information. It is front-loaded with the core purpose and idempotency, then logically groups token, mandate, and credential requirements. No filler or redundancy; the structure aids scanning and 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 the complexity of 9 parameters, nested objects, an output schema, and the need for credentials/mandates, the description covers all critical aspects: idempotency, token validation, mandate enforcement, credential acquisition, reconfirmation, and error handling. It also references the create_sandbox_key tool in the same list. Nothing an agent needs to call this correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning beyond the schema. For example, it explains idempotency_key's role in short-circuiting, kyapay_token's required claims and precedence over header, payment_method's defaults and ACP behavior, payment_mandate's purpose and header alternative, agent_key's use when headers unavailable, and reconfirmed_state_hash's condition for use. This is far beyond schema descriptions.

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

Purpose5/5

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

States a specific verb+resource ('Complete the purchase') and distinguishes itself from siblings like preview_checkout and ucp_* checkout tools by focusing on the final completion step. It also clarifies it collects buyer contact info via elicitation, adding specificity.

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?

Provides explicit when-to-use instructions, including calling create_sandbox_key first, when Skyfire token is required (KYAPAY) vs not (MOCK, PAYPAL), and that no human login exists. It also explains the idempotency key usage and the reconfirmation requirement, giving clear conditions for correct invocation.

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

create_cartA
Idempotent
Inspect

Create a shopping cart in Demo Store. Returns a cart_id 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. PAYMENT MANDATE: this tool also requires one, sent as an X-Payment-Mandate header. This tool does not accept extra arguments, so the header is the only channel here. It must carry mandate_id, max_amount_cents, currency, exp, sub, aud, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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_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
agent_session_idNoOpaque agent session identifier for cart resume across sessions

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
statusYes
cart_idYes
currencyYes
store_nameYes
session_stateYes
subtotal_centsYes
display_contextYes
agent_session_idYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing required payment-mandate headers (and their currency-match denial rule), optional Skyfire trust-token effects, credential requirements, and the absence of human login. It also warns that invalid tokens proceed with a neutral trust score and that the max_amount cap is enforced.

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 long, but the SKYFIRE TOKEN / PAYMENT MANDATE / CREDENTIAL labels make it scannable, and the core purpose is front-loaded. Nearly every sentence carries operational information; only the incorrect `agent_key` reference keeps it from being fully reliable and tidy.

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

Completeness3/5

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

For a state-changing tool with auth and mandate requirements, it covers a great deal: prerequisites, headers, trust-score effects, and downstream usage. However, the central credential-preservation step is inaccurate (`agent_key` vs the schema's actual parameters), and it never explains how the agent determines the cart's currency to satisfy the mandate's currency-match rule.

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

Parameters2/5

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

The schema has 100% description coverage, so baseline would be 3, but the description introduces an `agent_key` argument that does not exist in the input schema, which has additionalProperties: false. An agent following this instruction would submit an invalid tool call; the description does not map the create_sandbox_key output to the actual `agent_token`, `display_context`, or `agent_session_id` parameters.

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

Purpose5/5

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

Opens with a specific verb and resource: 'Create a shopping cart in Demo Store,' and distinguishes itself from checkout/shipping siblings by stating it returns a cart_id for use with get_shipping_rates, preview_checkout, and complete_checkout. This is unambiguous and separates it from create_sandbox_key and the ucp_* 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 Guidelines4/5

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

Provides explicit execution context: call create_sandbox_key first, pass the returned credential (or Bearer header), and do not attempt human login. It also places the tool in a sequence with get_shipping_rates, preview_checkout, and complete_checkout. It stops short of naming alternate cart/checkout tools or exclusion conditions, so it is strong but not a full when/when-not guide.

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

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

TDQS

A4.9/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 of behavioral disclosure, and it does so thoroughly. It states validity duration (24h), that payments are simulated, that the credential settles nothing, that it works only on the demo store, and that no human login is involved. These are meaningful behavioral traits beyond the mere fact of creating a key.

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

Conciseness5/5

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

The description is three sentences and every sentence earns its place: purpose and validity, two usage methods with a clear conditional, and important limitations. The most essential information is front-loaded, and there is no redundancy or filler.

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

Completeness5/5

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

Given that the tool takes no parameters and an output schema exists to describe the return value, the description covers everything an agent needs: what the credential is, how long it lasts, exactly how to present it, and what its limitations are. The sibling context confirms checkout tools exist, so the reference to `agent_key` is actionable.

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 has 100% coverage of that fact, so the baseline is 4. The description adds relevant contextual guidance about how the returned credential should be used, even though it does not define any input parameters because none exist.

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

Purpose5/5

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

The description clearly identifies the action ('Get') and the resource ('temporary sandbox credential'), and gives concrete purpose: authenticating to the demo store. It distinguishes itself from all sibling tools by being the only credential/authentication tool in the list, rather than a cart, checkout, product, or search operation.

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

Usage Guidelines5/5

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

It provides explicit, actionable usage instructions: present the credential as an `Authorization: Bearer` header, or pass it as the `agent_key` argument to checkout tools when headers cannot be set. It also sets expectations about scope ('works only on the demo store') and simulation ('settles nothing'), making the correct invocation context clear.

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.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds meaningful context beyond those: the merchant is determined by the endpoint, no parameter selects it, and the returned profile covers specific data domains. There is no contradiction 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 sentences with no filler. The core action and resource are front-loaded, the critical no-parameter constraint is explicit, and the cross-merchant instruction is placed last without bloating the description.

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

Completeness5/5

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

For a simple read-only, zero-parameter tool with rich annotations and an output schema, the description covers everything needed to call it correctly: what is returned, how the merchant is determined, why no arguments are required, and how to target another merchant.

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?

There are zero parameters and the description proactively explains why, preventing an agent from inventing a merchant ID or store slug argument. This is stronger than the baseline for parameterless tools because it resolves the most likely confusion.

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 a specific action and resource: getting the complete merchant profile, and lists the concrete content categories (trust score, policies, compliance, protocol support). It is distinct from sibling tools focused on products, carts, checkout, or content 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 explicitly explains when to use the tool and the unusual zero-parameter model, including how to handle a different merchant by calling the same tool on that merchant's endpoint. It does not explicitly name sibling exclusions, but the resource scope makes the intended use clear.

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

Read the content of a specific page on Trusteed. Pass the page slug (e.g. 'for-agents', 'pricing', 'blog') or a blog post slug. 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
datePublishedNo
related_toolsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the bar for additional disclosure is lower. The description adds useful behavioral detail beyond the schema: the special semantics of page='blog' and the expectation that slugs come from get_site_map. It does not contradict annotations.

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

Conciseness5/5

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

Three short sentences with no filler. The core purpose is front-loaded, followed by parameter guidance and the prerequisite use of get_site_map. Every sentence earns its place.

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

Completeness5/5

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

For a single-parameter, read-only tool with rich annotations and an output schema, the description is complete. It tells the agent what slugs look like, how to discover them, and the special blog-listing behavior, so nothing essential is missing for correct invocation.

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

Parameters3/5

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

There is only one parameter and schema description coverage is 100%, so the schema already documents the page slug and the 'blog' special value. The description largely repeats the schema's parameter explanation rather than adding new semantic meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read the content of a specific page on Trusteed.' It clearly distinguishes itself from siblings like get_site_map (which discovers slugs) and get_product_details (which returns product data), and adds the special 'blog' listing behavior.

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 explicitly instructs to 'Use get_site_map first to discover available slugs,' which routes the agent to the correct precursor tool. It gives clear context for when this tool is appropriate, though it does not spell out explicit when-not-to-use exclusions against other siblings.

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

get_product_detailsB
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-snk-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

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds value by specifying the scope of details (variants, sizes, colors, availability), which goes beyond annotations. No contradiction is present, and the description aligns with the read-only nature.

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, well-structured sentence. It front-loads the core action and resource, then expands with the detail categories. There is no filler or redundancy; every element earns its place.

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

Completeness4/5

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

For a simple read-only tool with one parameter and an output schema, the description is largely complete. It states the tool's scope and the kind of data returned. The only gap is the lack of explicit routing to sibling tools (e.g., how to obtain product_id), but given the schema already covers that, the overall context is sufficient.

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 product_id parameter well (including the instruction to use the id field from search_products). The description does not add any additional parameter-level information; it relies entirely on the schema. Baseline 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Get detailed information') and the specific resource ('a specific product in Demo Store'), and even enumerates the details include variants, sizes, colors, and availability. It distinguishes from the search sibling tools (which return lists) by focusing on a single product, though it does not name an alternative explicitly.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention that search_products should be used first to find product IDs, nor does it note any exclusions (e.g., 'not for listing multiple products'). Usage context is entirely implied by the tool name and description.

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. Collects shipping address via elicitation if supported.

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. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.
shipping_addressNoDestination address. Omit to collect via elicitation (Claude.ai).

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratesYes
cart_idYes
address_cityNo
address_countryNo

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing mandatory payment mandate requirements, denied-outright conditions on currency mismatch, max_amount_cents enforcement, optional token behavior, credential prerequisites, address elicitation, and the fact that there is no human login. These are exactly the operational behaviors an agent needs to know and are absent from the annotations.

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

Conciseness4/5

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

The description is long but well-structured with labeled sections for token, payment mandate, and credential. It is front-loaded with the core purpose, and each section earns its place given the integration complexity, though some redundancy with schema descriptions 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?

For a tool with authentication, payment mandate, and credential prerequisites, the description is remarkably complete: it covers required headers, argument alternatives, failure conditions, prerequisite tool calls, and the no-human-login rule. An output schema exists, so the lack of return-format detail is acceptable.

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?

Even though schema description coverage is 100%, the description adds meaningful parameter-level meaning: payment_mandate may be sent as an argument or X-Payment-Mandate header, its currency must match the cart or the call is denied, and its cap is enforced against the cart total. It also clarifies that agent_key can be passed as an argument or Bearer header and that create_sandbox_key must be called first.

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

Purpose5/5

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

The opening sentence, 'Get available shipping rates for the cart,' names a specific verb and resource, and clearly distinguishes this from siblings like select_shipping_option and preview_checkout. The additional note about address elicitation further sharpens the tool's 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 gives clear prerequisite guidance — call create_sandbox_key first, provide a payment mandate, optionally include a skyfire token — but it does not explicitly say when to use this tool versus siblings such as select_shipping_option or preview_checkout. Usage is implied by the purpose statement rather than explicitly contrasted with alternatives.

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.

preview_checkoutAInspect

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

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. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
statusYes
currencyYes
store_nameYes
total_centsYes
discount_centsYes
shipping_centsYes
shipping_titleNo
subtotal_centsYes
checkout_session_idYes

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses important state-changing behavior beyond the annotations: it advances the session state, requires a payment mandate, and denies the call outright if the mandate currency does not match the cart's currency. It also clarifies the optional token behavior ('request proceeds normally if omitted') and that there is no human login. This goes well beyond the sparse annotation hints.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then uses clear uppercase section labels for token, mandate, and credential requirements. It is long, but the length is justified by the complex authentication and mandate rules. Minor redundancy exists in repeating the 'if your client cannot set headers' condition for both payment_mandate and agent_key.

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 tool with this many auth-related conditions, the description covers everything needed: purpose, state transition, optional token, mandatory mandate fields, currency rule, credential acquisition via create_sandbox_key, header alternatives, and the absence of human login. An output schema exists, so return-value details do not need to be in the description. The tool is fully callable from the description alone.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics for payment_mandate and agent_key, including required subfields, header alternatives, currency-matching enforcement, and the max_amount_cents cap. It adds less for cart_id, but that parameter is already simple and well described in the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Preview the complete order summary before payment.' It also states the key side effect, 'Advances the session to ready-for-payment state,' which clearly separates it from siblings like complete_checkout and ucp_create_checkout. This is a clear, distinct purpose.

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 contextual sequencing: this is for previewing before payment and advancing to ready-for-payment, which implies use before complete_checkout. It also provides explicit prerequisite guidance such as 'Call the create_sandbox_key tool first.' However, it does not explicitly name alternatives or state when not to use the tool.

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

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.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context: full-text search, coverage across documented types, relevance ranking, and the 'public' nature of the material.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action and scope, followed by expected output and usage examples. No filler or redundancy.

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

Completeness5/5

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

For a simple read-only search tool with an output schema, 100% parameter coverage, and clear sibling separation, the description fully equips an agent to select and invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the description does not need to add parameter details. It broadly aligns with the 'type' enum by mentioning pages, blog posts, and FAQ entries, but does not add meaning beyond the schema.

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

Purpose5/5

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

States a specific verb ('search') and a clear resource ('all Trusteed public documentation: pages, blog posts, and FAQ entries'), and names the result type ('ranked results by relevance'). This clearly distinguishes it from product-search siblings 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 Guidelines4/5

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

Provides clear usage context ('Use this to find answers about protocols, pricing, integration guides, trust scores, and more') and the scope of what it searches. It does not explicitly name alternatives or exclusions, so it stops short of a full 5.

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

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), and the duplicate `_carousel`/`_ui` widget payload is left out. 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 and drops the widget payload, 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
_carouselNo
next_cursorNo
store_environmentNo
sort_provenance_warningNo

TDQS

A4.3/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 valuable behavioral context: the compact flag's effect on output, the field_mask's context-saving behavior, and the cursor's strict validity constraint (rejected if replayed against different filters). This goes beyond the annotations and schema.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and return value, then dives into parameter-specific behavior. It is somewhat long, but every sentence adds meaningful detail about output shaping and pagination constraints. The structure is logical: purpose first, then output highlights, then parameter nuances.

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

Completeness4/5

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

Given the tool's complexity (9 parameters, output schema, rich annotations), the description covers the key behavioral nuances an agent needs: pagination cursor validity, compact vs. field_mask interaction, and trust-field preservation. It doesn't explicitly describe the output schema structure, but the output schema exists and the description references key fields. Minor gap: no explicit statement about when to prefer search_products_enriched, but overall complete for invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains that 'compact' trims the text reply and drops widget payloads while preserving trust fields, and that 'field_mask' drops carousel/UI payloads and always includes 'id'. It also clarifies the cursor's strict binding to the same query/filters. This is more than the schema alone provides.

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

Purpose5/5

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

The description states a specific verb ('Search') and resource ('products in Demo Store'), and immediately distinguishes the tool from siblings by noting it returns prices, images, availability, and direct links, plus data for a visual carousel artifact. This clearly differentiates it from search_products_enriched and get_product_details.

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 implies usage for searching and listing products, and the sibling list includes search_products_enriched, which suggests a more enriched alternative, but the description does not explicitly state when to use this tool vs. search_products_enriched or get_product_details. It gives clear context for what it returns but no explicit exclusions or alternative routing.

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
_carouselNo
sort_provenance_warningYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the readOnly/idempotent annotations: matching is keyword/substring-based on specific fields, ordering is rating-then-review, and crucially it warns that ratings/review counts are merchant-asserted and not verified by Trusteed. This is meaningful, honest behavioral disclosure.

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

Conciseness5/5

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

Three sentences, each earning its place: the enriched-data scope, the matching/ordering behavior with the trust caveat, and the when-to-use guidance. It is front-loaded with the primary purpose and contains no filler.

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

Completeness5/5

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

With an output schema present and annotations covering safety semantics, the description sufficiently covers what an agent needs to select and call this tool: result richness, search behavior, ordering caveat, and input context. No critical operational behavior 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 description coverage is 100%, so the baseline is 3. The description adds value by clarifying what the query parameter actually does ('keyword/substring-based (title, description, tags, vendor)') and reinforcing the intended use of category and price-range filters. It does not describe every parameter but adds meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource ('Search products') and clearly differentiates this tool by its enriched result data: 'structured attributes, variants, GTIN, and images.' It also states the intended use ('comparison and detailed product discovery'), making its purpose distinct from the simpler sibling 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 Guidelines4/5

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

It gives explicit guidance on when to use the tool: 'Use this when you have concrete keywords, a category, or a price range.' It does not explicitly name alternatives or exclusion cases, so it stops short of the fullest when/when-not guidance, but the context is clear.

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

select_shipping_optionA
Idempotent
Inspect

Select a shipping method for the cart. Must call get_shipping_rates first.

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. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total. 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.
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.
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.4/5.0
Behavior4/5

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

The description goes well beyond the annotations by disclosing authentication requirements, the mandatory payment mandate, currency-matching enforcement, the max_amount_cents cap, and the optional skyfire token behavior. It also clarifies that the call is denied outright on currency mismatch. This is strong behavioral context; a slight deduction is warranted because it does not describe the mutation effect on the cart or any idempotency-relevant behavior beyond the annotation.

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 long but well-structured with clear all-caps sections and front-loaded purpose. Every section carries actionable detail, but it could be tightened; for example, the header-vs-argument alternatives are stated multiple times for both agent_key and payment_mandate. Still, it remains focused and scannable.

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

Completeness5/5

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

For a tool with authentication, a payment mandate, and prerequisite calls, the description is remarkably complete: it covers the prerequisite sequence, credential acquisition, header/argument alternatives, mandatory mandate contents, denial conditions, and the lack of human login. With an output schema present and full input schema coverage, an agent has everything needed to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful meaning to agent_key and payment_mandate by explaining how to obtain the credential via create_sandbox_key, when to use arguments versus headers, and the required mandate fields/currency rule. This exceeds schema-only documentation, though cart_id and shipping_handle receive no additional explanation beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Select a shipping method for the cart.' It clearly distinguishes the tool from the sibling get_shipping_rates by requiring that tool to be called first, and the shipping_handle parameter is explicitly tied to get_shipping_rates output. This leaves 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 Guidelines4/5

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

The description gives clear workflow guidance: call get_shipping_rates first, then select a shipping option, and for credentials call create_sandbox_key first. It also states that no human login exists. However, it does not explicitly say when not to use this tool, such as 'use complete_checkout instead when finalizing the purchase,' so it falls short of fully explicit alternative routing.

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

ucp_cancel_checkoutA
DestructiveIdempotent
Inspect

Cancel a UCP checkout session. Transitions to 'canceled' status. Cannot cancel already completed checkouts. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional cancellation reason
checkout_idYesUCP checkout session ID (valid UUID)
idempotency_keyNoOptional idempotency key to prevent duplicate cancellations.
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
created_atYes
extensionsNo
line_itemsYes
updated_atYes
idempotency_keyNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as destructive and idempotent, and the description adds substantial behavioral context beyond that: the payment mandate requirement, the header-vs-argument delivery option, the mandatory fields, the currency-match denial condition, and enforcement of max_amount_cents against the cart total. This is exactly the kind of non-obvious runtime behavior an agent needs.

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

Conciseness4/5

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

The description is front-loaded with the core action and then covers the mandatory payment mandate details. It is a bit dense, especially the uppercase PAYMENT MANDATE section, but every sentence serves a functional purpose given the hidden requirement and denial conditions.

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 an output schema exists and annotations cover safety, the description provides complete operational context: what happens on cancel, what is not cancellable, how the required payment mandate must be supplied, and what conditions cause denial. No critical calling information is missing.

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

Parameters5/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds critical semantics not fully visible in the schema: payment_mandate is actually required (though the schema lists it as optional) when not supplied as a header, its fields are enforced, its currency must match the cart, and the cap is enforced. This goes well beyond the schema's generic property descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'Cancel a UCP checkout session.' It adds a concrete state transition ('Transitions to canceled status') and a distinguishing constraint ('Cannot cancel already completed checkouts'), which clearly separates this from sibling tools like complete_checkout or ucp_update_checkout.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool (cancel a UCP checkout) and an explicit exclusion (not already completed checkouts). It does not name alternatives such as complete_checkout for completed sessions, so it stops short of fully explicit when-not/alternative guidance.

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

ucp_create_checkoutA
Idempotent
Inspect

Create a UCP checkout session from line items. Returns a UCP checkout object with status 'incomplete'. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total.

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)
line_itemsYesLine items for the checkout
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
created_atYes
extensionsNo
line_itemsYes
updated_atYes
idempotency_keyNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations, it discloses the mandatory payment mandate, the ability to send it as an argument or header, the hard denial on currency mismatch, and the max_amount cap enforcement. These are operationally critical constraints that annotations alone do not convey.

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

Conciseness4/5

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

The purpose is front-loaded and each sentence carries information. The Payment Mandate section is longer than ideal and partly overlaps schema descriptions, but it is justified because it clarifies a non-obvious required field and hard failure conditions.

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 present and rich field schemas, the description covers the critical missing context: return status, mandate requirements, and enforcement behavior. It is slightly vague about how 'cart total' and 'cart currency' are derived, but not enough to block correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds important meaning for payment_mandate: the required embedded fields, the header alternative, the currency-match hard stop, and cap enforcement. It does not add much to currency or line_items, but the schema already documents those fully.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a UCP checkout session from line items.' It also clarifies the expected return state ('status incomplete'), which distinguishes it from sibling tools like complete_checkout or preview_checkout.

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

Usage Guidelines4/5

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

It gives clear context for use (creating an initial checkout from line items and supplying a payment mandate), and the 'status incomplete' detail signals this is the creation step. It does not explicitly name alternatives or exclusion conditions, but the intended usage is unambiguous.

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

ucp_get_checkoutA
Read-onlyIdempotent
Inspect

Retrieve a UCP checkout session by ID. Returns the current state of the checkout. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkout_idYesUCP checkout session ID (valid UUID)
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
created_atYes
extensionsNo
line_itemsYes
updated_atYes
idempotency_keyNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent hints, the description discloses that a payment mandate is mandatory even for this read, specifies the required fields, and gives exact denial conditions (currency mismatch, cap enforcement). This is material behavioral context an agent could not infer from annotations or schema alone.

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?

Every sentence earns its place: purpose, state returned, mandate requirement, transport alternatives, field requirements, and validation consequences. The structure front-loads the primary action and then gives the critical auth constraint.

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

Completeness5/5

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

For a single-checkout read with an output schema present, the description covers the essential call requirements, including the non-obvious mandate and validation rules. Nothing needed to correctly invoke the tool is missing.

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?

Although schema coverage is 100%, the description adds significant meaning to payment_mandate: the exact fields it must carry, the header-vs-argument alternatives, and the currency/cap enforcement rules. It thus goes well beyond the schema's generic 'Payment mandate with fields' text.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Retrieve a UCP checkout session by ID') and clarifies it returns the current state. This clearly differentiates it from sibling mutation tools like ucp_create_checkout, ucp_update_checkout, and ucp_cancel_checkout.

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 intended use is clear from the retrieval semantics for a single checkout by ID, but the description does not explicitly name alternative tools or exclusion conditions. It does give concrete invocation guidance for the required payment mandate, which helps an agent use it correctly.

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

ucp_update_checkoutA
Idempotent
Inspect

Update a UCP checkout session by fully replacing all line items. Only allowed when status is 'incomplete'. 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, and its currency must match the cart's currency or the call is denied outright. The cap in max_amount_cents is enforced against the cart total.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYesISO 4217 currency code (e.g. USD)
line_itemsYesReplacement line items
checkout_idYesUCP checkout session ID (valid UUID)
payment_mandateNoPayment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
intentNo
statusYes
totalsYes
currencyYes
created_atYes
extensionsNo
line_itemsYes
updated_atYes
idempotency_keyNo

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by explaining that a payment mandate is required, how to send it via body or header, the exact fields it must carry, and that currency mismatch causes outright denial. It also clarifies the cap enforcement against the cart total, providing rich behavioral context.

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

Conciseness5/5

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

The description is efficiently structured: the core purpose is front-loaded, followed by a clearly flagged payment-mandate section. Every sentence carries operational value, and the formatting makes the critical warning easy to notice.

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 tool of this complexity, the description covers the essential operational context: replacement semantics, status precondition, payment mandate requirements, and validation behavior. The existence of an output schema covers return-value expectations, 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 schema already documents each parameter. The description adds meaningful semantic context beyond the schema, especially around payment_mandate: how to pass it, what it must contain, and the currency-matching rule. This elevates it above the baseline.

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

Purpose5/5

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

The description states a clear, specific action: 'Update a UCP checkout session by fully replacing all line items.' This distinguishes it from sibling tools like ucp_create_checkout and complete_checkout, and the resource and operation are unambiguous.

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

Usage Guidelines4/5

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

The description provides a concrete usage condition ('Only allowed when status is incomplete') and details critical operational requirements like the payment mandate. It does not explicitly name alternative tools or say when not to use it, so it stops just short of a perfect score.

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

Tool Schema Changelog

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

  1. 9 tool updates
    • Changedapply_discount2 fields changed
      • addedInput schema / properties / agent_key
        Added value: +{
        +  "description": "Sandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changedcomplete_checkout2 fields changed
      • addedInput schema / properties / agent_key
        Added value: +{
        +  "description": "Sandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changedget_shipping_rates2 fields changed
      • addedInput schema / properties / agent_key
        Added value: +{
        +  "description": "Sandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changedpreview_checkout2 fields changed
      • addedInput schema / properties / agent_key
        Added value: +{
        +  "description": "Sandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changedselect_shipping_option2 fields changed
      • addedInput schema / properties / agent_key
        Added value: +{
        +  "description": "Sandbox credential from `create_sandbox_key`. Use this when your client cannot set an `Authorization: Bearer` header.",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changeducp_cancel_checkout1 field changed
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changeducp_create_checkout1 field changed
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changeducp_get_checkout1 field changed
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
    • Changeducp_update_checkout1 field changed
      • addedInput schema / properties / payment_mandate
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Payment mandate with `mandate_id`, `max_amount_cents`, `currency`, `exp`, `sub`, `aud`. Its `currency` must match the cart's. Use this when your client cannot set an `X-Payment-Mandate` header."
        +}
  2. 1 tool update
    • Addedcreate_sandbox_key
  3. 1 tool update
    • Changedsearch_products_enriched1 field changed
      • addedOutput schema / properties / _carousel
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "apiEndpoint": {
        +      "type": "string"
        +    },
        +    "initialCategory": {
        +      "type": "string"
        +    },
        +    "productsForArtifact": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "storeSlug": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "apiEndpoint",
        +    "storeSlug",
        +    "productsForArtifact",
        +    "initialCategory"
        +  ],
        +  "type": "object"
        +}
  4. 19 tool updates
    • Changedapply_discount2 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
    • Changedbrowse_categories3 fields changed
      • addedInput schema / additionalProperties
        Added value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / categories / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedcompare_products6 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / bestValue / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "productId": {
        -        "type": "string"
        -      },
        -      "reason": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "productId",
        -      "reason"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "productId": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "productId",
        +      "reason"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / products / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / attributes / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / rating_provenance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "note": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "merchant",
        -        "type": "string"
        -      },
        -      "strength": {
        -        "const": "claimed",
        -        "type": "string"
        -      },
        -      "verified": {
        -        "const": false,
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "origin",
        -      "strength",
        -      "verified",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "note": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "merchant",
        +        "type": "string"
        +      },
        +      "strength": {
        +        "const": "claimed",
        +        "type": "string"
        +      },
        +      "verified": {
        +        "const": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "origin",
        +      "strength",
        +      "verified",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcomplete_checkout4 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / buyer / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / cel_context / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
    • Changedcreate_cart2 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / items / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedget_merchant_profile27 fields changed
      • addedInput schema / additionalProperties
        Added value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / agentPolicySummary / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / agentPolicySummary / properties / maxCartValue / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / agentPolicySummary / properties / maxUnitsPerLine / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / compliance / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / discovery / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / identity / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / identity / properties / address / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / identity / properties / contact / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / properties / payment / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / properties / payment / properties / withheldMethods / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / properties / returns / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / properties / shipping / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / policies / properties / warranty / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / properties / acp / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / properties / ap2 / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / properties / ucp / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / properties / vic / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / protocols / properties / x402 / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / store / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / supportedProtocols / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / trust / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / trust / properties / legacyV2Components / additionalProperties
        Previous value: -falseNew value: +true
    • Changedget_page_content3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / posts / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedget_product_details4 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / rating_provenance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "note": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "merchant",
        -        "type": "string"
        -      },
        -      "strength": {
        -        "const": "claimed",
        -        "type": "string"
        -      },
        -      "verified": {
        -        "const": false,
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "origin",
        -      "strength",
        -      "verified",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "note": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "merchant",
        +        "type": "string"
        +      },
        +      "strength": {
        +        "const": "claimed",
        +        "type": "string"
        +      },
        +      "verified": {
        +        "const": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "origin",
        +      "strength",
        +      "verified",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / variants / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedget_shipping_rates4 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / shipping_address / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / rates / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedget_site_map3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / pages / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedpreview_checkout3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / items / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedsearch_docs3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / results / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedsearch_products5 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / _carousel / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / rating_provenance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "note": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "merchant",
        -        "type": "string"
        -      },
        -      "strength": {
        -        "const": "claimed",
        -        "type": "string"
        -      },
        -      "verified": {
        -        "const": false,
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "origin",
        -      "strength",
        -      "verified",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "note": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "merchant",
        +        "type": "string"
        +      },
        +      "strength": {
        +        "const": "claimed",
        +        "type": "string"
        +      },
        +      "verified": {
        +        "const": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "origin",
        +      "strength",
        +      "verified",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsearch_products_enriched7 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / attributes / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / images / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / products / items / properties / rating_provenance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "note": {
        -        "type": "string"
        -      },
        -      "origin": {
        -        "const": "merchant",
        -        "type": "string"
        -      },
        -      "strength": {
        -        "const": "claimed",
        -        "type": "string"
        -      },
        -      "verified": {
        -        "const": false,
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "origin",
        -      "strength",
        -      "verified",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "note": {
        +        "type": "string"
        +      },
        +      "origin": {
        +        "const": "merchant",
        +        "type": "string"
        +      },
        +      "strength": {
        +        "const": "claimed",
        +        "type": "string"
        +      },
        +      "verified": {
        +        "const": false,
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "origin",
        +      "strength",
        +      "verified",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / products / items / properties / variants / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changedselect_shipping_option2 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
    • Changeducp_cancel_checkout8 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / properties / warnings / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / intent / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / properties / price / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / totals / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changeducp_create_checkout10 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / intent / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / properties / warnings / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / intent / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / properties / price / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / totals / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changeducp_get_checkout8 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / properties / warnings / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / intent / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / properties / price / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / totals / items / additionalProperties
        Previous value: -falseNew value: +true
    • Changeducp_update_checkout9 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / extensions / properties / warnings / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / intent / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / line_items / items / properties / price / additionalProperties
        Previous value: -falseNew value: +true
      • changedOutput schema / properties / totals / items / additionalProperties
        Previous value: -falseNew value: +true
  5. 1 tool update
    • Changedget_merchant_profile2 fields changed
      • addedOutput schema / properties / agentPolicySummary / properties / maxUnitsPerLine
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "derivedFrom": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "units": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "units",
        +    "derivedFrom"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / agentPolicySummary / properties / source / enum
        Previous value: -[
        -  "merchant_rules",
        -  "not_configured",
        -  "lookup_failed"
        -]New value: +[
        +  "merchant_rules",
        +  "platform_ceiling",
        +  "not_configured",
        +  "lookup_failed"
        +]
  6. 1 tool update
    • Changedget_merchant_profile13 fields changed
      • addedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / additionalProperties
        Added value: +false
      • removedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / items
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / properties
        Added value: +{
        +  "countries": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "derivedFrom": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +}
      • addedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / required
        Added value: +[
        +  "countries",
        +  "derivedFrom"
        +]
      • changedOutput schema / properties / agentPolicySummary / properties / allowedShippingCountries / type
        Previous value: -"array"New value: +"object"
      • removedOutput schema / properties / agentPolicySummary / properties / alwaysConfirm
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / agentPolicySummary / properties / confirmationRequiredAboveUsd
        Removed value: -{
        -  "type": "number"
        -}
      • addedOutput schema / properties / agentPolicySummary / properties / confirmationRequiredAtOrAbove
        Added value: +{
        +  "$ref": "#/properties/agentPolicySummary/properties/maxCartValue"
        +}
      • addedOutput schema / properties / agentPolicySummary / properties / maxCartValue
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "amountCents": {
        +      "type": "number"
        +    },
        +    "derivedFrom": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "amountCents",
        +    "derivedFrom"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / agentPolicySummary / properties / maxCartValueUsd
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / agentPolicySummary / properties / neverConfirm
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / agentPolicySummary / properties / source
        Added value: +{
        +  "enum": [
        +    "merchant_rules",
        +    "not_configured",
        +    "lookup_failed"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / agentPolicySummary / required
        Previous value: -[
        -  "maxCartValueUsd",
        -  "confirmationRequiredAboveUsd",
        -  "allowedShippingCountries",
        -  "alwaysConfirm",
        -  "neverConfirm"
        -]New value: +[
        +  "source"
        +]
  7. 1 tool update
    • Changedcreate_cart4 fields changed
      • changedInput schema / properties / items / items / properties / variant_id / description
        Previous value: -"Variant ID (optional)"New value: +"Variant ID (optional). Must match a variant id listed by get_product_details; an unknown id is rejected rather than silently replaced by the default variant."
      • addedOutput schema / properties / items / items / properties / sku
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / variant_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / variant_title
        Added value: +{
        +  "type": "string"
        +}
  8. 1 tool update
    • Changedget_merchant_profile1 field changed
      • changedOutput schema / properties / policies / properties / shipping / description
        Previous value: -"Merchant-declared shipping policy. Absent = not declared. An absent freeThresholdCents is NOT 'free shipping on everything'."New value: +"Merchant-declared shipping policy for the merchant's OWN checkout. Absent = not declared. An absent freeThresholdCents is NOT 'free shipping on everything', and a declared one is NOT applied by get_shipping_rates: those rates are flat estimates that ignore the cart subtotal. Delivery days here may differ from the estimates too."
  9. 2 tool updates
    • Changedget_shipping_rates3 fields changed
      • addedOutput schema / properties / rates / items / properties / authoritative
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / rates / items / properties / source
        Added value: +{
        +  "enum": [
        +    "platform",
        +    "merchant_policy",
        +    "estimated"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / rates / items / required
        Previous value: -[
        -  "handle",
        -  "title",
        -  "price",
        -  "currency"
        -]New value: +[
        +  "handle",
        +  "title",
        +  "price",
        +  "currency",
        +  "source",
        +  "authoritative"
        +]
    • Changedselect_shipping_option3 fields changed
      • addedOutput schema / properties / shipping_authoritative
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / shipping_source
        Added value: +{
        +  "enum": [
        +    "platform",
        +    "merchant_policy",
        +    "estimated"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "cart_id",
        -  "selected_handle",
        -  "selected_title",
        -  "shipping_cents",
        -  "subtotal_cents",
        -  "total_cents",
        -  "currency"
        -]New value: +[
        +  "cart_id",
        +  "selected_handle",
        +  "selected_title",
        +  "shipping_cents",
        +  "subtotal_cents",
        +  "total_cents",
        +  "currency",
        +  "shipping_source",
        +  "shipping_authoritative"
        +]
  10. 1 tool update
    • Changedget_merchant_profile16 fields changed
      • addedOutput schema / properties / compliance / properties / dataRetentionDays / description
        Added value: +"Retention window as declared by the merchant. Absent = not declared; absence is NOT 'data is deleted immediately'."
      • addedOutput schema / properties / compliance / properties / gdprContactEmail
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / compliance / properties / pciDssLevel / description
        Added value: +"PCI DSS merchant level as declared by the merchant (1-4). Absent = not declared."
      • removedOutput schema / properties / compliance / required
        Removed value: -[
        -  "gdprDataController",
        -  "pciDssLevel",
        -  "encryptionAtRest",
        -  "encryptionInTransit",
        -  "dataRetentionDays"
        -]
      • removedOutput schema / properties / identity / properties / address / required
        Removed value: -[
        -  "street",
        -  "city",
        -  "state",
        -  "country",
        -  "postalCode"
        -]
      • removedOutput schema / properties / identity / properties / contact / required
        Removed value: -[
        -  "email",
        -  "phone",
        -  "chat"
        -]
      • removedOutput schema / properties / identity / required
        Removed value: -[
        -  "legalName",
        -  "taxId",
        -  "address",
        -  "contact"
        -]
      • addedOutput schema / properties / policies / properties / payment / description
        Added value: +"Merchant-declared payment policy. Absent = not declared; ask at checkout."
      • removedOutput schema / properties / policies / properties / payment / required
        Removed value: -[
        -  "acceptedMethods",
        -  "securityStandard"
        -]
      • addedOutput schema / properties / policies / properties / returns / description
        Added value: +"Merchant-declared return policy. Absent = not declared; absence is NEVER zero."
      • removedOutput schema / properties / policies / properties / returns / required
        Removed value: -[
        -  "windowDays",
        -  "freeReturnShipping",
        -  "refundMethod",
        -  "refundProcessingDays"
        -]
      • addedOutput schema / properties / policies / properties / shipping / description
        Added value: +"Merchant-declared shipping policy. Absent = not declared. An absent freeThresholdCents is NOT 'free shipping on everything'."
      • removedOutput schema / properties / policies / properties / shipping / required
        Removed value: -[
        -  "freeThresholdCents",
        -  "standardDeliveryDays",
        -  "expressPrice",
        -  "overnightPrice"
        -]
      • addedOutput schema / properties / policies / properties / warranty / description
        Added value: +"Merchant-declared warranty. Absent = not declared, NOT 'no warranty'."
      • removedOutput schema / properties / policies / properties / warranty / required
        Removed value: -[
        -  "periodYears",
        -  "covered"
        -]
      • removedOutput schema / properties / policies / required
        Removed value: -[
        -  "returns",
        -  "shipping",
        -  "warranty",
        -  "payment"
        -]
  11. 1 tool update
    • Changedcomplete_checkout1 field changed
      • addedOutput schema / properties / payment_url
        Added value: +{
        +  "type": "string"
        +}
  12. 9 tool updates
    • Addedcompare_products
    • Addedget_page_content
    • Addedget_site_map
    • Addedsearch_docs
    • Addedsearch_products_enriched
    • Addeducp_cancel_checkout
    • Addeducp_create_checkout
    • Addeducp_get_checkout
    • Addeducp_update_checkout
  13. 1 tool update
    • Changedsearch_products1 field changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "When 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), and the duplicate `_carousel`/`_ui` widget payload is left out. 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 and drops the widget payload, so there is nothing left for `compact` to cut.",
        +  "type": "boolean"
        +}
  14. 10 tool updates
    • Changedapply_discount1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "cart_id": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "discount_cents": {
        +      "type": "number"
        +    },
        +    "discount_code": {
        +      "type": "string"
        +    },
        +    "new_total_cents": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "cart_id",
        +    "discount_code",
        +    "discount_cents",
        +    "new_total_cents",
        +    "currency"
        +  ],
        +  "type": "object"
        +}
    • Changedbrowse_categories1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "categories": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "product_count": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "product_count"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "store_name": {
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "categories",
        +    "total",
        +    "store_name"
        +  ],
        +  "type": "object"
        +}
    • Changedcomplete_checkout1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "checkout_session_id": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "external_order_id": {
        +      "type": "string"
        +    },
        +    "idempotent": {
        +      "type": "boolean"
        +    },
        +    "order_id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "COMPLETED",
        +        "ALREADY_PLACED",
        +        "PENDING_EXTERNAL_CONFIRMATION"
        +      ],
        +      "type": "string"
        +    },
        +    "store_name": {
        +      "type": "string"
        +    },
        +    "total_cents": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "order_id",
        +    "checkout_session_id",
        +    "store_name",
        +    "total_cents",
        +    "currency",
        +    "status",
        +    "idempotent"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_cart1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "agent_session_id": {
        +      "type": "string"
        +    },
        +    "cart_id": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "display_context": {
        +      "enum": [
        +        "webview",
        +        "headless"
        +      ],
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "line_price": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "quantity": {
        +            "type": "number"
        +          },
        +          "unit_price": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "quantity",
        +          "unit_price",
        +          "line_price"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "session_state": {
        +      "enum": [
        +        "new",
        +        "resumed"
        +      ],
        +      "type": "string"
        +    },
        +    "status": {
        +      "const": "NOT_READY_FOR_PAYMENT",
        +      "type": "string"
        +    },
        +    "store_name": {
        +      "type": "string"
        +    },
        +    "subtotal_cents": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "cart_id",
        +    "store_name",
        +    "items",
        +    "subtotal_cents",
        +    "currency",
        +    "status",
        +    "agent_session_id",
        +    "session_state",
        +    "display_context"
        +  ],
        +  "type": "object"
        +}
    • Changedget_merchant_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "acpFeedUrl": {
        +      "type": "string"
        +    },
        +    "agentPolicySummary": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "allowedShippingCountries": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "alwaysConfirm": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "confirmationRequiredAboveUsd": {
        +          "type": "number"
        +        },
        +        "maxCartValueUsd": {
        +          "type": "number"
        +        },
        +        "neverConfirm": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "maxCartValueUsd",
        +        "confirmationRequiredAboveUsd",
        +        "allowedShippingCountries",
        +        "alwaysConfirm",
        +        "neverConfirm"
        +      ],
        +      "type": "object"
        +    },
        +    "compliance": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataRetentionDays": {
        +          "type": "number"
        +        },
        +        "encryptionAtRest": {
        +          "type": "string"
        +        },
        +        "encryptionInTransit": {
        +          "type": "string"
        +        },
        +        "gdprDataController": {
        +          "type": "string"
        +        },
        +        "pciDssLevel": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "gdprDataController",
        +        "pciDssLevel",
        +        "encryptionAtRest",
        +        "encryptionInTransit",
        +        "dataRetentionDays"
        +      ],
        +      "type": "object"
        +    },
        +    "discovery": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "agUiEndpoint": {
        +          "type": "string"
        +        },
        +        "agentCard": {
        +          "type": "string"
        +        },
        +        "agentPolicy": {
        +          "type": "string"
        +        },
        +        "llmsTxt": {
        +          "type": "string"
        +        },
        +        "mcpEndpoint": {
        +          "type": "string"
        +        },
        +        "ucpProfile": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "mcpEndpoint",
        +        "agUiEndpoint",
        +        "agentCard",
        +        "agentPolicy",
        +        "ucpProfile",
        +        "llmsTxt"
        +      ],
        +      "type": "object"
        +    },
        +    "enrichedCatalogEnabled": {
        +      "type": "boolean"
        +    },
        +    "identity": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "address": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "city": {
        +              "type": "string"
        +            },
        +            "country": {
        +              "type": "string"
        +            },
        +            "postalCode": {
        +              "type": "string"
        +            },
        +            "state": {
        +              "type": "string"
        +            },
        +            "street": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "street",
        +            "city",
        +            "state",
        +            "country",
        +            "postalCode"
        +          ],
        +          "type": "object"
        +        },
        +        "contact": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "chat": {
        +              "type": "string"
        +            },
        +            "email": {
        +              "type": "string"
        +            },
        +            "phone": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "email",
        +            "phone",
        +            "chat"
        +          ],
        +          "type": "object"
        +        },
        +        "legalName": {
        +          "type": "string"
        +        },
        +        "taxId": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "legalName",
        +        "taxId",
        +        "address",
        +        "contact"
        +      ],
        +      "type": "object"
        +    },
        +    "identityLinkingEnabled": {
        +      "type": "boolean"
        +    },
        +    "identityProviderType": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "manifest_hash": {
        +      "type": "string"
        +    },
        +    "manifest_jws": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "manifest_signed_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "policies": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "payment": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "acceptedMethods": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "securityStandard": {
        +              "type": "string"
        +            },
        +            "withheldMethods": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "method": {
        +                    "type": "string"
        +                  },
        +                  "reason": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "method",
        +                  "reason"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "acceptedMethods",
        +            "securityStandard"
        +          ],
        +          "type": "object"
        +        },
        +        "returns": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "freeReturnShipping": {
        +              "type": "string"
        +            },
        +            "refundMethod": {
        +              "type": "string"
        +            },
        +            "refundProcessingDays": {
        +              "type": "number"
        +            },
        +            "windowDays": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "windowDays",
        +            "freeReturnShipping",
        +            "refundMethod",
        +            "refundProcessingDays"
        +          ],
        +          "type": "object"
        +        },
        +        "shipping": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "expressPrice": {
        +              "type": "number"
        +            },
        +            "freeThresholdCents": {
        +              "type": "number"
        +            },
        +            "overnightPrice": {
        +              "type": "number"
        +            },
        +            "standardDeliveryDays": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "freeThresholdCents",
        +            "standardDeliveryDays",
        +            "expressPrice",
        +            "overnightPrice"
        +          ],
        +          "type": "object"
        +        },
        +        "warranty": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "covered": {
        +              "type": "string"
        +            },
        +            "periodYears": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "periodYears",
        +            "covered"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "returns",
        +        "shipping",
        +        "warranty",
        +        "payment"
        +      ],
        +      "type": "object"
        +    },
        +    "protocolScopeNote": {
        +      "type": "string"
        +    },
        +    "protocols": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "acp": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "provider": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "enabled",
        +            "provider"
        +          ],
        +          "type": "object"
        +        },
        +        "ap2": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "provider": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "enabled",
        +            "provider"
        +          ],
        +          "type": "object"
        +        },
        +        "ucp": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "version": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "enabled",
        +            "version"
        +          ],
        +          "type": "object"
        +        },
        +        "vic": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "environment": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "enabled",
        +            "environment"
        +          ],
        +          "type": "object"
        +        },
        +        "x402": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "provider": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "enabled",
        +            "provider"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "acp",
        +        "ap2",
        +        "x402"
        +      ],
        +      "type": "object"
        +    },
        +    "store": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "description": {
        +          "type": "string"
        +        },
        +        "isDemo": {
        +          "type": "boolean"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "slug",
        +        "description",
        +        "isDemo"
        +      ],
        +      "type": "object"
        +    },
        +    "supportedProtocols": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "mode": {
        +            "enum": [
        +              "live",
        +              "sandbox",
        +              "coming_soon"
        +            ],
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mode",
        +          "description"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "trust": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "componentsSourceOfTruth": {
        +          "description": "Canonical source for the components behind overallScore.",
        +          "type": "string"
        +        },
        +        "legacyV2Components": {
        +          "additionalProperties": false,
        +          "description": "Legacy v2 self-declared breakdown (0-1). Does NOT explain overallScore (v4.1). For the components behind the published score call GET /api/v1/stores/{slug}/trust-score, or get_store_trust for the signed envelope. Omitted when every value is zero.",
        +          "properties": {
        +            "catalogCompleteness": {
        +              "type": "number"
        +            },
        +            "dataFreshness": {
        +              "type": "number"
        +            },
        +            "policyClarity": {
        +              "type": "number"
        +            },
        +            "priceAccuracy": {
        +              "type": "number"
        +            },
        +            "responseTime": {
        +              "type": "number"
        +            },
        +            "returnRate": {
        +              "type": "number"
        +            },
        +            "stockReliability": {
        +              "type": "number"
        +            },
        +            "verificationDepth": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "catalogCompleteness",
        +            "dataFreshness",
        +            "priceAccuracy",
        +            "stockReliability",
        +            "policyClarity",
        +            "responseTime",
        +            "returnRate",
        +            "verificationDepth"
        +          ],
        +          "type": "object"
        +        },
        +        "overallScore": {
        +          "description": "Trust score, engine v4.1, scale 0-100. null = not published.",
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "scoringVersion": {
        +          "description": "Engine version behind overallScore ('4.1'), null when absent.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "verificationLevel": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "overallScore",
        +        "scoringVersion",
        +        "verificationLevel",
        +        "componentsSourceOfTruth"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "store",
        +    "identity",
        +    "trust",
        +    "policies",
        +    "compliance",
        +    "protocols",
        +    "supportedProtocols",
        +    "protocolScopeNote",
        +    "agentPolicySummary",
        +    "discovery",
        +    "identityLinkingEnabled",
        +    "identityProviderType",
        +    "acpFeedUrl",
        +    "enrichedCatalogEnabled",
        +    "manifest_hash",
        +    "manifest_signed_at",
        +    "manifest_jws"
        +  ],
        +  "type": "object"
        +}
    • Changedget_product_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "attributes": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "average_rating": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "categories": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "compare_at_price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "error": {
        +      "const": "not_found",
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "image_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "jsonLd": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "type": "number"
        +    },
        +    "product_id": {
        +      "type": "string"
        +    },
        +    "rating_provenance": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "note": {
        +              "type": "string"
        +            },
        +            "origin": {
        +              "const": "merchant",
        +              "type": "string"
        +            },
        +            "strength": {
        +              "const": "claimed",
        +              "type": "string"
        +            },
        +            "verified": {
        +              "const": false,
        +              "type": "boolean"
        +            }
        +          },
        +          "required": [
        +            "origin",
        +            "strength",
        +            "verified",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "review_count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "stock_status": {
        +      "enum": [
        +        "in_stock",
        +        "low_stock",
        +        "out_of_stock"
        +      ],
        +      "type": "string"
        +    },
        +    "tags": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "variants": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "options": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "price": {
        +            "type": "number"
        +          },
        +          "sku": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "stock_status": {
        +            "enum": [
        +              "in_stock",
        +              "low_stock",
        +              "out_of_stock"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "price",
        +          "sku",
        +          "stock_status",
        +          "options"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "vendor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_shipping_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "address_city": {
        +      "type": "string"
        +    },
        +    "address_country": {
        +      "type": "string"
        +    },
        +    "cart_id": {
        +      "type": "string"
        +    },
        +    "rates": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "currency": {
        +            "type": "string"
        +          },
        +          "estimated_delivery": {
        +            "type": "string"
        +          },
        +          "handle": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "type": "number"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "handle",
        +          "title",
        +          "price",
        +          "currency"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "cart_id",
        +    "rates"
        +  ],
        +  "type": "object"
        +}
    • Changedpreview_checkout1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "checkout_session_id": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "discount_cents": {
        +      "type": "number"
        +    },
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "line_price": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "quantity": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "quantity",
        +          "line_price"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "shipping_cents": {
        +      "type": "number"
        +    },
        +    "shipping_title": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "const": "READY_FOR_PAYMENT",
        +      "type": "string"
        +    },
        +    "store_name": {
        +      "type": "string"
        +    },
        +    "subtotal_cents": {
        +      "type": "number"
        +    },
        +    "total_cents": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "checkout_session_id",
        +    "store_name",
        +    "items",
        +    "subtotal_cents",
        +    "shipping_cents",
        +    "discount_cents",
        +    "total_cents",
        +    "currency",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_products1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "_carousel": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "apiEndpoint": {
        +          "type": "string"
        +        },
        +        "initialCategory": {
        +          "type": "string"
        +        },
        +        "productsForArtifact": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "storeSlug": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "apiEndpoint",
        +        "storeSlug",
        +        "productsForArtifact",
        +        "initialCategory"
        +      ],
        +      "type": "object"
        +    },
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "next_cursor": {
        +      "type": "string"
        +    },
        +    "products": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "compareAtPrice": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "currency": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Product ID — use as product_id in create_cart",
        +            "type": "string"
        +          },
        +          "image": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "price": {
        +            "type": "number"
        +          },
        +          "rating": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "rating_provenance": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "note": {
        +                    "type": "string"
        +                  },
        +                  "origin": {
        +                    "const": "merchant",
        +                    "type": "string"
        +                  },
        +                  "strength": {
        +                    "const": "claimed",
        +                    "type": "string"
        +                  },
        +                  "verified": {
        +                    "const": false,
        +                    "type": "boolean"
        +                  }
        +                },
        +                "required": [
        +                  "origin",
        +                  "strength",
        +                  "verified",
        +                  "note"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "reviewCount": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "stockStatus": {
        +            "enum": [
        +              "in_stock",
        +              "low_stock",
        +              "out_of_stock"
        +            ],
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "vendor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "sort_provenance_warning": {
        +      "type": "string"
        +    },
        +    "store_environment": {
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "products",
        +    "total"
        +  ],
        +  "type": "object"
        +}
    • Changedselect_shipping_option1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "cart_id": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "selected_handle": {
        +      "type": "string"
        +    },
        +    "selected_title": {
        +      "type": "string"
        +    },
        +    "shipping_cents": {
        +      "type": "number"
        +    },
        +    "subtotal_cents": {
        +      "type": "number"
        +    },
        +    "total_cents": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "cart_id",
        +    "selected_handle",
        +    "selected_title",
        +    "shipping_cents",
        +    "subtotal_cents",
        +    "total_cents",
        +    "currency"
        +  ],
        +  "type": "object"
        +}
  15. 1 tool update
    • Changedcomplete_checkout1 field changed
      • addedInput schema / properties / reconfirmed_state_hash
        Added value: +{
        +  "description": "SHA-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.",
        +  "pattern": "^[0-9a-f]{64}$",
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    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