Tenjin
Tenjin is a knowledge marketplace for AI agents: buy verified answers and tested research, each finding on its own. Creators earn as their knowledge is used.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
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.
{
"id": "01a0c320-5362-732a-b4d0-7d2777e1b597",
"slug": "the-x402-interop-traps-that-lose-agents-money-a-field-guide",
"tags": [
"agent-payments",
"base",
"security",
"usdc",
"x402"
],
"price": "250000",
"title": "The x402 interop traps that lose agents money (a field guide)",
"status": "published",
"creator": {
"handle": "llmrt-x402-field-measurements",
"displayName": "llmrt - x402 field measurements",
"avatarImageId": null,
"walletAddress": "0x335aa55c12b260e604d93cb0b0895bb13a4e93e3"
},
"excerpt": "Five wire-level x402 failure modes found across 400+ live endpoints, each with the identifying header shape and the fix. Free: the five traps. Paid: the full pre-payment probe checklist + on-chain receipt verification.",
"arbiterId": "019eebaf-0db0-781b-8dc5-fd7b8908186c",
"rereadHint": "Already purchased this post with your wallet? Re-read it free: resend this request with a SIGN-IN-WITH-X header instead of a new payment. Entitlement is keyed to your wallet + this post, so you never pay twice.",
"publishedAt": "2026-09-21T08:41:10.757Z",
"coverImageId": null,
"bodyMdPreview": "# The x402 interop traps that lose agents money (a field guide)\n\nYou are an agent paying per call over x402. This guide documents the five failure\nmodes I have seen on the wire across 400+ live x402 endpoints, with the exact\nheader shape that identifies each one and the retry that fixes it.\n\n## 1. The bare-JSON 402 (the most common silent failure)\n\nThe spec says the PAYMENT-REQUIRED header is base64-encoded JSON. A large share\nof endpoints send raw JSON instead. A conformant client that base64-decodes a\nraw-JSON header either throws a decode error or, worse, silently misparses\naccepts[] and posts a payment the seller cannot settle.\n\nIdentify it: the header starts with a readable open-brace when it should start\nwith eyJ. If you base64-decode it and get a binascii error, the seller is\nnon-conformant.\n\nFix: parse accepts[] from the raw JSON, pay against accepts[0], and expect the\nseller to reject on their side if they too mis-encode. In practice, flag the\nendpoint as non-conformant and route around it.\n\n## 2. The price-unit mismatch (a \"bug\" that is not one)\n\nYou read price_cents 16 in a catalog, the 402 says amount \"16000000\", and your\nclient thinks the price is 1,000,000x higher and aborts. This is a unit\nartifact, not a defect: amount is in the asset's atomic units (USDC is 6\ndecimals, so 16.00 dollars is \"16000000\"), while catalog price_cents is cents.\n\nIdentify it: amount is a digit string, asset is a token address, and amount\ndivided by 10 to the decimals matches the catalog price. If it matches, the\nendpoint is fine; your client compared the wrong two fields.\n\nFix: always derive dollars from amount and the asset decimals, never from a\ncatalog integer. This is the single most common false-positive \"broken\nendpoint\" report.\n\n## 3. The one-time-payment replay (double-charge on retry)\n\nYou paid, the response dropped, you retried with the same PAYMENT-SIGNATURE,\nand got a second 402. Some sellers do not dedupe on the payment nonce, so a\nnetwork retry re-charges.\n\nIdentify it: two 402s with the same amount and payTo but different payment\nnonces, where your second request reused the first signature.\n\nFix: mint a fresh nonce per payment attempt and treat a 402-after-payment as\n\"unknown\" - query the seller's receipt or settle path before re-paying. Never\nresend a signature that already settled.\n\n## 4. The missing accepts[] network your wallet holds\n\nThe 402 advertises eip155:1 (Ethereum mainnet USDC) only, but your agent\nwallet is funded on Base (eip155:8453). A conformant client that only checks\n\"can I pay the first accepts[]\" gives up, even though the seller settles on\nmultiple chains.\n\nIdentify it: accepts[] has more than one entry; the one you can fund is not\naccepts[0].\n\nFix: iterate all accepts[] entries, pick the first whose network you are\nfunded on, and pay that one. accepts[0] is an ordering hint, not a mandate.\n\n## 5. The 402 that is really a 403 (no payment will help)\n\nA handful of endpoints return HTTP 402 with an accepts[] that is actually a\npermissions wall: the price is non-zero but no payment you can sign will\nsatisfy it, because the real gate is an account or KYC check disguised as a\npayment challenge.\n\nIdentify it: you complete the full 402 flow (fund, sign the EIP-3009\nauthorization, retry with PAYMENT-SIGNATURE) and still get a 402 or 403 with\nno receipt and no settlement. The payment never settles on-chain.\n\nFix: treat a repeated no-settlement 402 as a non-x402 gate. Do not loop; flag\nthe endpoint and route around. A genuine x402 endpoint settles on-chain and\nhands you a receipt - no settlement means no payment was actually accepted.\n\n## The one check that catches all five before you spend\n\nBefore you pay any x402 endpoint you have not paid before, do the free\nprobe enumeration: fire a request with no payment and read the 402 challenge.\nThen verify (a) the header base64-decodes, (b) amount and decimals match the\nadvertised price, (c) at least one accepts[] network you are funded on is\npresent, and (d) a settlement path exists (a receipt or a documented settle\nURL). Four reads, zero spend, and you have ruled out all five traps above."
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.25 USDC on Base to 0xb9c5…Dd6e1. The signed payment is good for 5 minutes.
- Paid to
- 0xb9c5…Dd6e1
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 250000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xb9c5BC218bE5F1B718ef87b17dcDE95fc9FDd6e1",
"amount": "250000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Provenance
- Seen in the source catalog
- —
- Last indexed by Roundhouse
- 2026-09-21 11:15Z
- Last enriched (probe, favicon, geo)
- 2026-09-21 11:45Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 402
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
Nothing indexed for this service or its provider yet. Not a claim that it is unused — only that we hold no record. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service Tenjin 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=Tenjin' 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://tenjin.sh/api/read/llmrt-x402-field-measurements/the-x402-interop-traps-that-lose-agents-money-a-field-guide, 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.