x402 seller payability check

$0.10 per call · USDC via x402 · POST /api/seller-payability

Buy one call from an x402 seller endpoint right now and report exactly what happened: the unpaid call's status, the 402 decoded (accepts, chains, payTo, asset, price), whether the accept's EIP-712 domain name matches the token it names (the defect that silently makes a whole catalog unpayable), whether a stock client's signed payment was accepted, the settlement receipt and transaction, a slice of the response body, and the time each leg took. Send POST /api/seller-payability with the required field url and pay $0.10 per call over x402 with USDC on an EVM chain. It returns a JSON object with url, method, checkedAt, payable, unpaidCall and 5 more.

Ends in plain-English flags, never a score. This is the live counterpart to seller-dossier, which reports what we already know: this one spends real USDC from our own wallet to find out. Point it at your own endpoint before you launch, or at a seller you are about to route money to. Up to $0.02 of the seller's price per check.

Category: x402 seller intelligence · Tags: x402 seller payability payment 402 check verify settlement · Also found as: payability-check can-i-pay-this seller-payment-check x402-payability

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
urlstringyesThe seller endpoint to check (https), e.g. https://api.example.com/tools/summarize Also accepted as link, uri, href, page.
methodstringnoGET or POST (default POST) - never a verb that could mutate the seller
bodyobjectnoOptional JSON body the seller's route expects (POST only)
maxUsdnumbernoMost to spend on the seller's own price, default 0.01, capped at 0.02

Example request

curl -i -X POST https://agent402.tools/api/seller-payability \
  -H "Content-Type: application/json" \
  -d '{"url":"https://agent402.tools/api/hash","method":"POST","body":{"text":"hello"}}'

Without payment this returns HTTP 402 Payment Required with the exact price for seller-payability; any x402 v2 or MPP client pays it and retries.

Example response

{
  "url": "https://agent402.tools/api/hash",
  "method": "POST",
  "checkedAt": "2026-09-11T02:00:00.000Z",
  "payable": true,
  "unpaidCall": {
    "status": 402,
    "contentType": "application/json",
    "error": null,
    "ms": 180,
    "bodySlice": "{}"
  },
  "challenge": {
    "readable": true,
    "networks": [
      "eip155:8453"
    ],
    "priceUsd": 0.01,
    "payTo": "0x…",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "pricedFrom": "eip155:8453",
    "accepts": []
  },
  "domainFindings": [
    {
      "network": "eip155:8453",
      "verdict": "matches",
      "advertisedName": "USD Coin",
      "expectedName": "USD Coin",
      "chain": "Base"
    }
  ],
  "payment": {
    "attempted": true,
    "status": 200,
    "settled": true,
    "error": null,
    "ms": 2400,
    "receipt": {
      "network": "eip155:8453",
      "payer": "0x…",
      "transaction": "0x…",
      "success": true
    }
  },
  "responseSlice": "{\"summary\":\"…\"}",
  "flags": [
    "a stock buyer can pay this endpoint and get a result: nothing to fix"
  ]
}
FieldTypeAlways presentIn the example
urlstringnohttps://agent402.tools/api/hash
methodstringnoPOST
checkedAtstringno2026-09-11T02:00:00.000Z
payablebooleannotrue
unpaidCallobjectno5 fields: status, contentType, error, ms, bodySlice
challengeobjectno7 fields: readable, networks, priceUsd, payTo, asset, pricedFrom
domainFindingsarray of objectsno1 item in the example
paymentobjectno6 fields: attempted, status, settled, error, ms, receipt
responseSlicestringno{"summary":"…"}
flagsarray of stringno1 item in the example

From an MCP client

catalog.call {
  "slug": "seller-payability",
  "params": {
    "url": "https://agent402.tools/api/hash",
    "method": "POST",
    "body": {
      "text": "hello"
    }
  }
}

The hosted connector at https://agent402.tools/mcp needs a payment for seller-payability; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/seller-payability", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "url": "https://agent402.tools/api/hash",
    "method": "POST",
    "body": {
      "text": "hello"
    }
  }),
});

Related tools

x402 seller dossier

$0.05 · POST /api/seller-dossier

Everything Agent402 knows about one x402 seller origin, in one read: identity and crawl history, the catalog with the pr…

Check an x402 seller's trust evidence

FREE w/ compute · or $0.005 · GET /api/x402/seller-trust

Trust evidence for any x402 seller origin: is it indexed, does its manifest parse, how many tools does it publish, which…

Verify x402 settlement

$0.004 · GET /api/x402-verify

Confirm a USDC payment actually settled: given a tx hash (and network), returns whether it succeeded and the USDC transf…

Route and execute

$0.01 · POST /api/route/execute

Describe a task (or name a slug) and the Smart Order Router resolves the best-matching tool and RUNS it in the same call…

Route and execute (max tier)

$0.55 · POST /api/route/execute-max

Describe a task (or name a slug) and the Smart Order Router resolves the best-matching tool and RUNS it in the same call…

Route and execute (plus tier)

$0.05 · POST /api/route/execute-plus

Describe a task (or name a slug) and the Smart Order Router resolves the best-matching tool and RUNS it in the same call…