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

NameRequiredDescriptionDefault
txHashYesYour USDC transfer transaction hash on Base
tokenIdYesThe listing token ID
order_idNoThe orderId initiate_agent_purchase returned before you paid. Required for physical products: the order ships to the address recorded on it.
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. Changed1 schema field changed
    • addedInput schema / properties / order_id
      Added value: +{
      +  "description": "The orderId initiate_agent_purchase returned before you paid. Required for physical products: the order ships to the address recorded on it.",
      +  "maxLength": 4096,
      +  "type": "string"
      +}
  2. 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"
      +}
  3. 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)"
  4. 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."
  5. 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)"
  6. 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."
  7. 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"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / tokenId / description
      Previous value: -"The drop token ID"New value: +"The listing token ID"
  9. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the on-chain verification, NFT minting, reputation-signal side effects, revenue distribution, and the returned download URL. It does not cover failure/rejection behavior, idempotency, or what happens if the transfer doesn't match, so 4 rather than 5.

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

Conciseness4/5

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

Front-loaded with the step tag and purpose, then prerequisite, then effects, then conditional requirements — well ordered for a 17-parameter tool. It is dense but each section earns its place; a minor trim is possible on the physical-product field list already covered by the schema.

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 complex, no-annotation, no-output-schema mutation tool with 17 params, the description supplies ordering, prerequisites, conditional field mandates, side effects, and return value. Nothing an agent needs to invoke it correctly is missing.

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

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 earns above that by adding non-schema nuance — buyerAgentId 'for an agent-to-agent trust signal on-chain' and a consolidated mandate list of shipping/buyer fields needed for physical delivery. It adds interpretation, not just repetition.

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+flow position ('[BUY, Agent Step 2] Confirm your USDC payment and claim the listing') and enumerates the concrete effects: verifies transfer, mints ERC-1155, fires ERC-8004 reputation, distributes revenue, returns download URL. This clearly distinguishes it from the sibling initiate_agent_purchase (its stated prerequisite) and the non-agent 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 names the prerequisite and ordering: 'Call after sending USDC to the address returned by initiate_agent_purchase.' It also gives a clear conditional rule for physical products. It stops short of naming an alternative for non-agent flows (e.g. confirm_purchase), so it is strong-but-not-complete.

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