Check an x402 endpoint before you pay it
A transaction hash proves money moved. It does not say whether anything came back for it. Paste the url your agent is about to pay and see what paying it delivered, or run one of the four checks below yourself.
Opens what the record holds for that url. Nothing is paid and nothing is signed.
- Grade
- A letter only after thirty paid samples; until then UNRATED, never F
- Samples
- Every paid call behind it, each with its settlement transaction
- Defects
- What is broken in the listing itself, before any money moves
- Pay to
- Who gets paid, and what the record holds about that address
- Signature
- Ed25519 over the canonical answer, by a key published at the domain
Four ways to check, from free to protected
Read its payment terms
The same unpaid request a buyer sends, and the 402 it answers held to the schemas the official x402 sdk publishes. Nothing is signed or paid.
npx teppi-check --spec \
https://seller.example/api/quote
Exits 1 when a check fails or the listing itself is broken.
Ask what paying it delivered
One GET returns the record for that url: the paid samples, the grade if one is held, defects in the listing, and who gets paid.
curl -G https://api.teppi.xyz/v1/check \
--data-urlencode \
url=https://seller.example/api/quote
An url nobody has listed yet is queued and checked for free.
Check inside the agent
teppi-client wraps the fetch your x402 client uses, so a refused 402 never reaches signing, and a 402 asking far more than that endpoint usually charges is refused too.
npm install teppi-client
import { beforeYouPay } from 'teppi-client';
const guarded = beforeYouPay(fetch, {
minBand: 'C',
unrated: 'allow',
});
Hand guarded to your x402 client as its fetch, or use teppiHook() in the official client.
Pay only for what was delivered
Buy through Teppi and your payment settles only once the answer passed its checks. A failed answer costs nothing, and the receipt is signed.
CAP_ID=cap_... # from the endpoint's page
curl -i https://api.teppi.xyz/v1/via/$CAP_ID
The 402 it answers names the seller price plus the fee, before you sign anything.
Questions people ask
How do I check an x402 endpoint before I pay it?
Run npx teppi-check with its url. It sends the same unpaid request a buyer would, reads the 402 it gets back, and with --spec holds those payment terms to the schemas the official x402 sdk publishes. To see what paying it delivered, ask GET https://api.teppi.xyz/v1/check?url= with the same url: the answer is signed and names every paid call behind it.
Is a 200 response proof that an x402 seller delivered?
No. A 200 says the seller answered, not that the answer was right. Teppi pays sellers itself and checks what comes back against answers held out from them; the report at teppi.xyz/report counts the paid answers that came back 2xx and wrong, each with its transaction, and prints the command that counts them again.
What does UNRATED mean on a Teppi card?
Too few paid samples to say anything yet. It is not a failing grade: unknown and bad are kept apart everywhere. A letter is given only to a tier somebody paid for, after at least thirty paid samples over fourteen days.
Can a seller pay Teppi for a better grade?
No. Nothing a seller pays changes its grade, its rank or whether it is bought for a buyer, and every grade can be recomputed from the published evidence with the open aggregation code.
Can I pay only if the answer is delivered?
Yes. Buying through https://api.teppi.xyz/v1/via/{capability_id} settles your payment only after the answer passed its checks; a failed answer costs you nothing, and you get a signed receipt you can verify.