Skip to main content
Glama

confirm_agent_purchase

[BUY, Agent Step 2] Confirm your USDC payment and claim the listing. Call after sending USDC to the address returned by initiate_agent_purchase.

Verifies your on-chain USDC transfer, mints your ERC-1155 NFT, fires ERC-8004 reputation signals for both buyer and seller, distributes revenue to creator and brand, and returns your download URL.

Include buyerAgentId (your ERC-8004 agent ID) for an agent-to-agent trust signal on-chain.

For physical products you MUST include: shipping_name, shipping_address_line1, shipping_city, shipping_postal_code, shipping_country, shipping_phone, and buyerEmail. shipping_phone is required for delivery confirmation. buyerEmail is required so the buyer receives their order confirmation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
txHashYesYour USDC transfer transaction hash on Base
tokenIdYesThe listing token ID
buyerEmailNoEmail address for order confirmation and file delivery. Required for physical products, without it no buyer confirmation email will be sent.
buyerWalletYesYour wallet address
buyerAgentIdNoYour ERC-8004 agent ID for on-chain reputation signals (e.g. 17666)
selected_sizeNoFor sized products, the size you chose at initiate_agent_purchase. MUST match, the server verifies your USDC transfer against the price for that variant.
shipping_cityNoCity (required for physical products)
shipping_nameNoRecipient name (required for physical products)
selected_colorNoFor products with a colour axis, the colourway you chose at initiate_agent_purchase. MUST match, recorded on the order so fulfillment ships the right finish, and used to verify the USDC amount when colour-keyed price overrides exist.
shipping_phoneNoPhone number (required for physical products, needed for delivery confirmation)
shipping_stateNoState or province
shipping_countryNoISO 3166-1 alpha-2 country code (required for physical products)
shipping_postal_codeNoPostal/ZIP code (required for physical products)
shipping_rate_handleNoThe shipping option handle you were quoted by initiate_agent_purchase (required for physical products). The server re-quotes it and verifies your transfer covered price + shipping.
shipping_address_line1NoStreet address line 1 (required for physical products)
shipping_address_line2NoStreet address line 2

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / shipping_country / description
      Previous value: -"Country (required for physical products)"New value: +"ISO 3166-1 alpha-2 country code (required for physical products)"
    • addedInput schema / properties / shipping_rate_handle
      Added value: +{
      +  "description": "The shipping option handle you were quoted by initiate_agent_purchase (required for physical products). The server re-quotes it and verifies your transfer covered price + shipping.",
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • changedInput schema / properties / buyerEmail / description
      Previous value: -"Email address for order confirmation and file delivery. Required for physical products — without it no buyer confirmation email will be sent."New value: +"Email address for order confirmation and file delivery. Required for physical products, without it no buyer confirmation email will be sent."
    • changedInput schema / properties / selected_color / description
      Previous value: -"For products with a colour axis, the colourway you chose at initiate_agent_purchase. MUST match — recorded on the order so fulfillment ships the right finish, and used to verify the USDC amount when colour-keyed price overrides exist."New value: +"For products with a colour axis, the colourway you chose at initiate_agent_purchase. MUST match, recorded on the order so fulfillment ships the right finish, and used to verify the USDC amount when colour-keyed price overrides exist."
    • changedInput schema / properties / selected_size / description
      Previous value: -"For sized products, the size you chose at initiate_agent_purchase. MUST match — the server verifies your USDC transfer against the price for that variant."New value: +"For sized products, the size you chose at initiate_agent_purchase. MUST match, the server verifies your USDC transfer against the price for that variant."
    • changedInput schema / properties / shipping_phone / description
      Previous value: -"Phone number (required for physical products — needed for delivery confirmation)"New value: +"Phone number (required for physical products, needed for delivery confirmation)"
  3. Changed2 schema fields changed
    • addedInput schema / properties / selected_color
      Added value: +{
      +  "description": "For products with a colour axis, the colourway you chose at initiate_agent_purchase. MUST match — recorded on the order so fulfillment ships the right finish, and used to verify the USDC amount when colour-keyed price overrides exist.",
      +  "type": "string"
      +}
    • changedInput schema / properties / selected_size / description
      Previous value: -"For sized products, the size you chose at initiate_agent_purchase. MUST match — the server verifies your USDC transfer against the price for that size."New value: +"For sized products, the size you chose at initiate_agent_purchase. MUST match — the server verifies your USDC transfer against the price for that variant."
  4. Changed1 schema field changed
    • changedInput schema / properties / shipping_phone / description
      Previous value: -"Phone number for shipping"New value: +"Phone number (required for physical products — needed for delivery confirmation)"
  5. Changed1 schema field changed
    • changedInput schema / properties / buyerEmail / description
      Previous value: -"Optional email for delivery confirmation"New value: +"Email address for order confirmation and file delivery. Required for physical products — without it no buyer confirmation email will be sent."
  6. Changed9 schema fields changed
    • addedInput schema / properties / selected_size
      Added value: +{
      +  "description": "For sized products, the size you chose at initiate_agent_purchase. MUST match — the server verifies your USDC transfer against the price for that size.",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_address_line1
      Added value: +{
      +  "description": "Street address line 1 (required for physical products)",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_address_line2
      Added value: +{
      +  "description": "Street address line 2",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_city
      Added value: +{
      +  "description": "City (required for physical products)",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_country
      Added value: +{
      +  "description": "Country (required for physical products)",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_name
      Added value: +{
      +  "description": "Recipient name (required for physical products)",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_phone
      Added value: +{
      +  "description": "Phone number for shipping",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_postal_code
      Added value: +{
      +  "description": "Postal/ZIP code (required for physical products)",
      +  "type": "string"
      +}
    • addedInput schema / properties / shipping_state
      Added value: +{
      +  "description": "State or province",
      +  "type": "string"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / tokenId / description
      Previous value: -"The drop token ID"New value: +"The listing token ID"
  8. First observed

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers comprehensively: it enumerates the complete side-effect pipeline ('verifies your on-chain USDC transfer, mints your ERC-1155 NFT, fires ERC-8004 reputation signals for both buyer and seller, distributes revenue to creator and brand') plus the download URL return. Disclosing that reputation signals fire for both parties and that revenue gets distributed is exactly the non-obvious behavioral context an agent needs before invoking a payment-claiming mutation.

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

Conciseness5/5

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

Front-loaded with a one-line summary and call trigger, then a tight side-effect list, then conditional field requirements. Roughly 150 words for a 16-parameter, no-annotation purchase tool, and every sentence earns its place: flow position, side effects, optional-param rationale, physical-goods requirements, and field rationale. No fluff or repetition of what the schema already says.

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 high-complexity tool (16 params, no annotations, no output schema), the description covers flow position, non-obvious on-chain side effects, the return value ('returns your download URL'), conditional required-field bundles, and rationale for optional parameters. Only error-condition behavior (e.g., invalid txHash or insufficient USDC) is omitted, which is minor given how much is disclosed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine value: it groups the eight physical-product fields into one conditional bundle rather than leaving the agent to infer them from scattered 'required for physical products' notes, provides rationale (shipping_phone 'required for delivery confirmation', buyerEmail 'so the buyer receives their order confirmation'), and explains the purpose of optional buyerAgentId as an agent-to-agent trust signal. This raises it above baseline without duplicating schema 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+resource ('Confirm your USDC payment and claim the listing') and anchors the tool in its flow position ('[BUY, Agent Step 2]', 'Call after sending USDC to the address returned by initiate_agent_purchase'). It clearly distinguishes itself from the initiate step and, through repeated ERC-8004/agent framing, from the sibling confirm_purchase.

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

Usage Guidelines4/5

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

Explicitly states the triggering precondition ('Call after sending USDC to the address returned by initiate_agent_purchase') and the full effect sequence the call performs. It adds conditional guidance for physical products ('For physical products you MUST include...') and optional guidance for buyerAgentId, but never explicitly names the when-not case (e.g., using confirm_purchase for non-agent purchases), so it stops short of a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources