x402 seller dossier

$0.05 per call · USDC via x402 · POST /api/seller-dossier

Everything Agent402 knows about one x402 seller origin, in one read: identity and crawl history, the catalog with the provenance of every price (live-402 or manifest, when it was read, whether it is stale or disagrees with the seller's own declaration), advertised wallets against the wallets that were actually paid (own chain evidence, inherited wallets, shared claims), settlement evidence per source (our Base leaderboard, Coinbase Bazaar, Solana SPL credits, MPP transfers), the router's own dispatch verdict per chain with its reason and any recent refusal, and what happened the times our router paid it. Send POST /api/seller-dossier with the required field origin and pay $0.05 per call over x402 or MPP (there is no free tier). It returns a JSON object with origin, listed, identity, health, catalog and 8 more.

Ends in plain-English flags, never a score. Deterministic and offline: assembled from our crawl, probes, ledger and chain reads, never a live fetch of the seller. Priced above the list endpoints because it is the assembled record, not a listing.

Category: x402 seller intelligence · Tags: x402 seller dossier due-diligence trust reputation counterparty verify

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
originstringyesSeller origin or bare host, e.g. https://example.com or example.com

Example request

curl -i -X POST https://agent402.tools/api/seller-dossier \
  -H "Content-Type: application/json" \
  -d '{"origin":"agent402.tools"}'

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

Example response

{
  "origin": "https://seller.example",
  "listed": true,
  "identity": {
    "displayName": "Example Seller",
    "homepage": "https://seller.example",
    "discoveryPath": "/.well-known/x402",
    "mppDualStack": false,
    "originResponded": true,
    "crawlError": null,
    "robotsBlocked": false,
    "lastCrawledAt": "2026-09-08T01:00:00.000Z",
    "firstRegisteredAt": "2026-08-01T00:00:00.000Z",
    "lastRoutableSeenAt": "2026-09-08T01:00:00.000Z",
    "lastSettledSeenAt": null,
    "listingTextLooksInjected": false
  },
  "health": {
    "crawlHealthScore": 1,
    "routable": true,
    "paywallProbe": {
      "ok": true,
      "status": 402,
      "url": "https://seller.example/api/x",
      "at": "2026-09-08T01:00:00.000Z",
      "mpp": false,
      "error": null
    },
    "note": "crawlHealthScore says the manifest parsed on recent crawls; paywallProbe says a paid route answered a real 402. Read both."
  },
  "catalog": {
    "toolCount": 2,
    "paidToolCount": 2,
    "priceRangeUsd": {
      "min": 0.01,
      "max": 0.04
    },
    "networksAdvertised": [
      "eip155:8453"
    ],
    "tools": [
      {
        "method": "POST",
        "route": "/api/x",
        "name": "X",
        "priceUsd": 0.01,
        "networks": [
          "eip155:8453"
        ],
        "price": {
          "source": "live-402",
          "observedAt": "2026-09-08T01:00:00.000Z",
          "carriedForward": false,
          "stale": false,
          "originDeclaredUsd": 0.01,
          "disagreesWithOrigin": false,
          "conflict": null
        },
        "method_provenance": {
          "inferred": false,
          "correctedFrom": null
        },
        "networksVerifiedAt": null,
        "networksVerificationDue": false,
        "urlTemplate": null,
        "dispatch": "settlement_required",
        "ourPaidCalls": null
      }
    ],
    "toolsTruncated": false,
    "priceProvenance": {
      "stale": 0,
      "carriedForward": 0,
      "disagreeWithOrigin": 0,
      "unpriced": 0,
      "urlTemplates": 0,
      "methodInferred": 0,
      "methodCorrected": 0,
      "networksVerificationDue": 0
    }
  },
  "wallets": {
    "advertisedByNetwork": {
      "eip155:8453": [
        "0x1111111111111111111111111111111111111111"
      ]
    },
    "base": {
      "advertised": "0x1111111111111111111111111111111111111111",
      "ownEvidence": {
        "settled": 12,
        "payers": 4,
        "note": "chain join on this origin's OWN advertised address, plus any committed seed"
      },
      "inheritedFrom": [],
      "inheritedNote": null,
      "sharedWithOrigins": []
    },
    "routerDispatchDetail": null
  },
  "settlementEvidence": {
    "base": {
      "source": "on-chain leaderboard (Base USDC, ours)",
      "callsSettled": 12,
      "uniqueBuyers": 4,
      "totalUsd": 0.18,
      "wallets": [
        "0x1111111111111111111111111111111111111111"
      ],
      "window": null
    },
    "bazaar": {
      "source": "Coinbase Bazaar, last 30 days (their measurement, not ours)",
      "calls30d": 30,
      "payers30d": 5,
      "lastCalledAt": "2026-09-07T20:00:00.000Z",
      "payTos": [
        "0x1111111111111111111111111111111111111111"
      ]
    },
    "solana": {
      "source": "Solana SPL leaderboard",
      "observed": false
    },
    "mpp": {
      "source": "MPP index",
      "observed": false
    }
  },
  "router": {
    "eligible": false,
    "reason": "settlement_required",
    "byChain": {
      "base": {
        "eligible": false,
        "reason": "settlement_required"
      }
    },
    "executeVia": null,
    "executeViaCallableNow": false,
    "gate": {
      "settlementThreshold": 50,
      "distinctPayersThreshold": 3,
      "underlyingCapUsd": 0.005,
      "cheapestPaidToolUsd": 0.01
    },
    "refusals": [],
    "deliveryFailures": []
  },
  "delivery": {
    "source": "route-and-execute paid calls (ours)",
    "routesObserved": 0,
    "calls": 0,
    "kept": 0,
    "rows": []
  },
  "flags": [
    "router verdict: settlement_required",
    "the cheapest priced route ($0.01) is above the router's $0.005 underlying cap for the cheapest tier"
  ],
  "caveats": [
    "every count here is a floor: it is what our crawl, probes and chain reads have observed, never the seller's total"
  ],
  "evidenceSource": "x402 seller crawl + on-chain settlement + Bazaar + MPP index + our own paid calls",
  "generatedAt": "2026-09-08T02:00:00.000Z"
}
FieldTypeAlways presentIn the example
originstringnohttps://seller.example
listedbooleannotrue
identityobjectno12 fields: displayName, homepage, discoveryPath, mppDualStack, originResponde...
healthobjectno4 fields: crawlHealthScore, routable, paywallProbe, note
catalogobjectno7 fields: toolCount, paidToolCount, priceRangeUsd, networksAdvertised, tools,...
walletsobjectno3 fields: advertisedByNetwork, base, routerDispatchDetail
settlementEvidenceobjectno4 fields: base, bazaar, solana, mpp
routerobjectno8 fields: eligible, reason, byChain, executeVia, executeViaCallableNow, gate
deliveryobjectno5 fields: source, routesObserved, calls, kept, rows
flagsarray of stringno2 items in the example
caveatsarray of stringno1 item in the example
evidenceSourcestringnox402 seller crawl + on-chain settlement + Bazaar + MPP index + our own paid c...
generatedAtstringno2026-09-08T02:00:00.000Z

From an MCP client

catalog.call {
  "slug": "seller-dossier",
  "params": {
    "origin": "agent402.tools"
  }
}

The hosted connector at https://agent402.tools/mcp needs a payment for seller-dossier; 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-dossier", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "origin": "agent402.tools"
  }),
});

Related tools

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…

x402 seller payability check

$0.10 · 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 …

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…

Route and execute (pro tier)

$3.3 · POST /api/route/execute-pro

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