AgentPay Spend Cap & Receipts

A stateful, multi-chain spending session for AI agents. One session enforces a hard USDC budget cap across every tool call, with a verifiable receipt and running ledger for each payment — not a one-shot budget check, but persistent spend governance with a full audit trail. USDC on Base (standard x402) or Stellar (via the AgentPay SDK).

OtherLiveeip155:8453Exactvia cdp
BudgetReceiptsSessionSpend-controlAgent-commerce
Calls · 30d
2→ 0%
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 30 snapshots so far.
$2.29
Verified settled volume
248 settlements proven x402 by their on-chain EIP-3009 marker.
$0.010
Listed price
As published in the catalog. Always read the live 402 before paying.
2
Calls · 30d
Upstream's own call count for this endpoint, not ours.
2
Unique payers · 30d
Last called 2026-09-04 07:01Z
Upstream on-chain volume
Reported by the source catalog.
Paid to
0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "error": "Payment required",
  "pay_to": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2",
        "assetTransferMethod": "eip3009"
      },
      "payTo": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "mimeType": "application/json",
      "resource": "https://agentpay.tools/v1/session/create",
      "description": "A stateful, multi-chain spending session for AI agents. One session enforces a hard USDC budget cap across every tool call, with a verifiable receipt and running ledger for each payment — not a one-shot budget check, but persistent spend governance with a full audit trail. USDC settles on Base (standard x402) or Stellar (via the AgentPay SDK). Costs $0.01 USDC once; returns a session_id and budget config. Enforce the cap client-side with the AgentPay SDK (from agentpay import Session).",
      "maxAmountRequired": "10000",
      "maxTimeoutSeconds": 300
    }
  ],
  "network": "eip155:8453",
  "resource": {
    "url": "https://agentpay.tools/v1/session/create",
    "tags": [
      "budget",
      "receipts",
      "session",
      "spend-control",
      "agent-commerce"
    ],
    "mimeType": "application/json",
    "description": "A stateful, multi-chain spending session for AI agents. One session enforces a hard USDC budget cap across every tool call, with a verifiable receipt and running ledger for each payment — not a one-shot budget check, but persistent spend governance with a full audit trail. USDC on Base (standard x402) or Stellar (via the AgentPay SDK).",
    "serviceName": "AgentPay Spend Cap & Receipts"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "label": "session",
            "max_spend": "0.10",
            "agent_address": "0x0000000000000000000000000000000000000000"
          },
          "type": "http",
          "method": "POST",
          "bodyType": "json"
        },
        "errors": [
          {
            "body": {
              "error": "<summary>",
              "reason": "<machine-readable reason>"
            },
            "when": "No payment attached (this challenge), or the attached payment failed verification: wrong amount/recipient, memo mismatch, expired, or already used (replay)",
            "retry": "Re-request the challenge and pay again",
            "status": 402
          },
          {
            "body": {
              "detail": [
                {
                  "loc": [
                    "body"
                  ],
                  "msg": "<what is wrong>",
                  "type": "<error type>"
                }
              ]
            },
            "when": "Request body present but malformed (invalid JSON or wrong field types) WITH a payment header attached — checked BEFORE settlement, so the payment is never consumed. An unpaid malformed request gets the 402, not a 422",
            "retry": "Fix the body and retry with a fresh payment",
            "status": 422
          },
          {
            "body": {
              "detail": "Tool '<name>' not found"
            },
            "when": "Unknown tool name",
            "status": 404
          },
          {
            "body": {
              "error": "Rate limit exceeded"
            },
            "when": "Rate limited (per-IP and per-wallet limits)",
            "retry": "Back off and retry after a minute",
            "status": 429
          },
          {
            "body": {
              "tool": "<name>",
              "error": "Tool execution failed",
              "payment_status": "refund_pending"
            },
            "when": "Payment settled on-chain but tool execution failed — the payment is marked refund_pending automatically; you are not charged for a failed call",
            "status": 500
          },
          {
            "body": {
              "detail": "<what is unavailable>"
            },
            "when": "Tool temporarily unavailable, or the gateway cannot persist the challenge (fail-closed)",
            "retry": "Retry shortly",
            "status": 503
          }
        ],
        "output": {
          "type": "json",
          "example": {
            "receipt": {
              "network": "eip155:8453",
              "tx_hash": "0xee85d8dd374b5d1cb40bfa441086af557d356acc2bb4d5819f56331fce42adee",
              "amount_usdc": "0.01"
            },
            "max_spend": "0.10",
            "created_at": "2026-05-29T00:00:00Z",
            "session_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
            "gateway_url": "https://agentpay.tools",
            "tools_endpoint": "https://agentpay.tools/tools"
          }
        }
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "type": "object",
            "required": [
              "type",
              "method",
              "body"
            ],
            "properties": {
              "body": {
                "type": "object",
                "required": [
                  "agent_address"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Optional human-readable session label"
                  },
                  "max_spend": {
                    "type": "string",
                    "description": "Hard budget cap in USDC, e.g. '0.10'"
                  },
                  "agent_address": {
                    "type": "string",
                    "description": "Paying agent's EVM wallet address"
                  }
                }
              },
              "type": {
                "type": "string"
              },
              "method": {
                "type": "string"
              },
              "bodyType": {
                "type": "string"
              }
            }
          }
        }
      },
      "description": "A stateful, multi-chain spending session for AI agents: a hard USDC budget cap across every tool call, with a verifiable receipt and running ledger per payment. Not a one-shot budget check — persistent spend governance with a full audit trail. USDC on Base (standard x402) or Stellar (via the AgentPay SDK)."
    }
  },
  "payment_id": "586465c8-6398-4fec-af82-250b1df3deca",
  "amount_usdc": "0.01",
  "x402Version": 2,
  "instructions": "Sign an EIP-3009 transferWithAuthorization for the amount above, encode as base64 JSON PaymentPayload, and retry with header PAYMENT-SIGNATURE: <base64_payload>",
  "payment_options": {
    "base": {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
      "scheme": "exact",
      "network": "eip155:8453",
      "amount_usdc": "0.01",
      "instructions": "Sign an EIP-3009 transferWithAuthorization for the amount above, encode as base64 JSON PaymentPayload, and retry with header PAYMENT-SIGNATURE: <base64_payload>",
      "amount_atomic": "10000",
      "maxTimeoutSeconds": 300
    },
    "stellar": {
      "note": "Classic Stellar payment + text memo (payment_id), verified via Horizon — not the standard @x402/stellar Soroban scheme. Pay with the AgentPay SDK (pip install agentpay-x402) or manually per instructions.",
      "asset": "USDC",
      "header": "X-Payment: tx_hash=<hash>,from=<addr>,id=586465c8-6398-4fec-af82-250b1df3deca",
      "pay_to": "GB7THTEVT2T7CZQ5TFUOIQSI32XCJ7BHWS35OBTAI2V4FNL7BXZZ2GM2",
      "scheme": "agentpay-classic-memo",
      "network": "mainnet",
      "payment_id": "586465c8-6398-4fec-af82-250b1df3deca",
      "amount_usdc": "0.01"
    }
  }
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.01USDC≈ $0.01 USD
on Base · exact scheme

Pay 0.01 USDC on Base to 0xE8B2…843b7. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
10000 smallest units
Buys
AgentPay tool call
Returns
application/json
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2",
      "assetTransferMethod": "eip3009"
    },
    "payTo": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
    "amount": "10000",
    "scheme": "exact",
    "network": "eip155:8453",
    "mimeType": "application/json",
    "resource": "https://agentpay.tools/v1/session/create",
    "description": "AgentPay tool call",
    "outputSchema": {
      "input": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Optional session label"
          },
          "max_spend": {
            "type": "string",
            "description": "Budget cap in USDC, e.g. '0.10'"
          },
          "agent_address": {
            "type": "string",
            "description": "Paying agent's wallet address"
          }
        }
      },
      "errors": [
        {
          "body": {
            "error": "<summary>",
            "reason": "<machine-readable reason>"
          },
          "when": "No payment attached (this challenge), or the attached payment failed verification: wrong amount/recipient, memo mismatch, expired, or already used (replay)",
          "retry": "Re-request the challenge and pay again",
          "status": 402
        },
        {
          "body": {
            "detail": [
              {
                "loc": [
                  "body"
                ],
                "msg": "<what is wrong>",
                "type": "<error type>"
              }
            ]
          },
          "when": "Request body present but malformed (invalid JSON or wrong field types) WITH a payment header attached — checked BEFORE settlement, so the payment is never consumed. An unpaid malformed request gets the 402, not a 422",
          "retry": "Fix the body and retry with a fresh payment",
          "status": 422
        },
        {
          "body": {
            "detail": "Tool '<name>' not found"
          },
          "when": "Unknown tool name",
          "status": 404
        },
        {
          "body": {
            "error": "Rate limit exceeded"
          },
          "when": "Rate limited (per-IP and per-wallet limits)",
          "retry": "Back off and retry after a minute",
          "status": 429
        },
        {
          "body": {
            "tool": "<name>",
            "error": "Tool execution failed",
            "payment_status": "refund_pending"
          },
          "when": "Payment settled on-chain but tool execution failed — the payment is marked refund_pending automatically; you are not charged for a failed call",
          "status": 502
        },
        {
          "body": {
            "detail": "<what is unavailable>"
          },
          "when": "Tool temporarily unavailable, or the gateway cannot persist the challenge (fail-closed)",
          "retry": "Retry shortly",
          "status": 503
        }
      ],
      "output": {
        "receipt": {
          "network": "base",
          "tx_hash": "0x...",
          "amount_usdc": "0.01"
        },
        "max_spend": "0.10",
        "created_at": "2026-05-27T00:00:00Z",
        "session_id": "uuid",
        "gateway_url": "https://agentpay.tools",
        "agent_address": "G...",
        "tools_endpoint": "https://agentpay.tools/tools"
      }
    },
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "body": {
          "label": "session",
          "max_spend": "0.10",
          "agent_address": "0x0000000000000000000000000000000000000000"
        },
        "type": "http",
        "method": "POST",
        "bodyType": "json"
      },
      "errors": [
        {
          "body": {
            "error": "<summary>",
            "reason": "<machine-readable reason>"
          },
          "when": "No payment attached (this challenge), or the attached payment failed verification: wrong amount/recipient, memo mismatch, expired, or already used (replay)",
          "retry": "Re-request the challenge and pay again",
          "status": 402
        },
        {
          "body": {
            "detail": [
              {
                "loc": [
                  "body"
                ],
                "msg": "<what is wrong>",
                "type": "<error type>"
              }
            ]
          },
          "when": "Request body present but malformed (invalid JSON or wrong field types) WITH a payment header attached — checked BEFORE settlement, so the payment is never consumed. An unpaid malformed request gets the 402, not a 422",
          "retry": "Fix the body and retry with a fresh payment",
          "status": 422
        },
        {
          "body": {
            "detail": "Tool '<name>' not found"
          },
          "when": "Unknown tool name",
          "status": 404
        },
        {
          "body": {
            "error": "Rate limit exceeded"
          },
          "when": "Rate limited (per-IP and per-wallet limits)",
          "retry": "Back off and retry after a minute",
          "status": 429
        },
        {
          "body": {
            "tool": "<name>",
            "error": "Tool execution failed",
            "payment_status": "refund_pending"
          },
          "when": "Payment settled on-chain but tool execution failed — the payment is marked refund_pending automatically; you are not charged for a failed call",
          "status": 502
        },
        {
          "body": {
            "detail": "<what is unavailable>"
          },
          "when": "Tool temporarily unavailable, or the gateway cannot persist the challenge (fail-closed)",
          "retry": "Retry shortly",
          "status": 503
        }
      ],
      "output": {
        "type": "json",
        "example": {
          "receipt": {
            "network": "eip155:8453",
            "tx_hash": "0xee85d8dd374b5d1cb40bfa441086af557d356acc2bb4d5819f56331fce42adee",
            "amount_usdc": "0.01"
          },
          "max_spend": "0.10",
          "created_at": "2026-05-29T00:00:00Z",
          "session_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
          "gateway_url": "https://agentpay.tools",
          "tools_endpoint": "https://agentpay.tools/tools"
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method",
            "body"
          ],
          "properties": {
            "body": {
              "type": "object",
              "required": [
                "agent_address"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Optional human-readable session label"
                },
                "max_spend": {
                  "type": "string",
                  "description": "Hard budget cap in USDC, e.g. '0.10'"
                },
                "agent_address": {
                  "type": "string",
                  "description": "Paying agent's EVM wallet address"
                }
              }
            },
            "type": {
              "type": "string"
            },
            "method": {
              "type": "string"
            },
            "bodyType": {
              "type": "string"
            }
          }
        }
      }
    },
    "description": "A stateful, multi-chain spending session for AI agents: a hard USDC budget cap across every tool call, with a verifiable receipt and running ledger per payment. Not a one-shot budget check — persistent spend governance with a full audit trail. USDC on Base (standard x402) or Stellar (via the AgentPay SDK)."
  }
}

Provenance

Seen in the source catalog
2026-09-04 07:01Z
Last indexed by Roundhouse
2026-09-24 07:30Z
Last enriched (probe, favicon, geo)
2026-09-20 17:15Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 30 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service AgentPay Spend Cap & Receipts and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=AgentPay%20Spend%20Cap%20%26%20Receipts'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://agentpay.tools/v1/session/create, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.