x402 seller dossier
POST /api/seller-dossierEverything 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. 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.
Input
| Field | Type | Description |
|---|---|---|
origin * | string | Seller origin or bare host, e.g. https://example.com or example.com |
Example output
{
"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": []
},
"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"
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/api/seller-dossier \
-H "Content-Type: application/json" \
-d '{"origin":"agent402.tools"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
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();
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
GET /api/x402/seller-trustTrust evidence for any x402 seller origin: is it indexed, does its manifest parse, how many tools does it publish, which…
try in playground →