Touchstone is a drop-in MCP server — hosted and live. Point any MCP client — Claude Desktop, Claude Code, any host — at one URL and your agent can check who it's paying before a cent moves. No install, no key. To pay through the atomic gate while keeping its own signing key, run the server against your own node — Touchstone only proposes; the agent verifies and signs.
Your rule, enforced inside the payment
Connect — one command, hosted
$ claude mcp add --transport http \ touchstone https://mcp.touchstonelabs.tech/mcp # or point any MCP client at that URL — no install, no key # not on MCP? pay the same assessment over x402: # GET https://api.touchstonelabs.tech/v1/trust/{address}
The tools your agent gets
We do for services what a touchstone does for gold — rub each candidate against Algorand's permanent record and read the truth off the trace. Instantly, with no paperwork and no one's word to take.
A drop-in MCP server — no migration, no marketplace to join. Your agent calls Touchstone's tools, gets back signed evidence it checks itself, and keeps its own signing key — Touchstone only proposes; the agent verifies and signs. The tools are in Connect.
We compute the trace off-chain, then hand the power to Algorand. The check rides inside the payment as one atomic group — so there's no seam, no instant where money moves but the check doesn't.
The trace isn't a vibe or a model nobody can see. It's five steps of arithmetic over an endpoint's public payment receipts — the same inputs anyone can pull from the chain. Run them yourself and you get the same number. That's the point.
Keep every real payment and payer, but scramble when each arrived. Each shuffle is a world where the same wallets paid by pure chance. Twenty thousand of them draw the cloud of what luck alone produces.
The trace is a distance, in standard deviations, from the innocent cloud's center. z = 0 is dead average for honest luck. z = +7 means the real pattern is seven sigma past anything the shuffles ever made — coordination, not coincidence.
A real crowd is a churn of different wallets. A wash ring is the same few addresses clustering over and over. So coincidences between recurring pairs count for more than one-off ones — the structure a faker can't shed.
Bursts hide at different speeds, so windows scale to each endpoint's own cadence — that's what lets the same detector run on a chain where payments span months, not milliseconds. Taking the worst of several windows would inflate the score, so the null is rebuilt as the max of the same shuffles. The bar moves up exactly as much as the extra looks would have cheated it.
One soft gate at z = 5: well below it trust runs high, well above it collapses toward zero. Then it's multiplied by (1 − provenance) — the second channel, how much of the funding traces back to one source. Either signal alone can sink the score; nothing has to agree with anything.
Same formula, no thumb on the scale. Pull either endpoint's USDC receipts from any public indexer, run steps 01–05, and you land on 89 and 47 yourself — the score is deterministic from public data, which is exactly why we don't mind showing the whole thing.
A faker can pay itself to look popular — that's wash trading. Counting payments can't catch it: a fake ring and a real hit both look busy. So we don't count. We ask: could innocent luck explain this timing? Shuffle the real history thousands of times, then measure how far the true pattern sits from that innocent cloud. That distance is the trace.
QuickPin's self-paying ring lands at +7.5 — that's 7.5 standard deviations past anything honest luck produces. Caught by timing. Atlas, a real service, sits at −0.8, comfortably inside the innocent range.
Catches bursts and coordination. But a patient faker can spread payments thin to look natural. MapRush did — timing alone scores it −2.3, a miss.
Follow the money backwards. If one wallet quietly seeded every "customer," it shows no matter how the timing is spread. MapRush's provenance: 0.77 — caught.
In a blind test on synthetic wash/honest traffic the detector scored 0% false alarms, 100% precision. Sub-floor and max-effort fakes are reported as not certified, never "caught" — a bounded, falsifiable claim, still to be validated on a real on-chain split.
Suppose something forced your agent to pay QuickPin — the base-metal sample — even though it fails the bar.
Because the trace-check rides inside the payment, Algorand refuses the whole transaction. It reverts on-chain — not a cent moves. The agent is protected even from its own mistake.
Verified on Algorand — in the live agent run, 5 agents: 3 settled, 2 protected (one reverted by the gate on-chain, one declined at discovery; a low-bar agent settled a wash by its own choice).