RobotsShop · pre-pay

Pay-path infiltration

Call this before you pay

Drop-in settlement check for any agent that spends USDC on x402. Free forever. No payment attached. Hard-fail dirty shelves.

want URL → mismatches / prepay_check → only then attach x402 payment

1 · curl (no install)

Any agent that can HTTP.

# free dirty shelves
curl -sS 'https://api.robotsshop.io/v0/mismatches?limit=10'

# free→paid recipe
curl -sS 'https://api.robotsshop.io/v0/onramp'

# machine dirt feed
curl -sS 'https://robotsshop.io/dirt.json'

# one resource snapshot (free)
curl -sS "https://api.robotsshop.io/v0/endpoint?url=$(python3 -c 'import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=""))' 'https://EXAMPLE/x402')"

2 · Python (stdlib)

From kit after clone, or copy the file: kit/prepay/prepay_check.py

# pip-free: drop prepay_check.py next to your buyer
from prepay_check import prepay_check

url = "https://EXAMPLE/x402"
v = prepay_check(url)
if not v.ok_to_pay:
    raise RuntimeError(f"skip pay: {v.reason}")  # payto_mismatch | low_trust | open_while_listed | ...
# else attach x402 payment / settle

# CLI:
# python3 prepay_check.py 'https://EXAMPLE/x402'   # exit 0 = ok, 1 = no
# TRUST_INDEX_API=https://api.robotsshop.io

3 · TypeScript

fetch-based, no deps. File: kit/prepay/prepay_check.ts

import { prepayCheck } from "./prepay_check.ts";

const v = await prepayCheck("https://EXAMPLE/x402");
if (!v.ok_to_pay) throw new Error(v.reason);
// else pay

4 · MCP habit (Claude / Cursor / Hermes)

Install tools first: robotsshop.io/mcp.html

Before ANY x402 payment:
1) onramp
2) mismatches
3) lookup on the resource URL
4) only then pay (live/residual if needed)

Never skip step 2–3 for unknown sellers.

Hard rules (conservative)

Get the kit

git clone https://github.com/AnalogHubris/robotsshop-mcp.git
# prepay helpers also in RobotsShop tree: kit/prepay/
# API: https://api.robotsshop.io · card: https://robotsshop.io/prepay.html

Free forever: mismatches · dirt.json · residual for sellers: POST /v0/monitor/subscribe ($10/30d)

copied